1- name : Release CI/CD
1+ name : Release
22
33on :
44 push :
@@ -12,79 +12,110 @@ env:
1212 DOTNET_VERSION : ' 8.0.x'
1313 DOCKER_IMAGE_NAME : ghcr.io/projectvg/projectvgapi
1414 ACTOR : projectvg
15+
16+ permissions :
17+ contents : read
18+ packages : write
1519
1620jobs :
1721 build :
22+ name : Build & Push
1823 runs-on : ubuntu-latest
1924
2025 steps :
21- - name : Checkout Repository
26+ - name : Checkout
2227 uses : actions/checkout@v4
2328
2429 - name : Setup .NET
2530 uses : actions/setup-dotnet@v4
2631 with :
2732 dotnet-version : ${{ env.DOTNET_VERSION }}
2833
29- - name : Cache NuGet packages
34+ - name : Cache NuGet
3035 uses : actions/cache@v4
3136 with :
3237 path : ~/.nuget/packages
3338 key : ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
3439 restore-keys : |
3540 ${{ runner.os }}-nuget-
3641
37- - name : 종속성 복원
42+ - name : Restore
3843 run : |
3944 echo "복원 중..."
4045 dotnet restore ProjectVG.sln
4146 echo "복원 완료"
4247
43- - name : 솔루션 빌드
48+ - name : Build
4449 run : |
4550 echo "🔨 빌드 중..."
4651 dotnet build ProjectVG.sln --no-restore --configuration Release
4752 echo "빌드 완료"
4853
49- - name : 단위 테스트 실행
54+ - name : Test
5055 run : |
5156 echo "테스트 중..."
5257 dotnet test --no-build --configuration Release --verbosity normal --collect:"XPlat Code Coverage" --logger trx --results-directory coverage
5358 echo "테스트 완료"
5459
55- - name : Login to GitHub Container Registry
60+ - name : Login GHCR
5661 uses : docker/login-action@v3
5762 with :
5863 registry : ghcr.io
5964 username : ${{ env.ACTOR }}
6065 password : ${{ secrets.GHCR_TOKEN }}
6166
62- - name : Build and Push Docker Image
67+ - name : Build & Push Image
6368 run : |
6469 docker build -t ${{ env.DOCKER_IMAGE_NAME }}:latest -f ProjectVG.Api/Dockerfile .
6570 docker push ${{ env.DOCKER_IMAGE_NAME }}:latest
71+
72+ - name : Build Success Status
73+ if : success()
74+ run : |
75+ echo "✅ 빌드 및 이미지 푸시 완료"
76+ echo "이미지: ${{ env.DOCKER_IMAGE_NAME }}:latest"
77+
78+ - name : Build Failure Status
79+ if : failure()
80+ run : |
81+ echo "❌ 빌드 또는 이미지 푸시 실패"
82+ exit 1
6683
6784 deploy :
85+ name : Deploy
6886 needs : build
6987 runs-on : [self-hosted, deploy-runner]
7088
7189 steps :
72- - name : Login to GitHub Container Registry
90+ - name : Checkout
91+ uses : actions/checkout@v4
92+
93+ - name : Login GHCR
7394 run : echo "${{ secrets.GHCR_TOKEN }}" | docker login ghcr.io -u ${{ env.ACTOR }} --password-stdin
7495
75- - name : Add Private Files
96+ - name : Add Config Files
7697 run : |
7798 echo "${{ secrets.PROD_APPLICATION_ENV }}" | base64 --decode > .env
78- echo "${{ secrets.PROD_DOCKER_COMPOSE }}" | base64 --decode > docker-compose.yml
99+ echo "${{ secrets.PROD_DOCKER_COMPOSE }}" | base64 --decode > deploy/docker-compose.yml
100+
101+ - name : Make Script Executable
102+ run : chmod +x deploy/deploy.sh
79103
80- - name : Run Deployment Script
81- run : ./deploy.sh
104+ - name : Deploy
105+ run : ./deploy/deploy .sh
82106
83- - name : Cleanup Docker and Cache
107+ - name : Cleanup
84108 run : |
85109 docker system prune -af --volumes
86110
87- - name : Deployment Status
111+ - name : Deploy Success Status
112+ if : success()
113+ run : |
114+ echo "✅ 배포 완료"
115+ echo "이미지: ${{ env.DOCKER_IMAGE_NAME }}:latest"
116+
117+ - name : Deploy Failure Status
118+ if : failure()
88119 run : |
89- echo "🚀 배포 완료 "
90- echo "📦 이미지: ${{ env.DOCKER_IMAGE_NAME }}:latest"
120+ echo "❌ 배포 실패 "
121+ exit 1
0 commit comments