ドメインモデル

注意: matrix はまだ実装されていません。

Definition Runtime

ソースコード

ソースコードとは、ビルドやテスト、アプリケーションのパブリッシュに必要なコードとscrewdriver.yaml を含む、指定されたSCMリポジトリとブランチのことです。

ステップ

ステップは名称付けされた処理すべきふるまいで、通常は単一のシェルコマンドです。要するに、Screwdriverはターミナルで/bin/shを起動し、全てのステップを実行します。レアケースですが、異なるターミナル/シェルでセットアップすると予期しない動作が発生することがあります。コマンドがゼロ以外の終了コードで終了した場合、そのステップは失敗とみなされます。環境変数は同じジョブの内であればステップ間で共有されます。

コンテナ

コンテナは隔離された環境でステップを実行します。異なる環境・バージョンで動作しているコードの互換性について、同時に実行されている他のビルドに影響を与えずにテストするために行われます。これはDockerコンテナを利用して実装されています。

ジョブ

ジョブとは、順番が設定された複数のステップを指定されたコンテナで実行することです。一連のステップのうちいずれかが失敗すると、ジョブ全体は失敗されたとみなされ、以降のステップはスキップされます。(そのように設定されていない場合を除く)

実際のジョブではソースコード の特定のコミットをチェックアウトし、求められた環境変数を設定し、指定されたステップを実行するという処理が行われます。

ジョブの実行中、実行されるステップでは次の3つのコンテキストが共有されます。

ジョブはソースコードへの変更やワークフローからのトリガーで自動的に開始します。UIから手動で開始することも可能です。

プルリクエスト

プルリクエストは既存のパイプラインジョブとは別に実行されます。ジョブ名がmainのステップのみが実行されます。

ビルド

ビルドは実行中のジョブジョブのインスタンスのことを指します。すべてのビルドはユニークなビルド番号が振られています。また、各ビルドはイベントイベントに紐づいています。基本的なジョブ設定の場合、ジョブに対し一度に一つのビルドが実行されます。ジョブマトリクスが設定されていれば複数のビルドが並列に実行されます。

ビルドは次の5つのうちいずれかの状態を持ちます。

イベント

イベントはコミットやパイプラインの手動リスタートを表します。イベントには下記の2種類があります。

メタデータ

メタデータはビルドに関連する情報を構造的に格納する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キーで決定されます。

ワークフロー内で実行されるジョブは次の内容を共有します。

下記の(省略された)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がベースブランチにマージされると次のように動作します。

パイプライン

パイプラインとは同じソースコードを共有するジョブジョブの集合を表します。これらのジョブはワークフローで定義された順で実行されます。