-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
88 additions
and
79 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,91 +1,100 @@ | ||
|
||
name: Production 배포 | ||
runs-on: ubuntu-latest | ||
on: | ||
push: | ||
branches: | ||
- main | ||
env: | ||
DOCKERHUB_USERNAME: meonghanyang | ||
DOCKERHUB_IMAGE_NAME: server | ||
|
||
jobs: | ||
build-deploy: | ||
name: Production 배포 | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: 기본 체크아웃 | ||
uses: actions/checkout@v3 | ||
steps: | ||
- name: 기본 체크아웃 | ||
uses: actions/checkout@v3 | ||
|
||
- name: JDK 21 버전 설정 | ||
uses: actions/setup-java@v3 | ||
with: | ||
distribution: 'corretto' | ||
java-version: '21' | ||
- name: JDK 21 버전 설정 | ||
uses: actions/setup-java@v3 | ||
with: | ||
distribution: 'corretto' | ||
java-version: '21' | ||
|
||
- name: Gradlew 실행 권한 설정 | ||
run: chmod +x ./gradlew | ||
- name: Gradlew 실행 권한 설정 | ||
run: chmod +x ./gradlew | ||
|
||
- name: Gradle 빌드 | ||
id: gradle | ||
uses: gradle/gradle-build-action@v2 | ||
with: | ||
arguments: | | ||
build | ||
--scan | ||
-x test | ||
cache-read-only: ${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/develop' }} | ||
- name: Gradle 빌드 | ||
id: gradle | ||
uses: gradle/gradle-build-action@v2 | ||
with: | ||
arguments: | | ||
build | ||
--scan | ||
-x test | ||
cache-read-only: ${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/develop' }} | ||
|
||
- name: Dockerhub 로그인 | ||
uses: docker/login-action@v3 | ||
with: | ||
username: ${{ env.DOCKERHUB_USERNAME }} | ||
password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN }} | ||
- name: Dockerhub 로그인 | ||
uses: docker/login-action@v3 | ||
with: | ||
username: ${{ env.DOCKERHUB_USERNAME }} | ||
password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN }} | ||
|
||
- name: Docker 메타데이터 추출 | ||
id: metadata | ||
uses: docker/[email protected] | ||
env: | ||
DOCKERHUB_IMAGE_FULL_NAME: ${{ env.DOCKERHUB_USERNAME }}/${{ env.DOCKERHUB_IMAGE_NAME }} | ||
with: | ||
images: ${{ env.DOCKERHUB_IMAGE_FULL_NAME }} | ||
tags: | ||
${{ github.run_number }} | ||
flavor: | | ||
latest=false | ||
- name: Docker 메타데이터 추출 | ||
id: metadata | ||
uses: docker/[email protected] | ||
env: | ||
DOCKERHUB_IMAGE_FULL_NAME: ${{ env.DOCKERHUB_USERNAME }}/${{ env.DOCKERHUB_IMAGE_NAME }} | ||
with: | ||
images: ${{ env.DOCKERHUB_IMAGE_FULL_NAME }} | ||
tags: | ||
${{ github.run_number }} | ||
flavor: | | ||
latest=false | ||
- name: Docker 이미지 빌드 및 도커허브로 푸시 | ||
uses: docker/[email protected] | ||
with: | ||
file: scripts/Dockerfile | ||
context: . | ||
push: true | ||
tags: ${{ steps.metadata.outputs.tags }} | ||
- name: Docker 이미지 빌드 및 도커허브로 푸시 | ||
uses: docker/[email protected] | ||
with: | ||
file: scripts/Dockerfile | ||
context: . | ||
push: true | ||
tags: ${{ steps.metadata.outputs.tags }} | ||
|
||
- name: 환경변수 주입 | ||
run: | | ||
echo "${{ secrets.APPLICATION_SECRETS }}" > .env | ||
- name: 환경변수 주입 | ||
run: | | ||
echo "${{ secrets.APPLICATION_SECRETS }}" > .env | ||
- name: 서버로 .env 파일 전송 | ||
uses: burnett01/[email protected] | ||
with: | ||
switches: -avzr --delete | ||
remote_host: ${{ secrets.EC2_HOST }} | ||
remote_user: ${{ secrets.EC2_USERNAME }} | ||
remote_key: ${{ secrets.EC2_PRIVATE_KEY }} | ||
path: .env | ||
remote_path: /home/${{ secrets.EC2_USERNAME }}/ | ||
- name: 서버로 .env 파일 전송 | ||
uses: burnett01/[email protected] | ||
with: | ||
switches: -avzr --delete | ||
remote_host: ${{ secrets.EC2_HOST }} | ||
remote_user: ${{ secrets.EC2_USERNAME }} | ||
remote_key: ${{ secrets.EC2_PRIVATE_KEY }} | ||
path: .env | ||
remote_path: /home/${{ secrets.EC2_USERNAME }}/ | ||
|
||
- name: 서버로 docker compose 파일 전송 | ||
uses: burnett01/[email protected] | ||
with: | ||
switches: -avzr --delete | ||
remote_host: ${{ secrets.EC2_HOST }} | ||
remote_user: ${{ secrets.EC2_USERNAME }} | ||
remote_key: ${{ secrets.EC2_PRIVATE_KEY }} | ||
path: scripts/docker-compose.yml | ||
remote_path: /home/${{ secrets.EC2_USERNAME }}/ | ||
- name: 서버로 docker compose 파일 전송 | ||
uses: burnett01/[email protected] | ||
with: | ||
switches: -avzr --delete | ||
remote_host: ${{ secrets.EC2_HOST }} | ||
remote_user: ${{ secrets.EC2_USERNAME }} | ||
remote_key: ${{ secrets.EC2_PRIVATE_KEY }} | ||
path: scripts/docker-compose.yml | ||
remote_path: /home/${{ secrets.EC2_USERNAME }}/ | ||
|
||
- name: EC2로 배포 | ||
uses: appleboy/ssh-action@master | ||
env: | ||
IMAGE_FULL_URL: ${{ steps.metadata.outputs.tags }} | ||
with: | ||
host: ${{ secrets.EC2_HOST }} | ||
username: ${{ secrets.EC2_USERNAME }} | ||
key: ${{ secrets.EC2_PRIVATE_KEY }} | ||
envs: IMAGE_FULL_URL, DOCKERHUB_IMAGE_NAME | ||
script: | | ||
echo "${{ secrets.DOCKERHUB_ACCESS_TOKEN }}" | docker login -u "${{ env.DOCKERHUB_USERNAME }}" --password-stdin | ||
docker compose down --remove-orphans | ||
docker system prune -f | ||
docker compose up --build -d | ||
- name: EC2로 배포 | ||
uses: appleboy/ssh-action@master | ||
env: | ||
IMAGE_FULL_URL: ${{ steps.metadata.outputs.tags }} | ||
with: | ||
host: ${{ secrets.EC2_HOST }} | ||
username: ${{ secrets.EC2_USERNAME }} | ||
key: ${{ secrets.EC2_PRIVATE_KEY }} | ||
envs: IMAGE_FULL_URL, DOCKERHUB_IMAGE_NAME | ||
script: | | ||
echo "${{ secrets.DOCKERHUB_ACCESS_TOKEN }}" | docker login -u "${{ env.DOCKERHUB_USERNAME }}" --password-stdin | ||
docker compose down --remove-orphans | ||
docker compose up --build -d |