アノテーション

アノテーションは自由形式なキーと値のデータセットで、ビルドの実行設定などを定義するのに用います。YAMLのアンカーやエイリアスのサンドボックスとしても利用することができます。

shared:
    template: example/mytemplate@stable
    annotations:
        foo: &bar               # アンカーを作成
            requires: [~pr, ~commit]
            image: node:lts

jobs:
    main:
        <<: *bar                  # アンカーを参照してアノテーションで定義した設定を使用する
        annotations:
            screwdriver.cd/cpu: HIGH                           # CPUのHIGHリソースを指定
            screwdriver.cd/buildPeriodically: H H(4-7) * * *   # 毎日午前4:00から午前7:59(UTC)の間にジョブを実行します

ジョブレベルのアノテーション

ジョブレベルのアノテーションはビルド環境の設定を変更するために利用します。ジョブレベルのアノテーションは特定のジョブやsharedで指定することができます。

以下のアノテーションはScrewdriver.cdでメンテナンスしているプラグインでサポートしています。ご利用のScrewdriverクラスタで利用可能なアノテーションはクラスタ管理者にお問い合わせください

beta.screwdriver.cdは deprecated となり、screwdriver.cdとなることに注意してください。ただし、今の所はbeta.screwdriver.cdのアノテーションでも利用できます。

アノテーション 説明
screwdriver.cd/buildCluster ビルドを実行するビルドクラスタ名 利用可能なビルドクラスタのリストは <API URL>/v4/buildclusters で確認できます。デフォルトでは managedByScrewdriver: true が設定されているクラスタにビルドがアサインされます。 あなたのリポジトリでの利用が許可されている任意のデフォルトクラスタや外部クラスタを選択することが可能です。(利用が許可されているリポジトリはscmOrganizationsで設定されます)
screwdriver.cd/buildPeriodically CRON表記
例: H 0 * * *

注意: 共有リソースへ急激に負荷がかかることを避けるため、「分」のフィールドは常に’H’(ハッシュを表す)を指定します。(実行頻度は最高でも1時間に1回です)
CRON表記については以下で確認ができます。https://crontab.guru/
cron表記にしたがって定期的にジョブを実行します。CRON表記のいずれの項目でも、H (あるいはH/5H(3-7)のような値)を指定すると、ジョブidのハッシュに基づいて、システムが該当箇所の値を指定した範囲内のものに置き換えます。例えば、H(3-5)は3, 4, 5のいずれかに置き換えられます。タイムゾーンはUTCです。
screwdriver.cd/collapseBuilds true / false true に設定したジョブでは BLOCKED 状態のビルドが最新のものに集約されます。
パイプライン全体に適用したい場合は shared に設定してください。
デフォルトの挙動はクラスタ設定によるので、クラスタ管理者に確認してください。
screwdriver.cd/cpu MICRO / LOW / HIGH / TURBO k8s executorを利用する場合、ユーザーは 0.5 (MICRO)、2 (LOW)、6 (HIGH) 、12 (TURBO) CPUの中から選択可能です。
k8s-vm executorを利用する場合は、1 (MICRO)、2 (LOW)、6 (HIGH)、12 (TURBO) CPU の中から選択可能です。
いずれの場合もデフォルト値はLOWとなります。
screwdriver.cd/executor クラスタ管理者にご確認ください ビルドの実行環境を指定します。VMやkubernetesポッド、dockerコンテナ、Jenkinsエージェントなどでビルドを実行するように設定できます。
screwdriver.cd/ram MICRO / LOW / HIGH / TURBO k8s executorを利用する場合、ユーザーは 1 GB (MICRO)、 2 GB (LOW)、12 GB (HIGH)、16 GB (TURBO) RAMの中から選択可能です。
k8s-vm executorを利用する場合は、1 GB (MICRO)、2 GB (LOW)、12 GB (HIGH)、 16 GB (TURBO) RAMの中から選択可能です。
いずれの場合もデフォルト値はLOWとなります。
screwdriver.cd/repoManifest Git リポジトリのチェックアウト URL です。例: https://github.com/org/repo.git/manifestFilePath.xml#branch

