-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #6 from Tave-13th-Project-Team-4-Fiurinee/feature/…
…ci-cd fix: deploy.yml DB환경 변수
- Loading branch information
Showing
1 changed file
with
35 additions
and
28 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,70 +1,77 @@ | ||
name: Java CI/CD with Gradle | ||
|
||
# 동작 조건 설정: dev 브랜치에 push 또는 pull request가 발생할 경우 동작한다. | ||
# 워크플로우가 실행될 조건을 정의합니다. | ||
on: | ||
push: | ||
branches: [ "dev" ] | ||
branches: [ "dev" ] # dev 브랜치에 push가 발생하면 실행됩니다. | ||
pull_request: | ||
branches: [ "dev" ] | ||
branches: [ "dev" ] # dev 브랜치에 pull request가 생성되면 실행됩니다. | ||
|
||
# 워크플로우가 접근할 수 있는 권한을 설정합니다. | ||
permissions: | ||
contents: read | ||
|
||
jobs: | ||
# 1. Spring Boot 애플리케이션을 빌드하고 도커허브에 푸시하는 과정 | ||
# Docker 이미지를 빌드하고 Docker Hub에 푸시하는 작업을 정의합니다. | ||
build-docker-image: | ||
runs-on: ubuntu-latest | ||
runs-on: ubuntu-latest # 워크플로우가 실행될 환경을 지정합니다. | ||
steps: | ||
# GitHub 리포지토리에서 코드를 체크아웃한다. | ||
# 리포지토리의 코드를 체크아웃합니다. | ||
- uses: actions/checkout@v3 | ||
|
||
# Java 17을 설치하고 환경을 설정한다. | ||
# JDK 17을 설치하고 환경을 설정합니다. | ||
- name: Set up JDK 17 | ||
uses: actions/setup-java@v3 | ||
with: | ||
java-version: '17' | ||
distribution: 'temurin' | ||
|
||
# Gradle Wrapper 파일에 실행 권한을 부여한다. | ||
# Gradle Wrapper 파일에 실행 권한을 부여합니다. | ||
- name: Grant Execute Permission For Gradlew | ||
run: chmod +x gradlew | ||
|
||
# Spring Boot 애플리케이션을 빌드한다. | ||
# Gradle을 사용하여 프로젝트를 빌드합니다. | ||
- name: Build With Gradle | ||
run: ./gradlew build -x test # 일단 테스트 건너뛰기 | ||
run: ./gradlew build -x test | ||
|
||
# Docker 이미지를 빌드한다. | ||
# Docker 이미지를 빌드합니다. | ||
- name: docker image build | ||
run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/fiurinee_docker . | ||
run: docker build -t qormoon/fiurinee_docker . | ||
|
||
# DockerHub에 로그인한다. 로그인 정보는 GitHub Secrets를 통해 안전하게 관리한다. | ||
# Docker Hub에 로그인합니다. 로그인 정보는 GitHub Secrets를 통해 안전하게 관리됩니다. | ||
- name: docker login | ||
uses: docker/login-action@v2 | ||
with: | ||
username: ${{ secrets.DOCKERHUB_USERNAME }} | ||
password: ${{ secrets.DOCKERHUB_PASSWORD }} | ||
username: ${{ secrets.DOCKERHUB_USERNAME }} # Docker Hub 사용자 이름 | ||
password: ${{ secrets.DOCKERHUB_PASSWORD }} # Docker Hub 비밀번호 | ||
|
||
# Docker 이미지를 Docker Hub에 푸시한다. | ||
# 빌드된 Docker 이미지를 Docker Hub에 푸시합니다. | ||
- name: docker Hub push | ||
run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/fiurinee_docker | ||
run: docker push qormoon/fiurinee_docker | ||
|
||
# 2. 새로운 Docker 이미지를 서버에 배포하는 과정 | ||
# 새로 빌드된 Docker 이미지를 EC2 서버에 배포하는 작업을 정의합니다. | ||
deploy: | ||
# build-docker-image 작업이 완료된 후에 실행된다. | ||
needs: build-docker-image | ||
runs-on: ubuntu-latest | ||
needs: build-docker-image # build-docker-image 작업이 완료된 후에 실행됩니다. | ||
runs-on: ubuntu-latest # 워크플로우가 실행될 환경을 지정합니다. | ||
|
||
steps: | ||
# 서버에 SSH로 접속하여 Docker 이미지를 pull하고 컨테이너를 재시작한다. | ||
# EC2 서버에 SSH로 접속하여 Docker 이미지를 pull하고 컨테이너를 재시작합니다. | ||
- name: Deploy to EC2 | ||
uses: appleboy/ssh-action@master | ||
with: | ||
host: ${{ secrets.EC2_HOST }} # 서버의 호스트 주소 (예: 3.36.169.209) | ||
username: ubuntu # 서버의 사용자 이름 | ||
key: ${{ secrets.EC2_SSH_KEY }} # 서버에 접근하기 위한 SSH 키 | ||
host: ${{ secrets.EC2_HOST }} # EC2 서버의 호스트 주소 | ||
username: ubuntu # EC2 서버의 사용자 이름 | ||
key: ${{ secrets.EC2_SSH_KEY }} # EC2 서버에 접근하기 위한 SSH 개인 키 | ||
script: | | ||
sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/fiurinee_docker | ||
# Docker Hub에서 최신 이미지를 pull 합니다. | ||
sudo docker pull qormoon/fiurinee_docker | ||
# 기존 컨테이너를 중지합니다. | ||
sudo docker stop fiurinee || true | ||
# 기존 컨테이너를 제거합니다. | ||
sudo docker rm fiurinee || true | ||
sudo docker run -d -p 3000:8080 --name fiurinee ${{ secrets.DOCKERHUB_USERNAME }}/docker_test | ||
# 새 컨테이너를 실행하면서 환경 변수를 전달합니다. | ||
sudo docker run -d -p 3000:8080 --name fiurinee \ | ||
-e DB_URL=jdbc:postgresql://database-fiurinee.czyqweykwib4.ap-northeast-2.rds.amazonaws.com:5432/fiurinee \ | ||
-e DB_USERNAME=${{ secrets.DB_USERNAME }} \ | ||
-e DB_PASSWORD=${{ secrets.DB_PASSWORD }} \ | ||
qormoon/fiurinee_docker |