Skip to content

Commit d8f6ed5

Browse files
committed
[Fix] ci 파이프라인 docker 인증 문제 해결
1 parent f413814 commit d8f6ed5

1 file changed

Lines changed: 26 additions & 31 deletions

File tree

.github/workflows/ci.yml

Lines changed: 26 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,92 +1,87 @@
1-
# Self-Hosted 환경 자동 배포 워크플로우
2-
# main 브랜치에 push가 발생하면 자동으로 실행됩니다
31
name: Deploy to Self-Hosted
42

5-
# 워크플로우 실행 조건: main 브랜치에 push될 때
63
on:
74
push:
85
branches: [ main ]
96

107
jobs:
11-
# 빌드 작업
128
build:
139
runs-on: [self-hosted, client]
1410
outputs:
1511
image-tag: ${{ steps.build.outputs.image-tag }}
16-
12+
1713
steps:
1814
# 1. 코드 체크아웃
1915
- name: Checkout code
2016
uses: actions/checkout@v4
21-
17+
2218
# 2. Node.js 환경 설정 (버전 20)
2319
- name: Set up Node.js
2420
uses: actions/setup-node@v4
2521
with:
2622
node-version: '20'
27-
28-
# 3. pnpm 패키지 매니저 설치
23+
24+
# 3. pnpm 설치
2925
- name: Install pnpm
3026
uses: pnpm/action-setup@v2
3127
with:
3228
version: latest
33-
34-
# 4. pnpm 캐시 디렉토리 경로 가져오기 (캐싱 최적화용)
29+
30+
# 4. pnpm 캐시 경로
3531
- name: Get pnpm store directory
3632
shell: bash
3733
run: |
3834
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
39-
40-
# 5. pnpm 캐시 설정 (빌드 속도 향상을 위해)
35+
36+
# 5. pnpm 캐시 설정
4137
- name: Setup pnpm cache
4238
uses: actions/cache@v3
4339
with:
4440
path: ${{ env.STORE_PATH }}
4541
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
4642
restore-keys: |
4743
${{ runner.os }}-pnpm-store-
48-
44+
4945
# 6. 프로젝트 의존성 설치
5046
- name: Install dependencies
5147
run: pnpm install --frozen-lockfile
52-
53-
# 7. 환경변수 파일 생성 (GitHub Secrets의 PROD_CONFIG 사용)
48+
49+
# 7. 환경변수 파일 생성
5450
- name: Create .env file
5551
run: |
5652
echo "${{ secrets.PROD_CONFIG }}" > .env.local
57-
58-
# 8. Docker 설정 및 로그인
53+
54+
# 8. Docker Hub 로그인 (Keychain-Free)
5955
- name: Docker Hub Login
56+
env:
57+
DOCKER_CONFIG: $HOME/.docker # 홈 디렉토리 기반 Docker 설정
6058
run: |
61-
# macOS에서 keychain 사용 비활성화
62-
mkdir -p ~/.docker
63-
echo '{"credsStore":"","auths":{}}' > ~/.docker/config.json
64-
# Docker Hub 로그인
59+
mkdir -p $DOCKER_CONFIG
60+
echo '{"credsStore":""}' > $DOCKER_CONFIG/config.json
6561
echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
66-
62+
6763
# 9. Docker 이미지 빌드
6864
- name: Build Docker image
6965
id: build
7066
run: |
7167
docker build -t sols-client:${{ github.sha }} .
7268
echo "image-tag=${{ github.sha }}" >> $GITHUB_OUTPUT
73-
74-
# 9. 빌드 결과 확인
69+
70+
# 10. 빌드 결과 확인
7571
- name: Verify build
7672
run: docker images | grep sols-client
7773

78-
# 배포 작업 (빌드 완료 후 실행)
7974
deploy:
8075
needs: build
8176
runs-on: [self-hosted, client]
82-
77+
8378
steps:
8479
# 1. 기존 컨테이너 정리
8580
- name: Stop and remove existing container
8681
run: |
8782
docker stop sols-client || true
8883
docker rm sols-client || true
89-
84+
9085
# 2. 새로운 Docker 컨테이너 실행
9186
- name: Run new container
9287
run: |
@@ -96,19 +91,19 @@ jobs:
9691
-p 3000:3000 \
9792
--env-file .env.local \
9893
sols-client:${{ needs.build.outputs.image-tag }}
99-
94+
10095
# 3. 컨테이너 상태 확인
10196
- name: Verify container status
10297
run: |
10398
sleep 5
10499
docker ps | grep sols-client
105-
100+
106101
# 4. 헬스체크
107102
- name: Health check
108103
run: |
109104
sleep 10
110105
curl -f http://localhost:3000 > /dev/null 2>&1
111-
112-
# 5. 정리 작업
106+
107+
# 5. 정리 작업 (불필요한 이미지 삭제)
113108
- name: Clean up old images
114109
run: docker image prune -f

0 commit comments

Comments
 (0)