Skip to content

ci: release-please PR 검증을 CI 사이클 내로 통합 (solactl 패턴)#30

Closed
Palbahngmiyine wants to merge 1 commit intosolapi:masterfrom
Palbahngmiyine:ci/release-please-ci-cycle
Closed

ci: release-please PR 검증을 CI 사이클 내로 통합 (solactl 패턴)#30
Palbahngmiyine wants to merge 1 commit intosolapi:masterfrom
Palbahngmiyine:ci/release-please-ci-cycle

Conversation

@Palbahngmiyine
Copy link
Copy Markdown
Member

Summary

  • 기존 흐름(#28에서 도입): master push 시 ci.ymlrelease-please.yml병렬로 돌고, release-please가 만든 PR에는 GITHUB_TOKEN 정책상 외부 CI가 자동 트리거되지 않아 검증이 누락되는 비대칭이 있었음
  • 해결: solapi/solactl 패턴을 따라 release-please를 CI 완료 후 직렬화하고, 같은 워크플로 내에서 release PR head를 다시 빌드·테스트해 commit status API로 PR 화면에 결과 표시

Changes

  • release-please.yml 트리거: push.masterworkflow_run["CI"] (CI 성공 + push 이벤트일 때만 실행)
  • release-please job에 outputs 추가: release_created, tag_name, pr_head_sha (open된 release-please--branches--master PR에서 gh pr list로 조회)
  • unit-test-release-pr matrix job 신설:
    • 조건: release_created != true && pr_head_sha != ''
    • PHP 7.1~8.5 (ci.yml과 동일 매트릭스) 로 release PR head를 다시 unit test
    • 결과를 repos/{repo}/statuses/{sha} API로 commit status 등록 (context: Unit / PHP X.Y)
  • 보안: 워크플로 인젝션 방지를 위해 셸 안의 모든 표현식을 env:로 분리하여 전달

Why this matters

  • release-please PR에는 외부 CI가 안 도므로 사람이 머지 안전성을 시각적으로 확인할 수 없었음
  • 같은 매트릭스로 검증하므로 일반 PR과 동등한 안전성 보장
  • release-please-action이 직접 만든 release(release_created=true) 케이스는 PHP 라이브러리라 binary 빌드가 없어 추가 job 불필요

Test plan

  • 이 PR이 머지되면 release-please.yml이 ci.yml 성공 후에만 트리거되는지 확인
  • 직전 머지된 fix: harden response mapping edge cases(aff1a43)로 인해 release-please가 5.1.3 Release PR을 생성하면, unit-test-release-pr job이 실행되어 해당 PR 화면에 Unit / PHP 7.1 ~ Unit / PHP 8.5 10개의 commit status가 표시되는지 확인
  • Release PR이 머지되어 release_created=true가 되면 unit-test-release-pr은 skip되고 release-please-action이 v5.1.3 태그·GitHub Release만 생성하는지 확인

🤖 Generated with Claude Code

기존 흐름은 master push 시 ci.yml과 release-please.yml이 병렬로 돌면서
release-please가 만든 PR에는 GITHUB_TOKEN 정책상 외부 CI가 자동
트리거되지 않아 PR 검증이 누락되는 비대칭이 있었다. solapi/solactl이
사용 중인 패턴을 따라 release-please를 CI 완료 후 직렬화하고, 같은
워크플로 안에서 PR head를 다시 빌드·테스트해 commit status로 보고한다.

- workflow_run["CI"] 트리거로 변경 (CI 성공 후에만 실행)
- release-please job에 outputs로 release_created·tag_name·pr_head_sha 노출
- unit-test-release-pr matrix job 추가: release PR head 체크아웃 후
  ci.yml과 동일한 PHP 7.1~8.5 매트릭스로 unit test
- 결과를 repos/{repo}/statuses/{sha} API로 commit status 등록
  (외부 CI 자동 트리거가 없는 release-please PR에서도 PR 화면에 검증
  결과 표시되도록)
- 워크플로 인젝션 방지를 위해 모든 표현식을 env 경유로 셸에 전달

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@gemini-code-assist
Copy link
Copy Markdown

Note

Gemini is unable to generate a review for this pull request due to the file types involved not being currently supported.

@Palbahngmiyine Palbahngmiyine deleted the ci/release-please-ci-cycle branch May 11, 2026 01:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant