クラウドベースの継続的インテグレーション(CI)サービスが支配する開発環境において、新しい GitHub CLI 拡張機能「 gh-signoff 」が登場し、テスト自動化に関する従来の考え方に挑戦しています。 Basecamp によって開発されたこのツールは、開発者がローカルでテストを実行し、手動で作業を承認することを可能にし、リモートCIランナーを使用せずに合格したステータスチェックを作成します。
gh-signoff についての重要ポイント
- 目的: 開発者がローカルでテストを実行し、手動で自分の作業を承認できるようにする
- 動作原理: コマンド
gh signoff
を通じて GitHub のステータスチェックを合格させる - 実行されるチェック: コミットされていない Git の変更がないことのみを確認する
- 行わないこと: テストの自動実行やテスト結果の公開
- インストール方法:
gh extension install basecamp/gh-signoff
- ライセンス: MIT
ローカルCIとクラウドCI:分かれる開発者コミュニティ
gh-signoff の導入は、開発者コミュニティ内で大きな議論を巻き起こしています。支持者は、現代の開発者マシンは、以前はクラウドインフラストラクチャを必要としていたテスト作業を処理するのに十分な性能を持っていると主張しています。この拡張機能の説明にあるように、「最近の開発者のラップトップは非常に高速です。それらは慢性的に活用されておらず、すでに所有しています。クラウドCIサービスは通常、遅く、高価で、レンタルです。」
しかし、多くの開発者はこのアプローチに対して深刻な懸念を表明しています。主な批判は再現性と信頼性に集中しています。あるコメント投稿者は、このツールが実際にテストが実行されたという検証なしに合格ステータスを作成していると指摘しました:
「これは単にリポジトリに合格ステータスを作成して、PRをマージできるようにするだけです。開発者が実際にローカルでテストを実行する義務はないので、ステータスチェックを無効にすることで時間を節約できます。」
これは、ソフトウェア開発プロセスにおける信頼と検証の間の根本的な緊張関係を浮き彫りにしています。
開発チームにおける信頼の要素
gh-signoff アプローチは、開発チーム内の信頼を基盤としています。このツールの擁護者は、従来のCIでも、決意のある開発者はテストコードを変更することでチェックを回避できると指摘しています。彼らは、承認プロセスを明示的にすることで説明責任が生まれると主張しています。
批判者は、問題は信頼ではなく人為的ミスだと反論します。25年以上のコーディング経験を持つある開発者が説明したように、最も注意深い開発者でもミスを犯します—デバッグ出力の削除を忘れたり、例外処理を更新しなかったり、クロスプラットフォームの互換性を確保しなかったりします。別のマシンでビルドを実行することは、開発者の意図や注意に関係なく、これらのエラーを捕捉するのに役立ちます。
分離と環境の一貫性に関する懸念
多くのコメント投稿者は、CIの価値は一貫した分離された環境を提供することにあると強調しました。テストが開発者マシンで実行される場合、その環境に特有の依存関係や構成のためにテストが合格する可能性があり、古典的な「自分のマシンでは動作する」問題につながります。いくつかの開発者は、ローカル実行が望ましい場合、環境の一貫性を確保するためにコンテナ化や仮想マシンの使用が必要になると提案しました。
複数のオペレーティングシステムやハードウェア構成でのテストが必要な複雑なシステムを扱う組織にとって、ローカルCIはますます非現実的になります。ある PyTorch 開発者が指摘したように、クラウドCIはローカルで複製することが不可能な必要な並列化と環境の多様性を提供します。
コストと制御のトレードオフ
CIの財務的側面は無視できません。組織が成長するにつれて、クラウドCIのコストは膨大になる可能性があります。あるコメント投稿者は、「エンジニアリング組織がある規模に達すると、CIコンピューティングに驚くほどの金額を費やすことになる」と指摘しました。gh-signoff アプローチは、既存の開発者ハードウェアを活用することで、大幅なコスト削減の可能性を提供します。
しかし、これには監査可能性とコンプライアンスにおけるトレードオフが伴います。いくつかのコメント投稿者は、中央集権型CIシステムはテストプロセスの文書化された証拠を提供すると指摘しました—これは監査や規制要件の対象となる組織にとって特に重要です。
gh-signoff ツールは開発ワークフローを再考する興味深い実験を表していますが、コミュニティのコンセンサスによれば、これは信頼度の高い小規模なチーム、シンプルなアプリケーション、最小限のコンプライアンス要件を持つ組織に最も適していると示唆されています。特に大規模な組織のほとんどにとって、従来のCIシステムはそのコストを上回るメリットを引き続き提供しています。
参考:gh-signoff