ビルドタイムとランタイム
ワークフローには2つの異なるフェーズがあります:ビルドタイム
エディタでワークフローを設計する段階。ステップの定義、ツールの設定、依存関係の構成を行います。
ランタイム
ランナーがマニフェストを解釈し実行する段階。ステップが依存関係順に実行され、データが流れます。
実行タイムライン
ワークフローが実行されると、以下のタイムラインに従います:ステップ実行パターン
直列
依存関係のあるステップが順番に実行
並列
独立したステップが同時に実行
条件分岐
when条件がtrueの場合のみ実行ループ
forEachで各アイテムに対して繰り返し実行直列実行
needsを持つステップは依存関係を待ちます:
step_a → step_b → step_c
並列実行
共有の依存関係がないステップは並列に実行されます:input → (branch_a ∥ branch_b) → merge
条件分岐実行
条件ロジックにはwhenを使用:
ループ実行(forEach)
forEachでコレクションを処理:
障害モード
| 障害タイプ | 原因 | 処理 |
|---|---|---|
| 検証エラー | 無効な入力パラメータまたはマニフェスト | 実行が即座に停止 |
| ツールエラー | 外部サービスの障害またはタイムアウト | ステップが失敗としてマーク |
| タイムアウトエラー | ステップが設定された時間制限を超過 | ステップが終了 |
| 依存関係エラー | 必要なステップが失敗 | 依存ステップがスキップ |
| 条件エラー | 無効なwhen式 | 警告付きでステップがスキップ |
ステップ状態
各ステップは以下の状態を遷移します:| 状態 | 説明 |
|---|---|
| Pending | 依存関係の完了を待機中 |
| Running | 現在実行中 |
| Success | 正常に完了 |
| Failed | エラーで実行失敗 |
| Skipped | 条件が満たされないか依存関係が失敗 |
変数解決
変数は実行時に解決されます:| パターン | 解決先 |
|---|---|
{{inputs.name}} | 入力パラメータの値 |
{{steps.step_id.result}} | 完了したステップの完全な結果 |
{{steps.step_id.result.field}} | ステップ結果の特定フィールド |
{{secrets.KEY_NAME}} | ワークスペースシークレットからのクレデンシャル |
{{item}} | forEachループの現在のアイテム |
{{item.field}} | 現在のループアイテムのフィールド |
エラー処理のベストプラクティス
- 早期検証:INPUT_*ツールを使用して開始時にデータを検証
- 出力チェック:重要な操作の後に検証ステップを追加
- 条件の使用:
when句で異なる結果を処理 - 障害への設計:外部サービスが失敗した場合を考慮
- 履歴のレビュー:実行履歴を使用して障害を分析
デバッグのヒント
| 問題 | 解決策 |
|---|---|
| ステップが実行されない | needs依存関係が満たされているか確認 |
| 間違ったデータ | 変数参照構文を確認 |
| 条件が動作しない | 実際の値でwhen式をテスト |
| ループが反復しない | forEachターゲットが配列であることを確認 |
| タイムアウト | ステップのタイムアウトを増やすかロジックを最適化 |