パイプラインの親子設定(External config)

パイプラインの親子設定を利用することで1つの親パイプラインが、1つのscrewdriver.yamlで複数の子パイプラインのビルド構成を作成・管理できます。それぞれの子パイプラインのソースコードはそれぞれの子リポジトリから取得してきます。

この機能により、同じワークフローで複数のリポジトリを簡単に管理できます。

親パイプラインでのパイプラインの親子設定方法

親レポジトリのscrewdriver.yamlでは、childPipelinesというキーワードを使うことで、子パイプラインの定義をできます。 ScrewdriverはscmUrlsリストに基づいて子パイプラインを作成、削除します。また、子リポジトリに対しadmin権限を持っていることを確認してください。子パイプラインを管理するために必要となります。

childPipelines:
  scmUrls:
    - git@github.com:minz1027/test.template.git
    - git@github.com:minz1027/quickstart-generic.git#main
    # ソースディレクトリがルートでないパイプラインもURLの後に:<ソースディレクトリ>を追加することで子パイプラインにできます
    - git@github.com:minz1027/quickstart-generic.git#main:path/to/subdir
    # read-only SCM。このオプションが利用可能かどうかは、クラスタ管理者に問い合わせてください。
    - https://sd.gitlab.com/screwdriver-cd/data-schema.git

jobs:
  main:
    image: node:lts
    steps:
      - install: npm install
      - publish: npm publish

親子関係

パイプライン 権限
自身のパイプラインに対する全てのアクションと、子パイプラインへのcreate/delete/update/startアクション
自身のパイプラインに対するdelete/update以外の全てのアクション
また、デフォルトでは親から継承されたSecretsが利用されるが、そのSecretsへの上書き

子パイプラインのビルドは、$SD_CONFIG_DIRにある親パイプラインのリポジトリにアクセスすることができます。

子パイプラインの管理

親パイプラインの screwdriver.yaml に子パイプラインの SCM URL を追加すると、子パイプラインはアクティブ状態で作成されます。

親パイプラインの screwdriver.yaml から子パイプラインの SCM URL を削除すると、子パイプラインの状態はインアクティブに設定されます。

親パイプラインの管理者は、インアクティブな子パイプラインを以下のように管理できます。

External config child pipeline state

ユーザーインタフェース

親パイプライン UI:

External config parent

子パイプライン UI:

アクティブな子パイプライン:

External config child pipeline

インアクティブな子パイプライン:

インアクティブな子パイプラインにはできる操作が限られています。

External config inactive child pipeline

子パイプラインは親パイプラインのシークレットを継承:

External config child pipeline inheriting secrets

サンプルリポジトリ: https://github.com/screwdriver-cd-test/external-config-example