Skip to content

danger-swiftを3.23.0に更新してDangerfileの評価失敗を直す - #303

Merged
stotic-dev merged 1 commit into
mainfrom
chore/update-danger-swift
Sep 26, 2026
Merged

stotic-dev merged 1 commit into
mainfrom
chore/update-danger-swift

Conversation

@stotic-dev

@stotic-dev stotic-dev commented Sep 26, 2026 •

Copy link
Copy Markdown
Owner

経緯

#295 で danger ジョブが失敗した。ビルドは成功しているのに、Dangerfile の評価だけがモジュール解決で落ちていた。

/tmp/danger/.../_tmp_dangerfile.swift:1:8: error: no such module 'Danger'
  1 | import Danger
ERROR: Dangerfile eval failed at Dangerfile.swift

danger-swift 3.23.0 のリリースノートに、まさにこの症状の修正が入っている。

Fixed module lookup picking the wrong SwiftPM build layout (e.g. under the newer swiftbuild build system, or a danger-swift binary built with a different Swift version than the one building the target package), by probing for the actual Danger.swiftmodule artifact instead of relying on the compiler that built danger-swift itself.
— danger/swift#663

3.22.0 は「danger-swift 自身をビルドしたコンパイラ」から Danger.swiftmodule の置き場所を推測するため、danger-swift のビルドとDangerfileのコンパイルで Swift のバージョンが食い違うとモジュールを見つけられない。3.23.0 は Danger.swiftmodule の実体を探すようになったので、この食い違いに影響されない。

バージョンが食い違った理由

ci_danger.yml の Swift ツールチェーンのキャッシュキーが、要求バージョンの文字列(swift-toolchain-Linux-6.2)だけで組まれており、実際に入ったバージョンを含んでいない。失敗した実行と、その後キャッシュが切れて成功した実行で、同じキーから別のバージョンが復元されていた。

実行 ツールチェーンのキャッシュ swift --version 結果
36199650811 restored(swift-toolchain-Linux-6.2) 6.4 (swift-6.4-RELEASE) fail
36202632899 not found → setup-swift が新規導入 6.2.1 (swift-6.2.1-RELEASE) pass

DangerTools/.build 側のキャッシュキーも danger-tools-Linux-6.2-<Package.resolvedのhash> で Swift の実バージョンを含まないため、6.2.1 でビルドした .build を 6.4 のツールチェーンで再利用する組み合わせが成立してしまう。これが 3.22.0 の弱点を踏んだ。

そのため現時点では #295 の danger は通っているが、キャッシュの状態次第でいつでも再発する。本PRでその再発を止める。

実装内容

DangerTools/Package.swift の danger-swift を exact: "3.22.0" → exact: "3.23.0" に更新し、Package.resolved を追従させた。差分は danger-swift のピンだけで、他の依存(OctoKit / RequestKit / Logger / Version / danger-swift-coverage)のバージョンは変わっていない。

exact 指定は維持した。Dangerfile の評価が danger-swift の内部挙動(モジュール解決・SwiftLintの呼び出しパス)に依存していて、マイナー更新でも今回のように壊れ方が変わるため、意図したタイミングでだけ上げたい。

キャッシュキーに Swift の実バージョンを含める修正は、ツールチェーン更新時のキャッシュ戦略という別の論点なので本PRには含めていない。3.23.0 にすればバージョンの食い違い自体が無害になるため、まずこちらだけを入れる。

確認内容

手元(macOS / Swift 6.4)で、Dangerfile の評価が成功することと、3.22.0 では同じ手順が失敗することの両方を確認した。GitHubへ書き込まない danger-swift local を使用。

swift build --package-path DangerTools --scratch-path DangerTools/.build
cd DangerTools && swift run danger-swift local --base main --dangerfile Dangerfile.swift --cwd ..
  • 3.23.0 → Danger: ✓ passed review, received no feedback.
  • 3.22.0 に戻すと → ERROR: Dangerfile eval failed at Dangerfile.swift(CIと同じ失敗を再現)
  • swift build --package-path DangerTools 通過
  • このPRの danger ジョブが通る(run 36204326452)

🤖 Generated with Claude Code

https://claude.ai/code/session_011NkFuVWMJSeuaWUyHhqvrr

Swift 6.2のCIでDangerfileの評価が `no such module 'Danger'` で失敗していた。
3.23.0で、danger-swift自体をビルドしたコンパイラに依存せず
Danger.swiftmoduleの実体を探してモジュールを解決するよう修正されている。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011NkFuVWMJSeuaWUyHhqvrr
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 26, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-26T00:19:40.309023Z 7fea71f PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@stotic-dev
stotic-dev merged commit 95e6424 into main Sep 26, 2026
2 checks passed
@stotic-dev
stotic-dev deleted the chore/update-danger-swift branch September 26, 2026 00:22
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