1. チェックアウト URL: https://github.com/org/repo.git (必須)
2. マニフェストファイルのパス: manifestFilePath.xml (オプション, デフォルトは default.xml)
3. ブランチ名: #branch (オプション, デフォルトは #master)
Repo は Git 上に構築されたリポジトリ管理ツールです。この値は repo マニフェスト xml ファイルを含む Git リポジトリのチェックアウト URL です。この値が指定されていると、Screwdriver は xml ファイルの設定に従ってソースコードをチェックアウトします。
screwdriver.cd/timeout 時間(分) ビルドがタイムアウトとなる時間(分)を指定できます。デフォルト値は90 分です。
screwdriver.cd/dockerEnabled true / false k8s executor利用時にtrueに設定するとビルドコンテナと一緒にDocker-in-Dockerコンテナが起動し、DockerビルドやDockerイメージの起動が可能になります。このフラグをユーザーのyamlで設定するのに加え、クラスタ管理者がdocker in docker機能を有効にしている必要があります。 (cluster-managementのページをご覧ください)
screwdriver.cd/dockerCpu MICRO / LOW / HIGH / TURBO k8s executorを利用していてDockerが有効な場合、Dockerコンテナで使用するCPU数を設定することができます。設定される値についてはscrewdriver.cd/cpuの説明をご覧ください。
screwdriver.cd/dockerRam MICRO / LOW / HIGH / TURBO k8s executorを利用していてDockerが有効な場合、Dockerコンテナで使用するメモリ容量を設定することができます。設定される値についてはscrewdriver.cd/ramの説明をご覧ください。
screwdriver.cd/coverageScope pipeline / job カバレッジプラグインを利用している場合に、プロジェクトを作成するスコープを設定できます。デフォルト値はクラスタの設定(e.g. COVERAGE_SONAR_ENTERPRISE)によるので、クラスタ管理者にご確認ください。
screwdriver.cd/displayName パイプライングラフに表示するジョブ名 パイプライングラフに表示するジョブ名を、yamlのユニーク制約に縛られない自由な名前にできます。
screwdriver.cd/mergeSharedSteps true / false テンプレートを利用している場合に、trueに設定するとsharedとjobに定義したstepsをマージします。デフォルトはfalseです。
screwdriver.cd/manualStartEnabled true / false これがfalseに設定されていると、UIでジョブを起動することができません。デフォルトはtrue です。
screwdriver.cd/terminationGracePeriodSeconds 時間(秒) ビルドが停止する前にteardownステップを実行するための猶予時間(秒)を設定できます。デフォルトは '60' 秒で、最大は '120' 秒です。殆どの場合、デフォルト以上の時間は必要ありません。
screwdriver.cd/blockedBySameJob true / false これがfalseに設定されていると、指定の待ち時間後に同一ジョブのビルドが同時に実行できるようになります。デフォルトの待ち時間は'5'分で、screwdriver.cd/blockedBySameJobWaitTimeアノテーションで変更することができます。
screwdriver.cd/blockedBySameJobWaitTime 時間(分) 同一ジョブのビルドを同時実行する際に発生する待ち時間を設定できます。デフォルトの待ち時間は'5'分です。
screwdriver.cd/jobDisabledByDefault true / false 定期的にビルドが実行されているパイプラインがfork・コピーされた際に、fork先でビルドが定期的に実行されることを防ぎたい場合があります。このアノテーションをtrueに設定すると、作成されたジョブははじめdisabledとなります。ユーザはUIからジョブをenabledにできます。デフォルトはfalseです。

パイプラインレベルのアノテーション

パイプラインレベルのアノテーションはパイプライン全体の設定を変更するために利用します。パイプラインレベルのアノテーションの指定箇所はジョブやsharedと同じです。これらのアノテーションはパイプラインのSCMブランチで設定される必要があるため、プルリクエストでは変更できません。

アノテーション 説明
screwdriver.cd/restrictPR none / all / fork / branch PRジョブが実行されないように制限します。none の場合は制限なしを意味します。all の場合はすべてのPRジョブ実行を制限します。fork はフォークされたリポジトリからのPRを制限します。branch はブランチからのPRを制限します。
screwdriver.cd/chainPR false / true デフォルトはfalseです。falseの場合、PRはrequires~prを設定しているジョブのみトリガーします。trueを指定した場合、PRはrequires~prを設定しているジョブだけでなく、その後続のジョブも順番にトリガーします。サンプルリポジトリ: https://github.com/screwdriver-cd-test/chain-pr-example
screwdriver.cd/pipelineDescription パイプラインの説明文 パイプラインページに説明文を表示します。
screwdriver.cd/useDeployKey false / true デフォルトはfalseです。ScrewdriverのビルドをユーザーのAWSアカウントで実行する場合、git checkoutのためにtrueを指定する必要があります。