同期と複数リポジトリ

ローカル CI

プッシュ → 待つ → 赤いバツ → 修正 → プッシュのループは、一往復ごとに 10 分を 無駄にします。act を使えば、同じワークフローがあなたの マシン上の Docker コンテナで動き、Gitcito がそれを操作します。ワークフローを 選び、実行を押して、CI が出力するはずの同じログを眺める — 何かがマシンの外へ 出る前に。

ローカル CI

ランタイムの同梱ではなく、連携です

Gitcito は意図的に act も Docker も同梱しません — コンテナランタイムを 引き連れたアプリは、git クライアントの対極です。これはオプトインの連携機能です。 設定 → 連携(またはダイアログ内)で有効にすると、Gitcito が何がインストール 済みかを検出し、残りを案内します — brew install act、起動中の Docker デーモン、それで完了です。有効化されている・act がインストールされている・ Docker に到達できる、の 3 つがすべてそろうまで、何も実行されません。

できること

  • .github/workflows 配下のすべてのワークフローを、その name: で一覧表示 します。
  • 実行は act でワークフローを作業ツリーに対して実行します — 未コミット の変更も含めて。それこそが狙いです:プッシュした後ではなく、コミットする前に テストできます。
  • 出力はダイアログにライブでストリームされ、停止で実行を打ち切れます。 終了コード 0 なら成功、それ以外はコード付きで失敗と表示されます。

グラフ上のコミットごとの判定

グラフ上の Local-CI 判定

実行が完了すると、その結果はテストしたコミットに留め付けられます。グラフ上の その行に小さなフラスコが付き、緑または赤で表示されるので、どのコミットが すでにローカルで CI を生き延びたかが一目でわかります。判定は refs/notes/gitcito-ci 配下の git ノートとして保存されます — あなたのマシンに ローカルなもので、デフォルトでプッシュされることはありません。

正直さのルール:判定が留め付けられるのは、作業ツリーがクリーンだったとき だけです。未コミットの変更を含む実行は、どのコミットにも含まれない何かを テストしたことになるので、結果はダイアログに表示されますが、何にも印は 付きません。

コミットや範囲をテスト — ブランチを離れずに

ダイアログのコミットや範囲をテストセクションは、いま自分がいない コミットに対してワークフローを実行します。各コミットはシステムの一時 ディレクトリ配下の使い捨てワークツリーに detached でチェックアウトされ、 act はそこで実行され、実行がどう終わってもワークツリーは削除されます — あなたの作業ツリーとブランチは決して動きません。そのチェックアウトは作り からしてまっさらなので、判定は必ずテストしたコミットに留め付けられます。 グラフでコミットを右クリックすると、このコミットでローカル CI を実行を 直接選べます。

コストは、何かが実行される前に提示されます — 後から発覚するのではありません。 リビジョンや範囲(main..HEAD、HEAD~5..、sha)を入力してプレビューを 押すと、指定に一致するコミットの数と、実際に実行される最新の N 件 — 上限 50 の明示的な予算 — を Gitcito が表示します。スイープはそれらを順番に実行し (act に Docker が加わると、並列実行はマシンを奪い合うほど重いのです)、 各実行のログをストリームし、各コミットの成否をライブで印し、停止は 実行中のものを打ち切りながらコミットの合間で中断します。コミットごとに実際 に数分かかると考えてください。

もうひとつ知っておくべき制限があります。使い捨てワークツリーにはコミットの ファイルは入っていますが、リポジトリのサブモジュールのチェックアウトは 入っていません — 初期化済みサブモジュールに依存するワークフローは、 サブモジュールのない新規クローン上と同じ挙動になります。

制限

  • act は GitHub のランナーの非常によくできた模倣であって、完璧ではありません。 GitHub がホストするサービスやシークレット、特殊なランナーイメージを必要とする アクションは、挙動が異なることがあります。ローカルのグリーンは有力な証拠で あって、保証ではありません。
  • 実行はリポジトリごとに同時に 1 つだけ。別の実行を始めると、最初の実行は キャンセルされます。
  • ワークフロー単位の実行のみです — 個別のジョブやマトリックス、イベントを選ぶ のは act の領分なので、フラグが必要なときは統合ターミナルで 実行してください。
  • 初回の実行ではランナーイメージをダウンロードします — 一度だけ時間がかかると 考えてください。

関連項目: ホスティングとプルリクエスト · 統合ターミナル

この翻訳を GitHub で改善