@@ -2,15 +2,28 @@ name: Deploy (self-hosted)
22
33on :
44 push :
5- branches : ['**']
5+ branches :
6+ - ' main'
7+ - ' deploy/cert-develop'
8+ paths :
9+ - ' cert/**'
610 workflow_dispatch :
711
12+ # 같은 브랜치 동시 실행 시 이전 잡 취소(경쟁 배포 방지)
13+ concurrency :
14+ group : cert-${{ github.ref }}
15+ cancel-in-progress : true
16+
817jobs :
918 deploy :
1019 runs-on : oracle
1120 defaults :
1221 run :
1322 working-directory : ./cert
23+ env :
24+ # 공용(운영/개발 공통) - 중복 제거
25+ SMTP_HOST : ${{ vars.SMTP_HOST }}
26+ SMTP_PORT : ${{ vars.SMTP_PORT }}
1427
1528 steps :
1629 - uses : actions/checkout@v4
@@ -19,56 +32,54 @@ jobs:
1932 - name : Build & up (main)
2033 if : github.ref == 'refs/heads/main'
2134 env :
22- # --- Frontend build arg / 공용 ENV ---
35+ ENV_MODE : production
36+
37+ # --- Frontend build arg / 운영 ---
2338 FRONTEND_EXTERNAL_API_URL : ${{ vars.FRONTEND_EXTERNAL_API_URL }}
2439 FRONTEND_PORT : ${{ vars.FRONTEND_PORT }}
2540 BACKEND_PORT : ${{ vars.BACKEND_PORT }}
2641
27- # --- Backend runtime ENV (공용) ---
42+ # --- Backend runtime / 운영 ---
2843 CORS_ORIGINS : ${{ vars.CORS_ORIGINS }}
29- SMTP_HOST : ${{ vars.SMTP_HOST }}
30- SMTP_PORT : ${{ vars.SMTP_PORT }}
3144 SMTP_USERNAME : ${{ vars.SMTP_USERNAME }}
3245
33- # --- Notion / Secrets (공용) ---
46+ # --- Notion, Secrets / 운영 ---
3447 NOTION_API_KEY : ${{ secrets.NOTION_API_KEY }}
3548 NOTION_CERT_DB_ID : ${{ secrets.NOTION_CERT_DB_ID }}
3649 NOTION_PROJ_DB_ID : ${{ secrets.NOTION_PROJ_DB_ID }}
3750 SMTP_PASSWORD : ${{ secrets.SMTP_PASSWORD }}
38-
39- ENV_MODE : production
4051 run : |
52+ set -euxo pipefail
4153 echo "ENV_MODE=$ENV_MODE"
42- docker compose config -q
43- docker compose down --remove-orphans
44- docker compose up -d --build --remove-orphans
45- docker image prune -f
54+ docker compose -p cert-main config -q
55+ docker compose -p cert-main down --remove-orphans
56+ docker compose -p cert-main up -d --build --remove-orphans
57+ docker image prune -f --filter "label=org.pseudolab.project=cert"
4658
47- # === 비-main (테스트 배포 ) ===
48- - name : Build & up (non-main )
49- if : github.ref != 'refs/heads/main '
59+ # === 개발 배포 (deploy/cert-develop ) ===
60+ - name : Build & up (develop )
61+ if : github.ref == 'refs/heads/deploy/cert-develop '
5062 env :
51- # --- Frontend build arg / 공용 ENV ---
52- FRONTEND_EXTERNAL_API_URL : ${{ vars.FRONTEND_EXTERNAL_API_URL }}
53- FRONTEND_PORT : ${{ vars.FRONTEND_PORT }}
54- BACKEND_PORT : ${{ vars.BACKEND_PORT }}
63+ ENV_MODE : development
5564
56- # --- Backend runtime ENV (공용 + 테스트 전용) ---
57- CORS_ORIGINS : ${{ vars.CORS_ORIGINS }}
58- SMTP_HOST : ${{ vars.SMTP_HOST }}
59- SMTP_PORT : ${{ vars.SMTP_PORT }}
60- SMTP_USERNAME : ${{ vars.TEST_SMTP_USERNAME }}
65+ # --- Frontend build arg / 개발 ---
66+ FRONTEND_EXTERNAL_API_URL : ${{ vars.DEV_FRONTEND_EXTERNAL_API_URL }}
67+ FRONTEND_PORT : ${{ vars.DEV_FRONTEND_PORT }}
68+ BACKEND_PORT : ${{ vars.DEV_BACKEND_PORT }}
6169
62- # --- Notion / Secrets (테스트 전용) ---
63- NOTION_API_KEY : ${{ secrets.TEST_NOTION_API_KEY }}
64- NOTION_CERT_DB_ID : ${{ secrets.TEST_NOTION_CERT_DB_ID }}
65- NOTION_PROJ_DB_ID : ${{ secrets.TEST_NOTION_PROJ_DB_ID }}
66- SMTP_PASSWORD : ${{ secrets.TEST_SMTP_PASSWORD }}
70+ # --- Backend runtime / 개발 ---
71+ CORS_ORIGINS : ${{ vars.DEV_CORS_ORIGINS }}
72+ SMTP_USERNAME : ${{ vars.DEV_SMTP_USERNAME }}
6773
68- ENV_MODE : test
74+ # --- Notion, Secrets / 개발 ---
75+ NOTION_API_KEY : ${{ secrets.DEV_NOTION_API_KEY }}
76+ NOTION_CERT_DB_ID : ${{ secrets.DEV_NOTION_CERT_DB_ID }}
77+ NOTION_PROJ_DB_ID : ${{ secrets.DEV_NOTION_PROJ_DB_ID }}
78+ SMTP_PASSWORD : ${{ secrets.DEV_SMTP_PASSWORD }}
6979 run : |
80+ set -euxo pipefail
7081 echo "ENV_MODE=$ENV_MODE"
71- docker compose config -q
72- docker compose down --remove-orphans
73- docker compose up -d --build --remove-orphans
74- docker image prune -f
82+ docker compose -p cert-dev config -q
83+ docker compose -p cert-dev down --remove-orphans
84+ docker compose -p cert-dev up -d --build --remove-orphans
85+ docker image prune -f --filter "label=org.pseudolab.project=cert"
0 commit comments