ドメインモデル
注意: matrix
はまだ実装されていません。
ソースコード
ソースコードとは、ビルドやテスト、アプリケーションのパブリッシュに必要なコードとscrewdriver.yaml
を含む、指定されたSCMリポジトリとブランチのことです。
ステップ
ステップは名称付けされた処理すべきふるまいで、通常は単一のシェルコマンドです。要するに、Screwdriverはターミナルで/bin/sh
を起動し、全てのステップを実行します。レアケースですが、異なるターミナル/シェルでセットアップすると予期しない動作が発生することがあります。コマンドがゼロ以外の終了コードで終了した場合、そのステップは失敗とみなされます。環境変数は同じジョブの内であればステップ間で共有されます。
コンテナ
コンテナは隔離された環境でステップを実行します。異なる環境・バージョンで動作しているコードの互換性について、同時に実行されている他のビルドに影響を与えずにテストするために行われます。これはDockerコンテナを利用して実装されています。
ジョブ
ジョブとは、順番が設定された複数のステップを指定されたコンテナで実行することです。一連のステップのうちいずれかが失敗すると、ジョブ全体は失敗されたとみなされ、以降のステップはスキップされます。(そのように設定されていない場合を除く)
実際のジョブではソースコード の特定のコミットをチェックアウトし、求められた環境変数を設定し、指定されたステップを実行するという処理が行われます。
ジョブの実行中、実行されるステップでは次の3つのコンテキストが共有されます。
ジョブはソースコードへの変更やワークフローからのトリガーで自動的に開始します。UIから手動で開始することも可能です。
プルリクエスト
プルリクエストは既存のパイプラインジョブとは別に実行されます。ジョブ名がmain
のステップのみが実行されます。
ビルド
ビルドは実行中のジョブジョブのインスタンスのことを指します。すべてのビルドはユニークなビルド番号が振られています。また、各ビルドはイベントイベントに紐づいています。基本的なジョブ設定の場合、ジョブに対し一度に一つのビルドが実行されます。ジョブマトリクスが設定されていれば複数のビルドが並列に実行されます。
ビルドは次の5つのうちいずれかの状態を持ちます。
QUEUED
- ビルドはリソースの空きを待っていますRUNNING
- ビルドはexecutorで実行されていますSUCCESS
- 全てのステップが成功しましたFAILURE
- いずれかのステップが失敗しましたABORTED
- ユーザーが実行中のビルドをキャンセルしました
イベント
イベントはコミットやパイプラインの手動リスタートを表します。イベントには下記の2種類があります。
pipeline
: - パイプラインを手動で開始したりpull requestをマージしたりした場合に作られるイベントです。この種類のイベントは、パイプラインにおけるワークフローとしてのジョブと同じ順序でトリガーされます。(例:['main', 'publish', 'deploy']
)pr
: - pull requestの作成や更新により作られるイベントです。この種類のイベントは初めのジョブのみトリガーします。
メタデータ
メタデータはビルドに関連する情報を構造的に格納するkey/valueストレージです。メタデータは同じワークフロー内の後続のビルドと共有されます。ステップで利用できるmeta CLIを使用して、ビルド中に更新や取得することができます。
例:
$ meta set example.coverage 99.95
$ meta get example.coverage
99.95
$ meta get example
{"coverage":99.95}
詳しくはmetadata pageをご覧ください。
Workflow
ワークフローとは、初めのジョブのビルド成功後に実行されるジョブの順番のことです。ジョブは並列や逐次、またはその組み合わせで実行することができます。順序はrequires
キーで決定されます。
ワークフロー内で実行されるジョブは次の内容を共有します。
- 同じgitコミットからチェックアウトされたソースコード
- 初めのジョブからトリガーされて実行されるジョブからアクセスされるメタデータ
下記の(省略された)workflowセクションの例ではこのようなフローになっていて
jobs:
main:
requires: [~pr]
publish:
requires: [main]
deploy-west:
requires: [publish]
deploy-east:
requires: [publish]
validate-west:
requires: [deploy-west]
validate-east:
requires: [deploy-east]
pull-requestがベースブランチにマージされると次のように動作します。
main
が実行され、publish
をトリガーpublish
はdeploy-west
とdeploy-east
を並列でトリガーdeploy-west
はvalidate-west
をトリガーdeploy-east
はvalidate-east
をトリガー
パイプライン
パイプラインとは同じソースコードを共有するジョブジョブの集合を表します。これらのジョブはワークフローで定義された順で実行されます。