Merge branch 'main' of github.com:SSUketing/app-backend #112
This file contains hidden or 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: Build and Push Image to ECR | |
| # 트리거 조건 | |
| on: | |
| push: | |
| branches: [ "main" ] # main 브랜치 기준 자동 배포 | |
| paths: ["app-backend/**"] # app-backend 하위 경로의 변동을 감지 | |
| # 전역 변수 설정 | |
| env: | |
| AWS_REGION: "ap-northeast-2" # AWS REGION | |
| ECR_REPOSITORY: "ssuketing/app-backend" # ECR | |
| # 권한 설정 | |
| permissions: | |
| id-token: write # OIDC 방식의 AWS 로그인 | |
| contents: write | |
| # 할 일 정의 | |
| jobs: | |
| deploy: | |
| name: Deploy | |
| runs-on: ubuntu-latest # VM? | |
| environment: production # GitHub Actions 환경 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 # 현재 저장소 코드 가져오기 | |
| - name: Configure AWS credentials # AWS 자격 증명 구성 | |
| uses: aws-actions/configure-aws-credentials@v3 | |
| with: | |
| role-to-assume: ${{ secrets.ARN_ECR_PUSH_ROLE }} | |
| role-session-name: ecrPrivatePushRole | |
| aws-region: ${{ env.AWS_REGION }} | |
| audience: sts.amazonaws.com | |
| - name: Login to Amazon ECR # ECR 로그인 | |
| id: login-ecr | |
| uses: aws-actions/amazon-ecr-login@v2 | |
| - name: Push image to Amazon ECR (api-server) # Docker 임지 빌드 및 푸시 | |
| id: build-image | |
| env: | |
| ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} | |
| IMAGE_TAG: latest | |
| run: | | |
| # Build a docker container and | |
| # push it to ECR so that it can | |
| # be deployed to ECS. | |
| cd app-backend | |
| docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG . | |
| docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG | |
| echo "image=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" >> $GITHUB_OUTPUT | |
| - name: Update Helm Chart Version | |
| run: | | |
| cd app-backend | |
| # 파일 이름 지정 | |
| FILE="Chart.yaml" | |
| # 변경된 버전을 저장 | |
| NEW_VERSION=$(sed -i '18s/\(version: 0.0.\)\([0-9]\+\)/echo "\1$((\2 + 1))"/ge' "$FILE" && grep -oP '(?<=version: )0\.0\.[0-9]+' "$FILE") | |
| git config --global user.email "pooreumjung02@naver.com" | |
| git config --global user.name "pooreumjung" | |
| git add . | |
| git commit -m "chore(api-server): bump version to $NEW_VERSION" | |
| git push | |
| - name: Create .env on EC2 | |
| uses: appleboy/ssh-action@v1.0.3 | |
| with: | |
| host: ${{ secrets.EC2_HOST }} | |
| username: ubuntu | |
| key: ${{ secrets.EC2_KEY }} | |
| script: | | |
| echo "${{ secrets.SSUKETING_ENV }}" > ~/app-backend/app-backend/.env | |
| - name: Deploy to EC2 via SSH | |
| uses: appleboy/ssh-action@v0.1.10 | |
| with: | |
| host: ${{ secrets.EC2_HOST }} | |
| username: ${{ secrets.EC2_USER }} | |
| key: ${{ secrets.EC2_KEY }} | |
| script: | | |
| cd ~/app-backend/app-backend | |
| git pull origin main | |
| docker-compose down | |
| docker-compose up --build -d | |