Build Secrets

同一パイプラインのジョブ間でのみ共有されるSecretsを使うことができます。 ScrewdriverはSecretsを環境変数として書き込む機能を提供します。Secretsは環境変数として提供されるので、ビルド内で簡単に扱うことができます。

セキュリティ

Screwdriverチームは非常に真剣にセキュリティ問題に取り組んでおり、さまざまなサービス間の全てのトラフィックを暗号化しています。ユーザSecretsは暗号化されデータストアに保存され、Secretsの値はユーザによって許可されたビルドのみで利用されます。

セキュリティ意識の高いパイプライン管理者は、プルリクエストジョブでSecretsを利用することを望まないでしょう。悪意のあるプルリクエスト送信者が、管理者の同意なしにSecretsを利用可能にできるためです。しかし、mainジョブではSecretsが必要な場合があります。ScrewdriverはSecretsにallowInPR (デフォルト: false) というフラグを提供しています。これはプルリクエストジョブでSecretsを利用するために必要なフラグです。

SecretsはPipelineに紐付いているGitリポジトリの管理者のみ追加、変更または削除が可能です。”push”権限を持つユーザはSecretsのリストを取得できますが、Secretsの値を取得することはできません。

Secretsをジョブで利用する設定

利用を許可するSecretsのリストをパイプラインの設定に追加します。SecretsのキーにはA-Zと_のみ利用でき、文字で始まる必要があります。

以下の例では、NPM_TOKENというSecretsをpublishジョブに追加しています:

publish:
    steps:
        - publish-npm: npm publish
    secrets:
        # NPMへのパブリッシュで利用
        - NPM_TOKEN

任意のジョブにSecretsを追加することができます。

プルリクエストでのSecrets

セキュリティの観点から、プルリクエストジョブでのSecretsの利用は推奨されません。Secretsの設定を変更したscrewdriver.yamlを含むプルリクエストジョブを作成することが可能だからです。

プルリクエストジョブはmainジョブと同じ内容が実行されます。mainジョブでSecretsを使うよう設定ができますが、デフォルトではSecretsは利用できません。

main:
    steps:
        - my-step: maybeDoSomethingWithASecret.sh
    secrets:
        - MY_SECRET

UIまたはAPIでSecretsを作成した際、allowInPR を有効にし、main ジョブでSecretsを利用する設定をすることで、プルリクエストジョブでSecretsの利用が可能になります。

ユーザインタフェース

パイプラインのSecretsを作成する一番簡単な方法はScrewdriverのUIを使うことです。 Secrets UI

Secretsの作成

パイプラインページのオプションタブをクリックし、 グレーのテキストボックスにキーと値を入力し、Addボタンをクリックします。allowInPRのチェックボックスにチェックを入れると、プルリクエストジョブ内でSecretsの利用が可能になります。 オプションで、目のアイコンをクリックすることで入力した内容を確認することができます。

Secretsの更新

Secretsの値はUIから参照することはできませんが、更新は可能です。新しい値を更新したいキーの隣のテキストボックスに入力し、Updateボタンをクリックします。

Secretsの削除

削除したいSecretsのDeleteボタンをクリックします。