Skip to content

Merge pull request #282 from IoTeaTime/develop #98

Merge pull request #282 from IoTeaTime/develop

Merge pull request #282 from IoTeaTime/develop #98

Workflow file for this run

name: Production 배포
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
- name: JDK 21 버전 설정
uses: actions/setup-java@v3
with:
distribution: 'corretto'
java-version: '21'
- 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: 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 이미지 빌드 및 도커허브로 푸시
uses: docker/[email protected]
with:
file: scripts/Dockerfile
context: .
push: true
tags: ${{ steps.metadata.outputs.tags }}
- 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: 서버로 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 compose up --build -d