Jenkinsfile からではなく、Jenkins から Jenkins パイプラインのスコープ付き環境変数を設定します。

Jenkinsfile からではなく、Jenkins から Jenkins パイプラインのスコープ付き環境変数を設定します。

パイプライン スクリプトから読み取ることができるように、ビルド構成にスコープ設定された Jenkins に非機密データを保存する方法はありますか?

新しい Octopus Deploy サーバーに移行しており、Jenkinsfile は次のようになります。

pipeline {
  environment {
    OCTOPUS_CLI_SERVER = "https://octopus.example.com"
    OCTOPUS_CLI_API_KEY = credentials("Octopus_Deploy_ApiKey")
  }
  // ...
}

Jenkins 資格情報マネージャーを介して API キーを集中的に更新できますが、OCTOPUS_CLI_SERVERURL がハードコードされているため、すべてのブランチで変更を編集してコミットする必要があります。これを変更する限り、新しい値をハードコードするよりも良い方法があるかどうか疑問に思っています。

できたOctopus サーバーの URL を認証情報マネージャーに保存し、同じ方法でアクセスしますが、その値はログから削除され、煩わしい場合があります。理想的には、私が探しているものは、複数のプロジェクトで異なる値を持つ可能性があります。たとえば、プロジェクト A とプロジェクト B の両方が「PUBLIC_DOMAIN」という名前の変数を読み取る可能性がありますが、一方は「a.example.com」を取得し、もう一方は「b.example.com」を取得します。

Octopus Deploy について言及したのは、たまたまそれが私たちが行っている変更だからです。ただし、この質問は Jenkins パイプラインからアクセスされるすべてのデータに当てはまる可能性があり、これは Octopus Deploy に固有のものではありません。

答え1

これを行う方法はほぼ無限にあります。ここでは、思いつく 3 つの方法を紹介します。

  • あなたはJenkins パイプライン共有ライブラリ構成値を中央の場所に保存します。

  • 値をリモート ファイルまたはリポジトリに保存し、パイプラインでリモート ファイルまたはリポジトリ内のファイルから値を読み取ることができます。

  • パイプラインで HTTP REST API 経由で別のサーバーから値を取得することもできます。

関連情報