Skip to content

Merge branch 'main' of github.com:SSUketing/app-backend #112

Merge branch 'main' of github.com:SSUketing/app-backend

Merge branch 'main' of github.com:SSUketing/app-backend #112

# 워크플로우 이름
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