CI/CD 개발 완료 루틴 Bootstrap Kit
저장소마다 달랐던 테스트·리뷰·이미지 배포를 중앙 kit로 묶고 AI 호출 전에 비밀값을 검사했습니다.
작업 요약
공통 검증 루틴 적용 · 도입률 수치는 미측정
테스트부터 배포 알림까지 공통 절차로 묶었습니다
AI 리뷰는 이 작업의 한 단계입니다. 실제로 묶은 범위는 Jira 브랜치 생성부터 테스트, PR 리뷰, Docker image push, 배포 완료 알림까지입니다. 기준 소스는 labrador-cicd-ai-review-kit이며 새 저장소에 필요한 파일을 넣어 주는 bootstrap kit로 운영합니다.
그래서 공통 동작은 중앙 kit repo에 두고 target repo에는 호출용 wrapper와 설정만 남겼습니다. 브랜치 푸시 테스트가 통과하면 PR을 만들고, 그 다음 AI 리뷰를 실행하며, diff secret scan을 통과한 뒤에만 외부 모델 API를 호출하도록 설계했습니다.
배경
저장소가 늘어날수록 개발 완료 흐름이 repo마다 달라졌습니다. Jira 브랜치 생성, 브랜치 푸시 테스트, PR 자동 생성, Claude 기반 AI 리뷰, Slack 알림, Docker image tag/push 방식이 저장소마다 달라지면 운영자가 결과를 같은 기준으로 해석하기 어렵습니다.
- repo마다 CI script를 복사해 두면 공통 개발 완료 루틴을 한 번에 바꾸기 어려움
- 테스트 실패가 merge check로 연결되지 않거나, build만 성공하고 테스트는 실행되지 않는 false green 위험
- 크롤러 저장소는 데이터 형식 유지 규칙이 없던 시기에 담당자가 로직을 고치면 컬럼·JSON 구조와 값 산출 방식까지 함께 달라지는 문제
- PR diff가 외부 AI API로 나가기 전에 secret 검사 기준이 일관되지 않음
- Slack 알림·PR URL·pipeline URL·실패 요약 형식이 저장소마다 달라 결과 확인에 드는 시간 증가
접근
중앙 kit repo에 공통 동작을 모으고, target repo에는 `scripts/devflow.sh`, pre-push hook, env template, pipeline 설정, PR template 같은 호출용 wrapper만 남겼습니다. 실행할 kit 버전은 움직이는 브랜치 대신 full commit SHA로 고정해, 운영 repo가 어떤 CI 로직을 실행하는지 추적 가능하게 만들었습니다.
- Target repo에는
scripts/devflow.sh, pre-push hook, env 파일,bitbucket-pipelines.yml, PR template만 두고 검증 로직은 중앙 kit에서 실행 java-spring,go,python,js,mixedprofile로 저장소마다 다른 테스트 시작 명령을 분리- 여러 component가 있는 저장소는 변경 경로와 component를 맞춰 필요한 Dockerfile만 테스트하고, 어느 component에도 걸리지 않는 변경은 실패 처리
spec.md계약 검사: 크롤러가 지켜야 할 데이터 포맷과 변경 경계를 저장소의spec.md에 기록. profile 테스트는 변경 component의 실제 테스트 명령을 실행하고, mixed profile에서 component와 매칭되지 않는 변경이나 테스트 실패는 pipeline 실패로 처리. Claude 리뷰는 코드 diff를spec.md와 대조해 형식 불일치를 PR에 남기며, 최종 merge 제한은 Bitbucket branch restrictions와 merge checks에서 집행- PR 이벤트에만 기대지 않고 브랜치 push 테스트가 끝난 뒤 PR 생성과 AI 리뷰를 진행
- Full SHA pinning, kit repo allowlist, resolved kit SHA artifact로 실행된 kit 버전을 기록
- PR diff의 추가 행을 먼저 secret scan하고 의심 값이 있으면 Claude API를 부르기 전에 pipeline을 중단
- Slack에는 전체 로그 대신 마지막 실패 원인과 PR·pipeline URL을 전달
- Kit 파일 배포와 merge 정책 집행을 분리하고, Bitbucket branch restrictions와 merge checks에서 실제 제한을 적용
결과
spec.md와 대조하는 개발 흐름에 적용역할
공통 개발 완료 루틴을 설계하고, Jira 브랜치·Bitbucket Pipelines·Claude PR Review·Slack 알림·Docker build/push가 이어지는 중앙 bootstrap kit 구조를 구현했습니다. README와 beginner guide, central-runner, test-strategy 문서에 더해 크롤러의 데이터 포맷을 지키는 spec.md 계약을 연결해, 새 repo도 profile 선택 후 같은 방식으로 bootstrap하고 검증할 수 있게 만들었습니다.
kit은 현재 적용해 사용하고 있습니다. 실제 리뷰와 테스트에서 spec.md와 어긋난 데이터 포맷 변경을 확인하고 있지만, 적용 repo 수·검출 건수·시간 절감률은 아직 측정하지 않았습니다.
근거 자료
아래 기록에 근거해 정리했습니다. 내부 원문 경로를 표시하며, 비공개 원문 파일은 이 페이지에서 제공하지 않습니다.
ai/sources/career/2026-07-22-spec-driven-crawler-review-clarification.mdai/sources/career/interviews/2026-09-03-general-numbers-01.mdai/wiki/people/career-timeline.md