fix: 에러 로직 수정 #29
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
name: CD | |
on: | |
push: | |
branches: [ dev ] | |
concurrency: | |
group: ${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
Build: | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
packages: write | |
actions: write | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Set up JDK 17 | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'temurin' | |
- name: Grant execute permission for gradlew | |
run: chmod +x gradlew | |
- name: Setup Gradle | |
uses: gradle/actions/setup-gradle@v4 | |
- name: Build with Gradle | |
run: ./gradlew clean build -x test | |
# AWS ECR 에 이미지 업로드 권한을 얻기 위해 인증 | |
- name: Configure AWS credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
- name: Login to Amazon ECR | |
id: login-ecr | |
uses: aws-actions/amazon-ecr-login@v1 | |
- name: Build, Tag and Push docker image to AWS ECR | |
run: | | |
docker compose build | |
chmod +x ./dockerTagAndPush.sh | |
./dockerTagAndPush.sh | |
env: | |
ECR_NAMESPACE: ${{ vars.ECR_NAMESPACE }} | |
ECR_REGISTRY: ${{ secrets.ECR_REGISTRY }} | |
Deploy: | |
name: Deploy | |
needs: Build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
# docker compose로 container를 실행하기 위해 docker-compose.yml 을 EC2로 복사 | |
- name: Copy Docker compose file to EC2 | |
uses: appleboy/scp-action@v0.1.7 | |
with: | |
host: ${{ secrets.EC2_HOST }} | |
username: ubuntu | |
key: ${{ secrets.EC2_KEY }} | |
source: "docker-compose.yml" | |
target: "/home/ubuntu" | |
# 사용 중인 포트를 점검하고 종료하는 script를 EC2로 복사 | |
- name: Upload stop-used-port script to EC2 | |
uses: appleboy/scp-action@master | |
with: | |
host: ${{ secrets.EC2_HOST }} | |
username: ubuntu | |
key: ${{ secrets.EC2_KEY }} | |
source: "stop-used-port.sh" | |
target: "/home/ubuntu" | |
# ssh를 통해 EC2에 접속하고 docker container를 재시작 | |
- name: Deploy to EC2 | |
uses: appleboy/ssh-action@v1.0.3 | |
env: | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
AWS_REGION: ${{ secrets.AWS_REGION }} | |
ECR_NAMESPACE: ${{ vars.ECR_NAMESPACE }} | |
ECR_REGISTRY: ${{ secrets.ECR_REGISTRY }} | |
with: | |
host: ${{ secrets.EC2_HOST }} | |
username: ubuntu | |
key: ${{ secrets.EC2_KEY }} | |
script: | | |
aws ecr get-login-password --region ${{ secrets.AWS_REGION }} | docker login --username AWS --password-stdin ${{ secrets.ECR_REGISTRY }} | |
docker compose down | |
docker container prune -f | |
docker rmi $(docker images "${{ secrets.ECR_REGISTRY }}/${{ vars.ECR_NAMESPACE }}/*" -q) | |
sudo chmod +x /home/ubuntu/stop-used-port.sh && /home/ubuntu/stop-used-port.sh | |
docker compose pull --quiet | |
docker compose up -d --no-build |