Skip to content
Merged
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
163 changes: 71 additions & 92 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,102 +13,81 @@ jobs:
contents: read

steps:
# 코드 체크아웃
- uses: actions/checkout@v4

# Java와 Gradle 설정
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0

- name: Grant execute permission for gradlew
run: chmod +x gradlew

# 환경 변수 설정
- name: Set environment variables
run: |
echo "AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }}" >> $GITHUB_ENV
echo "AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }}" >> $GITHUB_ENV
echo "JWT_SECRET=${{ secrets.JWT_SECRET }}" >> $GITHUB_ENV
echo "KAKAO_CLIENT_ID=${{ secrets.KAKAO_CLIENT_ID }}" >> $GITHUB_ENV
echo "KAKAO_CLIENT_SECRET=${{ secrets.KAKAO_CLIENT_SECRET }}" >> $GITHUB_ENV
echo "MAIL_PASSWORD=${{ secrets.MAIL_PASSWORD }}" >> $GITHUB_ENV
echo "MAIL_USERNAME=${{ secrets.MAIL_USERNAME }}" >> $GITHUB_ENV
echo "PASSWORD=${{ secrets.PASSWORD }}" >> $GITHUB_ENV
echo "URL=${{ secrets.URL }}" >> $GITHUB_ENV
echo "OPEN_API_KEY=${{ secrets.OPEN_API_KEY }}" >> $GITHUB_ENV
echo "USERNAME=${{ secrets.USERNAME }}" >> $GITHUB_ENV

# Spring Boot 애플리케이션 빌드
- name: Build with Gradle Wrapper
run: ./gradlew build

- name: Docker image build
run: |
docker build \
--build-arg AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }} \
--build-arg AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }} \
--build-arg JWT_SECRET=${{ secrets.JWT_SECRET }} \
--build-arg KAKAO_CLIENT_ID=${{ secrets.KAKAO_CLIENT_ID }} \
--build-arg KAKAO_CLIENT_SECRET=${{ secrets.KAKAO_CLIENT_SECRET }} \
--build-arg MAIL_PASSWORD=${{ secrets.MAIL_PASSWORD }} \
--build-arg MAIL_USERNAME=${{ secrets.MAIL_USERNAME }} \
--build-arg PASSWORD=${{ secrets.PASSWORD }} \
--build-arg URL=${{ secrets.URL }} \
--build-arg OPEN_API_KEY=${{ secrets.OPEN_API_KEY }} \
--build-arg USERNAME=${{ secrets.USERNAME }} \
-t ${{ secrets.DOCKERHUB_USERNAME }}/stackpot-be-spring \
-f ./Dockerfile .


# DockerHub 로그인
- name: Docker login
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}

# Docker 이미지 푸시
- name: Docker image push
run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/stackpot-be-spring
# 코드 체크아웃
- uses: actions/checkout@v4

# Java와 Gradle 설정
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0

- name: Grant execute permission for gradlew
run: chmod +x gradlew

# 환경 변수 설정
- name: Set environment variables
run: |
echo "AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }}" >> $GITHUB_ENV
echo "AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }}" >> $GITHUB_ENV
echo "JWT_SECRET=${{ secrets.JWT_SECRET }}" >> $GITHUB_ENV
echo "KAKAO_CLIENT_ID=${{ secrets.KAKAO_CLIENT_ID }}" >> $GITHUB_ENV
echo "KAKAO_CLIENT_SECRET=${{ secrets.KAKAO_CLIENT_SECRET }}" >> $GITHUB_ENV
echo "mail.password=${{ secrets.MAIL_PASSWORD }}" >> $GITHUB_ENV
echo "mail.username=${{ secrets.MAIL_USERNAME }}" >> $GITHUB_ENV
echo "PASSWORD=${{ secrets.PASSWORD }}" >> $GITHUB_ENV
echo "URL=${{ secrets.URL }}" >> $GITHUB_ENV
echo "OPEN_API_KEY=${{ secrets.OPEN_API_KEY }}" >> $GITHUB_ENV
echo "USERNAME=${{ secrets.USERNAME }}" >> $GITHUB_ENV
# Spring Boot 어플리케이션 빌드
- name: Build with Gradle Wrapper
run: ./gradlew build

# Docker 이미지 빌드
- name: Docker image build
run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/stackpot-be-spring .

# DockerHub 로그인
- name: Docker login
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}

# Docker 이미지 푸시
- name: Docker image push
run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/stackpot-be-spring

deploy:
needs: build-docker-image
runs-on: self-hosted

steps:
# Docker 네트워크 생성
- name: Create Docker network
run: docker network create stackpot-network || true

# Spring 컨테이너 실행
- name: Run Spring container
run: |
docker stop spring || true
docker rm spring || true
docker run -d --name spring --network stackpot-network \
-p 8080:8080 \
${{ secrets.DOCKERHUB_USERNAME }}/stackpot-be-spring

# Nginx 컨테이너 실행
- name: Run Nginx container
run: |
docker stop nginx || true
docker rm nginx || true
docker run -d \
--name nginx --network stackpot-network \
-p 80:80 -p 443:443 \
-v /home/ubuntu/STACKPOT-BE/certbot/conf:/etc/letsencrypt \
-v /home/ubuntu/STACKPOT-BE/certbot/www:/var/www/certbot \
-v /home/ubuntu/STACKPOT-BE/nginx/conf.d:/etc/nginx/conf.d \
nginx:1.15-alpine

# Docker 이미지 및 컨테이너 정리
- name: Clean up Docker system
run: docker system prune -f
# Spring 컨테이너 실행
- name: Run Spring container
run: |
docker stop spring || true
docker rm spring || true
docker run -d --name spring --network stackpot-network \
-p 8080:8080 \
${{ secrets.DOCKERHUB_USERNAME }}/stackpot-be-spring
# Nginx 컨테이너 실행
- name: Run Nginx container
run: |
docker stop nginx || true
docker rm nginx || true
docker run -d \
--name nginx --network stackpot-network \
-p 80:80 -p 443:443 \
-v /home/ubuntu/STACKPOT-BE/certbot/conf:/etc/letsencrypt \
-v /home/ubuntu/STACKPOT-BE/certbot/www:/var/www/certbot \
-v /home/ubuntu/STACKPOT-BE/nginx/conf.d:/etc/nginx/conf.d \
nginx:1.15-alpine
# Docker 이미지 및 컨테이너 정리
- name: Clean up Docker system
run: docker system prune -f

Loading