Skip to content
Open

re #2

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 86 additions & 0 deletions .github/workflows/cicd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
name: 🌱Farm System 4th Security-WEB deploy session🌱

on:
push:
branches: [ "main" ]


jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'

- name: Create application.yml for build
run: |
mkdir -p ./src/main/resources
echo "${{ secrets.APPLICATION }}" > ./src/main/resources/application.yml

- name: Cache Gradle packages
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
gradle-${{ runner.os }}-
- name: 권한
run: chmod +x ./gradlew

- name: Build with Gradle Wrapper (Skip Tests)
run: ./gradlew build -x test

- name: Docker build & push to Docker Hub
run: |
echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
docker build -t ${{ secrets.DOCKER_USERNAME }}/farm:latest .
docker push ${{ secrets.DOCKER_USERNAME }}/farm:latest
docker logout


- name: Deploy to EC2

uses: appleboy/ssh-action@master
with:
host: ${{ secrets.EC2_HOST }}
username: ubuntu
key: ${{ secrets.EC2_PRIVATE_KEY }}
script: |
set -e

echo "🛑 기존 컨테이너 중지 및 제거"
docker stop farm || true
docker rm farm || true

echo "📦 최신 이미지 pull"
docker pull ${{ secrets.DOCKER_USERNAME }}/farm:latest

echo "📂 yml 파일을 저장할 디렉토리 생성"
sudo mkdir -p /home/ubuntu/app/src/main/resources
sudo chown -R ubuntu:ubuntu /home/ubuntu/app
sudo chmod -R 755 /home/ubuntu/app

echo "📄 yml 파일 생성 및 GitHub Secrets 값 적용"
echo "${{ secrets.APPLICATION }}" | sudo tee /home/ubuntu/app/src/main/resources/application.yml > /dev/null
sudo chmod 644 /home/ubuntu/app/src/main/resources/application.yml

echo "🚀 새 컨테이너 실행 중..."
sudo docker run -d --log-driver=syslog --name farm -p 8080:8080 \
-v /home/ubuntu/app/src/main/resources:/app/src/main/resources \
--restart always \
${{ secrets.DOCKER_USERNAME }}/farm:latest

echo "🧹 사용하지 않는 Docker 이미지 정리"
docker image prune -f
15 changes: 15 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Dockerfile
FROM bellsoft/liberica-openjdk-alpine:17

# 시스템 시간대를 설정
ENV TZ=Asia/Seoul
RUN apk add --no-cache tzdata \
&& cp /usr/share/zoneinfo/${TZ} /etc/localtime \
&& echo "${TZ}" > /etc/timezone

# JAR 파일 복사
ARG JAR_FILE=build/libs/deploySession-0.0.1-SNAPSHOT.jar
COPY ${JAR_FILE} app.jar

# JVM 시간대 설정을 포함한 애플리케이션 실행
ENTRYPOINT ["java", "-Duser.timezone=Asia/Seoul", "-jar", "/app.jar"]
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ repositories {
}

dependencies {
// implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
// runtimeOnly 'com.mysql:mysql-connector-j'
runtimeOnly 'com.mysql:mysql-connector-j'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
Expand Down