Yaml設定
ここではscrewdriver.yamlの主要な設定についてインタラクティブに紹介します。
各プロパティ名にマウスカーソルを乗せるとそれらの説明が表示されます。
shared: environment: NODE_ENV: test settings: email: addresses: [test@email.com, test2@email.com] statuses: [SUCCESS, FAILURE] annotations: beta.screwdriver.cd/my-cluster-annotation: my-data beta.screwdriver.cd/executor: k8s-vm screwdriver.cd/cpu: HIGH screwdriver.cd/ram: LOW parameters: region: "us-west-1" az: value: "zone 1" description: "default availability zone" jobs: main: requires: [~pr, ~commit, ~sd@123:main] sourcePaths: ["src/app/", "screwdriver.yaml"] image: node:lts steps: - init: npm install - test: npm test publish: requires: [main] template: node/publish@4.3.1 order: [init, publish, teardown-save-results] steps: - publish: npm install - teardown-save-results: cp ./results $SD_ARTIFACTS_DIR deploy-west: requires: [] image: node:lts environment: DEPLOY_ENV: west steps: - init: npm install - deploy: npm deploy deploy-east: requires: [deploy-west] image: node:lts environment: DEPLOY_ENV: east steps: - init: npm install - deploy: npm deploy finished: requires: [stage@deployment] image: node:lts steps: - echo: echo done stages: deployment: requires: [publish] jobs: [deploy-west, deploy-east] description: This stage is utilized for grouping jobs involved in deploying components to multiple regions.
Requires
ジョブ実行のトリガーとなる1つまたは複数のジョブの配列を設定します。"requires: ~pr"が設定されたジョブはプルリクエストがオープン、リオープン、更新された時に実行されます。"requires: ~commit"が設定されたジョブはPRがマージされた時や、パイプラインを作成しているブランチに直接commit/pushされた時、またはUIのStartボタンがクリックされた時に実行されます。"requires: ~sd@123:main"が設定されたジョブはパイプライン"123"の"main"ジョブの完了により実行されます。"requires: [deploy-west, deploy-east]"が設定されたジョブは"deploy-west"と"deploy-east"の両方のジョブの成功後に実行されます。"注意: ~ のジョブはOR条件で、~ なしのジョブはジョインの働きをします。"
Source Paths
オプションとして、ジョブ実行のトリガーとなるソースパスを指定することができます。この例では、"main"ジョブは"src/app/"ディレクトリ以下または"screwdriver.yaml"ファイルに変更が加えられた場合にのみ実行されます。この機能はGithub SCMでのみ使用できます。
Environment
ビルドに必要な環境変数のキーと値の組み合わせです。ジョブに設定できる全ての設定はSharedにも設定できますが、個別のジョブの設定により上書きされます。
Settings
Screwdriver.cdに追加されたビルドプラグインの設定です。
Annotations
アノテーションはキーと値の組み合わせです。パイプラインまたはジョブ単位で設定することができます。アノテーションのキーと値は任意に設定することができ、例えば、ビルドの実行方法を変更することができます。Screwdriverのクラスタ管理者にビルドの実行方法を変更するために、どのようなアノテーションがサポートされているか確認してください。
Executor annotation
デフォルト以外のExecutorでのビルドを実行したい場合に設定します。`jenkins`, `k8s-vm`が設定可能です。
CPU annotation
`k8s-vm` Executor を利用する場合にVMに割り当てられるCPUを設定します。`LOW`はデフォルトで設定され、2CPUが割り当てられ、`HIGH`は6CPU割り当てられます。
RAM annotation
`k8s-vm` Executor を利用する場合にVMに割り当てられるRAMを設定します。`LOW`はデフォルトで設定され、2GBのメモリが割り当てられ、`HIGH`は12GBのメモリが割り当てられます。
通知を送信するEmailアドレスと、通知を送信するステータスを設定します。
Parameters
キーと値の辞書です。`key: string`は`key:value`と簡潔に記述することもできます。
Jobs
ビルドの挙動を定義するジョブのリストです。
Image
ビルドで利用されるDockerイメージを指定します。ここでの設定は"docker pull"コマンドを利用する場合と同じものです。
Steps
コマンドラインで入力するように、ビルドで実行されるコマンドのリストを定義します。同じジョブ内では、環境変数はステップ間で受け渡されます。ステップの定義は全てのジョブに必須です。Screwdriverのステップとして予約語になっているため、ステップ名を'sd-'で始めることはできません。Screwdriverは'/bin/sh'をステップ実行のために使用するため、異なるターミナルやシェルを使用すると予期せぬ振る舞いをするかもしれません。
Template
あらかじめ定義されたジョブで、通常はDockerイメージとステップで構成されています。
Order
templateが定義されている場合のみ使用できます。特定の順序で実行する必要のあるステップ名です。templateとstepの中から、ジョブで定義されているstepを優先して選択します。
Teardown
ビルドの最後に必ず実行されるユーザー定義のステップ(前のステップが失敗したり、ビルドが中止された場合でも実行される)ステップ名は常に "teardown-"で始まります。
Stages
類似した目的を持つジョブをグループ化するために設計されたステージのリストです。
Jobs in a stage
ステージに属するジョブのリスト。1つまたは複数のジョブから構成されます。
Empty trigger
ステージ内のジョブは、ステージをトリガーするジョブのリストが終了した直後に、ステージ内の最初のジョブとして実行されるべきことを示す、空のトリガを持つことができます。
Requires a stage
ジョブは、ステージの終了後、特にステージ内の最後のジョブの終了後、または明示的に定義されている場合はティアダウンジョブの終了後に実行されることがある。