CI·CD
빌드·배포 파이프라인, 러너, GitOps.
Docker COPY와 빌드 컨텍스트 — 디렉토리 중첩
빌드 컨텍스트 루트에서 COPY . 를 하니 소스 디렉토리가 한 겹 더 중첩됐습니다. WORKDIR에는 package.json이 없고, 한 겹 아래에 있었습니다.
FluxCD 무한 reconcile — ignoreDifferences
FluxCD는 Git 상태로 되돌리고 HPA는 부하에 맞춰 바꾸고, 둘이 같은 replicas 필드를 두고 계속 싸웁니다. ignoreDifferences로 그 필드만 FluxCD 관리에서 뺍니다.
FluxCD vs ArgoCD — 역할 분리
둘 다 GitOps 도구지만 하나는 UI가 아예 없고 하나는 UI가 전부라, 자동으로 반영돼야 하는 인프라는 FluxCD에 두고 사람이 보고 롤백하는 앱은 ArgoCD에 맡겨 층을 나눕니다.
Spot Jenkins 에이전트 — 부팅마다 git pull
Spot 인스턴스는 언제든 새로 뜹니다. 그때마다 AMI 생성 시점의 옛날 설정을 쓰면 안 됩니다. @reboot에 git pull을 걸어 시작 시점에 최신화합니다.
ARC — 쿠버네티스 위의 GitHub Actions 셀프호스트 러너
self-hosted 러너가 개수 고정이라 job이 대기했습니다. ARC로 옮기니 job마다 파드가 뜨고 사라지는데, 통신 방향이 K8s→GitHub 단방향이라 내부망에서도 됩니다.
Jenkins GIT_COMMIT — Git 플러그인의 덮어쓰기
빌드 대상 레포의 커밋 해시를 env.GIT_COMMIT에 넣었는데, 배포 매니페스트엔 늘 jenkinsfile 레포의 해시가 찍혔습니다. Git 플러그인이 GIT_COMMIT을 환경 조회 때마다 다시 계산해 주입하기 때문입니다.
package-lock의 resolved가 옛 레지스트리를 가리킴 — npm ci 인증 실패
.npmrc를 새 레지스트리로 바꿨는데도 npm ci가 401로 실패했습니다. package-lock.json의 resolved URL이 옛 GitHub Packages를 그대로 가리키고 있었고, npm ci는 그 lock을 따라가기 때문이었습니다.
호스티드 러너에서 내부 npm 레지스트리 접근 불가 — self-hosted 러너
CI에서 install 단계만 계속 타임아웃이었습니다. 내부망 전용 npm 레지스트리를 GitHub의 호스티드 러너가 외부 IP라 소켓 연결조차 못 했고, 그 Job 을 self-hosted 러너로 옮겨 해결했습니다.
검색 결과가 없습니다.