パイプラインステップとは?最小の作業単位
パイプラインステップとは、pipelineにおける最小の作業単位で、job内で実行される1つのコマンドまたは1つの再利用可能なアクションです。
jobがレシピだとすれば、ステップは個々の手順です。各ステップは1つのことを行います。リポジトリのチェックアウト、依存関係のインストール、テストスイートの実行、あるいはartifactのアップロードです。ステップはjob内で順に実行され、同じマシンとworkspaceを共有するため、後のステップは前のステップが生成したファイルを利用できます。
ステップが行うこと
ステップは、あなたが書くシェルコマンド(run: npm test)か、再利用するパッケージ化されたアクション(uses: actions/checkout)のいずれかです。ステップは上から下へ実行され、デフォルトでは1つのステップが失敗すると残りのjobは止まります。
ステップはworkspaceを共有する
job内のすべてのステップは同じrunner上で実行され、同じファイルシステムを見ます。だからこそ「checkout」ステップに続く「build」ステップが機能します。2つ目のステップは、1つ目がクローンしたファイルを見つけられるのです。状態は、明示的に渡さない限りjob間で引き継がれません。
簡単な例
最小限のjobには、リポジトリのチェックアウト、言語ツールチェーンのセットアップ、依存関係のインストール、テストの実行といったステップがあります。YAMLではsteps:の下の各項目が1つのステップであり、その順序が実行される順序です。
ステップの挙動を制御する
- 条件: 条件が満たされない限りステップをスキップする。
- Continue-on-error: ステップが失敗してもjobを続行させる。
- Environment: そのステップから見える変数を設定する。
- Working directory: 特定のフォルダでステップを実行する。
ステップとjobの比較
ステップは順次実行され、マシンを共有します。jobは別々のマシン上で並列に実行でき、互いに分離されています。ファイルを共有する順序付けられた作業にはステップを、同時に実行したい独立した作業にはjobを選びましょう。
ステップとpipelineの速度
遅いステップ(依存関係のインストール、大きなダウンロード)は多くのjobを支配します。それらのステップをキャッシュし、ウォームなマシンで開始するとコストが下がります。マネージドrunner(Latchkey)は依存関係とイメージのcacheをウォームに保つため、各jobの初期ステップがより速く終わります。
重要なポイント
- ステップは1つのコマンドまたはアクションで、job内の最小の単位です。
- ステップは順に実行され、同じworkspaceとマシンを共有します。
- 失敗したステップは、続行を許可しない限りデフォルトでjobを止めます。