1+ name : Build and Push Backend Image to ACR
2+
3+ # 워크플로우 트리거 설정
4+ on :
5+ push :
6+ branches : [ dev-test ] # TODO(Godeok Kim): dev 브랜치에 push될 때만 실행하는 것으로 했으나 이후 테스트와 메인을 분리하는 작업이 필요
7+ workflow_dispatch : {} # GitHub Actions 탭에서 수동으로 실행 가능
8+
9+ jobs :
10+ build-and-push :
11+ runs-on : ubuntu-latest # 실행 환경 지정
12+ steps :
13+ # 1. 소스 코드 체크아웃
14+ - name : Checkout repository
15+ uses : actions/checkout@v4
16+
17+ # 2. Azure 로그인 (Service Principal 사용)
18+ - name : Log in to Azure
19+ uses : azure/login@v1
20+ with :
21+ creds : ${{ secrets.AZURE_CREDENTIALS }}
22+
23+ # 3. ACR 로그인 (Azure 자격 증명 사용)
24+ - name : Log in to ACR
25+ uses : azure/docker-login@v1
26+ with :
27+ login-server : ${{ secrets.ACR_LOGIN_SERVER }}
28+ username : ${{ secrets.ACR_USERNAME }}
29+ password : ${{ secrets.ACR_PASSWORD }}
30+
31+ # 4. Docker 이미지 메타데이터 추출 (태그 생성 등)
32+ - name : Extract metadata (tags, labels) for Docker
33+ id : meta # 이 step의 출력을 참조하기 위한 ID
34+ uses : docker/metadata-action@v5
35+ with :
36+ images : ${{ secrets.ACR_LOGIN_SERVER }}/${{ secrets.ACR_REPOSITORY_NAME_TEST }}
37+ # 예시 태그: main 브랜치면 latest, 그 외에는 브랜치명, 그리고 항상 Git SHA 태그 추가
38+ tags : |
39+ type=ref,event=branch
40+ type=ref,event=pr
41+ type=sha
42+ type=raw,value=latest,enable={{is_default_branch}}
43+
44+ # 5. Docker 이미지 빌드 및 ACR에 푸시
45+ - name : Build and push Docker image
46+ uses : docker/build-push-action@v5
47+ with :
48+ context : . # Dockerfile이 있는 경로
49+ file : ./Dockerfile # Dockerfile 경로 명시 (기본값)
50+ push : true # 빌드 후 푸시 실행
51+ tags : ${{ steps.meta.outputs.tags }} # 위 metadata step에서 생성된 태그 사용
52+ labels : ${{ steps.meta.outputs.labels }} # 위 metadata step에서 생성된 라벨 사용
53+
54+ # 6. ACR에 푸시된 이미지 확인
55+ - name : Verify pushed image
56+ run : |
57+ echo "Pushed image tags:"
58+ echo "${{ steps.meta.outputs.tags }}"
59+ echo "Checking image in ACR..."
60+ az acr repository show-tags --name $(echo ${{ secrets.ACR_LOGIN_SERVER }} | cut -d'.' -f1) --repository ${{ secrets.ACR_REPOSITORY_NAME }} --output table
0 commit comments