본문으로 건너뛰기

CI/CD

목적

Lumie의 활성 CI/CD 경로는 애플리케이션 저장소의 GitHub Actions에서 시작합니다. main 푸시 시 저장소별 워크플로가 점검을 실행하고 ARM64 컨테이너 이미지를 빌드한 뒤, 짧은 SHA 태그와 main 태그를 Zot으로 푸시합니다. 이후 argocd-image-updater가 Zot을 감시하고 허용된 최신 이미지 태그를 lumie-infra에 다시 기록하면, Argo CD가 변경된 선언 상태를 조정합니다.

Tekton 매니페스트는 여전히 lumie-infra/applications/tekton/** 아래에 존재하지만, Tekton Argo CD 애플리케이션은 lumie-infra/applications/kustomization.yaml에서 주석 처리되어 있습니다. 이 매니페스트는 활성 빌드 시스템이 아니라 보관된 재활성화 경로로 취급하세요.

이 페이지는 이미지 빌드, 레지스트리 게시, 이미지 태그 자동화, GitOps 배포 핸드오프를 변경하는 개발자를 위한 레퍼런스 문서입니다. 비활성 Tekton 컨트롤러 매니페스트는 Tekton을 참고하세요.

소스 경로

경로역할
lumie-backend/.github/workflows/ci.ymlGradle 테스트를 실행하고 backend ARM64 이미지를 빌드해 Zot으로 푸시
lumie-frontend/.github/workflows/ci.ymlfrontend 점검을 실행하고 frontend ARM64 이미지를 빌드해 Zot으로 푸시
lumie-document/.github/workflows/ci.ymlDocusaurus를 빌드하고 docs 이미지를 빌드해 Zot으로 푸시
lumie-infra/applications/argocd-image-updater/argocd.yaml활성 이미지 태그 자동화 컨트롤러 설치
lumie-infra/applications/argocd-image-updater/manifests/image-updaters.yamlZot 이미지를 lumie-infra Helm values 쓰기 반영 대상에 매핑
lumie-infra/applications/kustomization.yamlargocd-image-updater를 등록하고 Tekton 애플리케이션을 주석 처리
lumie-infra/applications/lumie/**/{common-values,helm-values}.yaml갱신된 이미지 태그를 받는 배포 values
lumie-infra/applications/tekton/ci-cd/**재활성화 가능성을 위해 보관된 비활성 Tekton 빌드 및 values 갱신 매니페스트

런타임 흐름

이미지 및 쓰기 반영 카탈로그

소스이미지쓰기 반영 대상
lumie-backendzot.lumie-infra.com/applications/lumie-backendapplications/lumie/backend/common-values.yaml
lumie-frontendzot.lumie-infra.com/applications/lumie-frontendapplications/lumie/frontend/common-values.yaml
lumie-documentzot.lumie-infra.com/web-apps/lumie-documentapplications/lumie/document/helm-values.yaml
워커 서비스zot.lumie-infra.com/applications/{analysis-svc,chatbot-svc,grading-svc,report-svc,temp-omr-grading}image-updaters.yaml에 나열된 워커 쓰기 반영 대상입니다. 검사한 workspace에는 이에 대응하는 저장소 로컬 GitHub Actions 워크플로가 선언되어 있지 않습니다.

argocd-image-updater^[0-9a-f]{8}$와 일치하는 태그만 허용하고 활성 linux/arm64 플랫폼에 대해 newest-build를 사용합니다. main 태그는 사람과 registry 점검에는 계속 유용하지만, GitOps 쓰기 반영 계약은 변경 불가능한 짧은 SHA 태그입니다.

자격 증명 흐름

자격 증명소비자목적
ZOT_USERNAME / ZOT_PASSWORD GitHub secrets저장소별 GitHub Actions 워크플로이미지 푸시 전 zot.lumie-infra.com 로그인
argocd-image-updater-zot-vssargocd-image-updaterVault에서 Zot 자격 증명을 updater 네임스페이스로 읽기
Argo CD repo credentialsargocd-image-updaterHelm values 쓰기 반영 커밋을 https://github.com/Lumie-Edu/lumie-infra.git로 푸시

비활성 Tekton 경로

체크인된 Tekton 리소스는 Kaniko로 이미지를 빌드하고 git-update-valueslumie-infra에 실행하는 Gitea webhook 경로를 설명합니다. 다음 리소스가 주석 처리되어 있는 동안 이 경로는 활성 상태가 아닙니다.

소스 앵커: lumie-infra/applications/kustomization.yaml의 Tekton CI/CD resource 주석.

# - tekton/pipeline/argocd.yaml
# - tekton/triggers/argocd.yaml
# - tekton/dashboard/argocd.yaml
# - tekton/ci-cd/argocd.yaml

Tekton을 재활성화할 때는 Tekton 전용 drift를 계속 드러내야 합니다.

소스현재 의미
applications/tekton/ci-cd/manifests/tasks/git-update-values.yaml인클러스터 Gitea를 통해 배포 values를 푸시
활성 루트 Argo CD Application과 argocd-image-updaterGitHub를 정식 lumie-infra 쓰기 반영 대상으로 사용
applications/kustomization.yaml모든 Tekton 애플리케이션을 비활성으로 둠

검증

cd lumie-infra
rg -n "argocd-image-updater|ImageUpdater|writeBackTarget|allowTags|tekton" \
applications/kustomization.yaml applications/argocd-image-updater applications/tekton
cd ../lumie-backend && rg -n "REGISTRY|IMAGE_NAME|docker/build-push-action" .github/workflows/ci.yml
cd ../lumie-frontend && rg -n "REGISTRY|IMAGE_NAME|docker/build-push-action" .github/workflows/ci.yml
cd ../lumie-document && rg -n "REGISTRY|IMAGE_NAME|docker/build-push-action" .github/workflows/ci.yml
kubectl get applications -n argocd | rg 'argocd-image-updater|tekton' || true
kubectl get imageupdaters -n argocd

성공 신호:

  • argocd-image-updater가 Argo CD에 등록되어 있고 healthy 상태입니다.
  • applications/kustomization.yaml에서 의도적으로 주석을 해제하지 않는 한 Tekton 애플리케이션은 보이지 않습니다.
  • 애플리케이션 Helm values는 Zot metadata에서 기록된 짧은 SHA 이미지 태그를 사용합니다.