GitHub Pull Request Builder Plugin 使っている環境で手元ではテストが通るのに Jenkins では通らない場合
GitHub Pull Request Builder Plugin の PR ブランチビルドの挙動は以下のような状態で実行する
- マージ可能な場合はベースブランチにマージされた状態 (origin/pr/{pr}/merge)
- コンフリクトしている場合はPRブランチのHEAD状態 (commit hash)
表題の「手元ではテストが通るのに Jenkins では通らない場合」は表面上はコンフリクトはしないにも関わらず、ベース側に入った変更によってPRブランチ側が壊れることによって起こる。つまりコード上の意味がコンフリクトしているにも関わらず、表面的にマージされてテストされるため不可解な結果を生むことがある。
解決方法
- ベースブランチをPRブランチにマージする(または rebase する)
- 重要:GitHub 上でコンフリクト表示が出ているか否かは関係ない
PRのテスト結果の表示
GitHub 上に表示されるテスト結果のインジケータには上記のように2つのケースがあり、Jenkins 側のログを見ないと厳密に判断することができない。
GitHub 上での Conflict 表示でもある程度判断できるが、CI を通ったあとにベースブランチに変更が入って Conflict した場合は PR ブランチで再テストが走るまで過去の結果が表示されるため正確ではない。
備考
- origin/pr/{pr}/merge は普通に clone すると含まれないため、Jenkins が存在しない謎のコミットをビルドしているようにみえる
関連エントリー
- プルリクエストを送るときは大抵気が重い。 たとえ明かなバグ修正、すなわちマージされる公算が大きくても、些細なことでケチがついたりする。これがさらに機能追加みたいな「マージしてもしなく...
- GitHub Pages を GitHub Actions で PDF 化して releases にアップロード GitHub Pages を GitHub Actions で PDF 化して releases にアップロードするというのをやってみた。 ...
- 自宅 raspberrypi への prometheus セットアップとリモートの prometheus との連携 Public VPS 上の Ubuntu に prometheus と grafana をセットアップしたので、自宅のネットワークのメトリク...
- Gist に置いた JavaScript のベンチマークをとる デモ textContent innerText $().text() の比較ベンチ for of と単純な for の比較ベンチ ある要素...
- pcb2gcode へのプルリク ちっちゃな変更を3つほど送った。 add error for positive --zcut by cho45 · Pull Request...