Repository navigation
ci(release): split release-please config and manifest per service - #1404
Merged
Merged
Conversation
Release PRs conflicted whenever another service's release PR was merged first. release-please only re-pushes a release branch when the PR body changes, so the remaining PRs kept a stale copy of the shared manifest and collided with main on adjacent lines. Each service now owns its config and manifest, so release PRs no longer edit a common file. release.yml discovers the configs instead of listing services, and each config carries a service-specific label so that one service's merged-but-untagged release PR does not make the other jobs skip their PR update. meeting-translation is dropped because tools/meeting-translation no longer exists. bootstrap-sha is dropped because every remaining service already has a release. Claude-Session: https://claude.ai/code/session_0159WC2CuFahuFTufiEjdaGz Signed-off-by: panicboat <panicboat@gmail.com>
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
panicboat
marked this pull request as ready for review
October 7, 2026 17:06
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
複数サービスの release PR が open している状態でどれか 1 つをマージすると、残りの release PR がコンフリクトしていた。
release-please は release PR の body が変わらない限り branch を push し直さない(
PR #N remained the same)。全サービスが 1 つのrelease-please-manifest.jsonを共有していたため、残った PR は古い manifest を基点にしたままになり、main と隣り合う行でぶつかる。これまでは PR を close してgh workflow run release.ymlで作り直していた。What
CHANGELOG.mdとrelease-please-manifest.jsonだけになる。release.ymlは*/release-please-config.jsonを検出して matrix を組む。サービスを足すときに workflow を触らない。labelにサービス固有の label(release: <service>)を足す。release-please は「マージ済みで未 tag の release PR」を label だけで探し、1 件でもあると PR の作成と更新を中断するため、共通 label のままだと並列 job が互いの更新を skip させる。separate-pull-requests: trueは残す。外すと branch 名が全サービス共通になる。.dockerignoreに 2 ファイルを追加する。release のたびに build context が変わるのを防ぐ。Decisions
always-update: trueは採らなかった。1 行で済むが、main への push ごとに open 中の全 release PR が force-push され、その都度 PR の CI が走る。tools/meeting-translationが main に存在しない。bootstrap-shaは引き継がなかった。残る 3 サービスはすべてリリース済みで、参照されない。Rollout
release.ymlが走り、3 サービスの release PR が作り直される。Verification
actionlint .github/workflows/release.yml: エラーなし["dystopia/frontend","dystopia/monolith","system-components/pennyworth"]release-please release-pr --dry-runをこの branch に対して 3 サービス分実行: それぞれ 1 PR(monolith 0.9.0 / frontend 0.11.0 / pennyworth 1.1.1。open 中の release PR と同じバージョン)で、更新対象は自サービス配下のCHANGELOG.mdとrelease-please-manifest.jsonコンフリクトが起きないこと自体は、作り直された release PR のどれかをマージするまで実地では確認できない。
🤖 Generated with Claude Code
https://claude.ai/code/session_0159WC2CuFahuFTufiEjdaGz