appsok/agent-roadmap/phase/security-distribution/milestones/jenkins-thin-artifact-ci.md

4.4 KiB

Milestone: Jenkins 얇은 빌드와 artifact 다운로드

위치

  • Roadmap: agent-roadmap/ROADMAP.md
  • Phase: agent-roadmap/phase/security-distribution/PHASE.md

목표

OTO 없이 Jenkins job만 얇게 구성해 AppSok 인증 ZIP을 반복 빌드하고, Jenkins artifact 링크로 바로 다운로드할 수 있게 한다. Jenkins에는 빌드 지식을 최소한으로 두고, 현재 프로젝트의 기존 인증 빌드 스크립트를 실행하는 thin launcher 역할만 부여한다.

상태

[계획]

승격 조건

  • 없음

구현 잠금

  • 상태: 잠금
  • 결정 필요: 아래 체크리스트
    • Jenkins job 생성/갱신은 사용자 제공 Jenkins API credential을 사용한다. 원격 SOPS 저장과 Jenkins API 인증 확인을 완료했다.
    • artifact 다운로드를 Jenkins 로그인 사용자에게만 허용할지, 별도 공개 다운로드 경로를 마련할지 결정한다.
    • build trigger를 수동 실행만으로 시작할지, Git push webhook 또는 polling까지 포함할지 결정한다.
    • job 이름과 artifact 보관 개수 기본값을 확정한다. 기본 후보는 appsok-macos-certified, 최근 20개 build/artifact 보관이다.

범위

  • AppSok 전용 Jenkins job 생성 또는 갱신
  • macbook-ultra Jenkins node에서 기존 인증 빌드 스크립트 실행
  • 최종 ZIP과 checksum을 Jenkins archived artifact로 노출
  • 최신 성공 빌드 artifact 다운로드 URL 확인
  • Jenkins credential/API token을 tracked 파일에 남기지 않는 운영 절차

기능

Epic: [job] Jenkins thin job

Jenkins job은 AppSok 빌드 스크립트를 호출하고 artifact를 보관하는 얇은 launcher로 유지한다.

  • [job-config] macbook-ultra node, AppSok SCM, main branch, shell build step을 포함한 Jenkins job config를 만든다.
  • [script-call] job build step이 ./scripts/build-certified-macos.sh를 호출하고 secret 원문을 job config나 repository에 남기지 않는다.
  • [artifact-copy] AppSok-certified.zipsha256 값을 Jenkins workspace의 archive 대상 경로로 모은다.
  • [archive] Jenkins archived artifact 설정으로 ZIP과 checksum을 보관한다.
  • [retention] build log와 artifact 보관 정책을 AppSok 1차 운영 기준에 맞춘다.

Epic: [access] 빌드 실행과 다운로드 확인

사용자가 Jenkins에서 빌드를 실행하고 최신 성공 artifact를 확인할 수 있게 한다.

  • [trigger] 1차 trigger 방식을 적용한다.
  • [download-url] lastSuccessfulBuild/artifact/.../AppSok-certified.zip 다운로드 URL을 확인하고 문서화한다.
  • [auth-policy] Jenkins artifact 다운로드 권한 정책을 결정 사항에 맞게 반영한다.
  • [smoke] Jenkins build를 1회 실행하고 archived ZIP과 checksum을 다운로드 가능한 상태로 검증한다. 검증: Jenkins 최신 성공 빌드의 artifact URL이 인증된 사용자 기준으로 ZIP 응답을 반환한다.

완료 리뷰

  • 상태: 없음
  • 요청일: 없음
  • 완료 근거: 모든 기능 Task와 Task 안에 명시된 검증 충족 후 기록한다.
  • 리뷰 필요:
    • 사용자가 완료 결과를 확인했다
    • archive 이동을 승인했다
  • 리뷰 코멘트: 없음

범위 제외

  • OTO runner 또는 OTO Server를 Jenkins 대체 실행 주체로 도입하는 작업
  • workspace 공통 Jenkins 가이드 또는 별도 agent skill 작성
  • Jenkins plugin, Auth Broker, 중앙 감사 서버 구현
  • 공용 Jenkins API token을 앱이나 repository에 내장하는 방식
  • AppSok 앱 코드에서 Jenkins artifact 소비 흐름을 변경하는 작업

작업 컨텍스트

  • 관련 경로: scripts/build-certified-macos.sh, docs/macos-certified-build.md, agent-roadmap/phase/security-distribution/
  • 표준선(선택): Jenkins는 1차로 thin launcher와 artifact archive만 담당하고, 빌드 절차의 source of truth는 AppSok repository의 스크립트와 문서에 둔다.
  • 표준선(선택): Jenkins API token, SSH credential, Apple credential, Keychain password 원문은 tracked 파일, task log, 최종 응답에 기록하지 않는다.
  • 선행 작업: macOS 빌드 CI와 인증 빌드
  • 후속 작업: macOS 배포와 sandbox 검증, 향후 OTO 기반 CI/CD 마이그레이션 후보
  • 확인 필요: Jenkins API token 또는 reload 권한, artifact 다운로드 권한 정책, trigger 방식, job 이름과 보관 정책