ソースパス

ソースパス機能を使うことで、特定のソースコードが更新された場合にのみジョブをトリガーすることができます。ジョブ定義の中で sourcePaths を文字列、または文字列の配列で設定することで利用できます。この機能は monorepo のサブディレクトリに基づいたワークフローを実現するのに役立ちます。

ソースパスの種類

特定のサブディレクトリと特定のファイルの両方をソースパスとして設定できます。サブディレクトリであることを示すには、 最後にスラッシュ (/) を付けます。設定するパスはリポジトリルートからの相対パスです。

以下のような構造のリポジトリを例とします:

┌── README.md
├── screwdriver.yaml
├── test/
│   └── ...
├── src/
│   ├── app/
│   │   ├── main.js
│   │   ├── ...
│   │   └── package.json
│   └── other/
│       └── ...
│
...

また、このような screwdriver.yaml があるとします:

jobs:
    main:
        image: node:6
        requires: [~pr, ~commit]
        sourcePaths: ["src/app/", "screwdriver.yaml"]
        steps:
            - echo: echo hi

この例では、main ジョブは src/app/ 以下にあるファイル (src/app/main.js, src/app/package.json など) の更新、または screwdriver.yaml の更新でトリガーされます。 しかし main ジョブは、README.md, test/ または src/other/ の更新ではトリガーされません

マッチしたソースパス

Screwdriverはビルドをトリガーしたソースパスを環境変数SD_SOURCE_PATHにセットします。この値は変更されたファイルのいずれかとマッチするsourcePathsの最初のパスになり、そのビルドをトリガしたソースパスに依存するスクリプトを書く場合に使用できます。

警告