|
6 | 6 | # |
7 | 7 | # 1. 초기 CD는 패키지 생성 확인 목적으로 작성되어 항상 실패 할 예정입니다. |
8 | 8 | # 2. 패키지 관리 |
9 | | -# (1) 일관적 관리를 위해 PACKAGE_MANAGEMENT_MEMBER 로 설정했습니다. |
| 9 | +# (1) 일관적 관리를 위해 조직의 리포지토리로 설정했습니다. |
10 | 10 | # (2) 생성된 Package는 env 와 같은 환경 변수가 담겨있지 않을 예정이므로 현재 public 공개를 검토 중입니다. |
11 | 11 | # * Private 결정 시 관리는 어떻게 할 것인가 |
12 | 12 | # 3. AWS SSM Send-Command 액션 |
|
17 | 17 | name: deploy |
18 | 18 |
|
19 | 19 | env: |
20 | | - IMAGE_REPOSITORY: onetop-relife-img # GHCR 이미지 리포지토리명(소유자 포함 X) |
| 20 | + IMAGE_REPOSITORY: onetop-relife-be # GHCR 이미지 리포지토리명(소유자 포함 X) |
21 | 21 | CONTAINER_1_NAME: relife_1 # 슬롯1(고정 이름) |
22 | 22 | CONTAINER_2_NAME: relife_2 # 슬롯2(고정 이름) |
23 | 23 | CONTAINER_PORT: 8080 # 컨테이너 내부 포트(스프링부트) |
24 | 24 | EC2_INSTANCE_TAG_NAME: relife-ec2-1 # 배포 대상 EC2 Name 태그 |
25 | 25 | DOCKER_NETWORK: common # 도커 네트워크 |
26 | 26 | BACKEND_DIR: back # Dockerfile 위치 |
27 | | - PACKAGE_MANAGEMENT_MEMBER: "gooraeng" |
28 | 27 |
|
29 | 28 | concurrency: |
30 | | - # 커밋이 짧은 시간안에 몰려도 최신 커밋에 대해서만 액션이 수행되도록 |
31 | | - group: ${{ github.workflow }}-${{ github.ref }} |
| 29 | + # 같은 브랜치에서 여러 커밋이 몰려도 동일한 그룹으로 관리 |
| 30 | + group: relife-backend-cd-${{ github.workflow }}-${{ github.ref }} |
32 | 31 | # 기존 작업은 새 커밋이 들어오더라도 바로 종료하지 않고 끝날 때 까지 대기 |
| 32 | + # 예) tag는 있는데 package가 없는 상황 |
33 | 33 | cancel-in-progress: false |
34 | 34 |
|
35 | 35 | on: |
@@ -99,20 +99,12 @@ jobs: |
99 | 99 | - name: Docker Buildx 설치 |
100 | 100 | uses: docker/setup-buildx-action@v3 |
101 | 101 |
|
102 | | - # GHCR 로그인 |
103 | | - - name: 레지스트리 로그인 |
104 | | - uses: docker/login-action@v3 |
105 | | - with: |
106 | | - registry: ghcr.io |
107 | | - username: ${{ env.PACKAGE_MANAGEMENT_MEMBER }} |
108 | | - password: ${{ secrets.GITHUB_TOKEN }} |
109 | | - |
110 | 102 | # 저장소 소유자명을 소문자로 (GHCR 경로 표준화) |
111 | 103 | - name: set lower case owner name |
112 | 104 | run: | |
113 | 105 | echo "OWNER_LC=${OWNER,,}" >> "${GITHUB_ENV}" |
114 | 106 | env: |
115 | | - OWNER: ${{ env.PACKAGE_MANAGEMENT_MEMBER }} |
| 107 | + OWNER: ${{ github.repository_owner }} |
116 | 108 |
|
117 | 109 | # 캐시를 최대한 활용하여 빌드 → 버전태그 및 latest 동시 푸시 |
118 | 110 | - name: 빌드 앤 푸시 |
@@ -152,7 +144,7 @@ jobs: |
152 | 144 | echo "INSTANCE_ID=${INSTANCE_ID}" >> "${GITHUB_ENV}" |
153 | 145 |
|
154 | 146 | # 원격(SSM)으로 Blue/Green 스위치 수행 |
155 | | - - name: AWS SSM Send-Command |
| 147 | + - name: AWS 배포 실행 |
156 | 148 | uses: peterkimzz/aws-ssm-send-command@master |
157 | 149 | env: |
158 | 150 | DOT_ENV_CONTENT: ${{ secrets.DOT_ENV }} |
@@ -180,8 +172,7 @@ jobs: |
180 | 172 | # - blue/green은 "역할"이며 매 배포마다 바뀜 |
181 | 173 | # --------------------------------------------------------- |
182 | 174 | source /etc/environment || true # 시스템 전역 변수(+ 비밀) 주입 시도 |
183 | | - OWNER_LC="${{ env.PACKAGE_MANAGEMENT_MEMBER }}" |
184 | | - OWNER_LC="${OWNER_LC,,}" # 소문자 표준화 |
| 175 | + OWNER_LC="${{ env.OWNER_LC }}" |
185 | 176 | IMAGE_TAG="${{ needs.createTagAndRelease.outputs.tag_name }}" |
186 | 177 | IMAGE_REPOSITORY="${{ env.IMAGE_REPOSITORY }}" |
187 | 178 | IMAGE="ghcr.io/${OWNER_LC}/${IMAGE_REPOSITORY}:${IMAGE_TAG}" |
|
0 commit comments