シークレット、パラメーター、およびプロパティーのカスタマイズ
実行時にパイプラインとの間でデータの読み取り/書き込みを行うには、pipelinectl コマンドを使用します。 pipelinectl インターフェースを使用して、シークレット、変数、リポジトリー・データ、成果物データ、エビデンスの結果の成果物 (テストの結果のファイルなど) を読み取ったり、書き込んだりすることができます。
スクリプトまたは基本イメージ用に pipelinectl ツールをインストールする必要はありません。参照パイプラインによって、スクリプトのコンテキストに対応するバイナリー・ファイルが提供されます。
パイプライン環境のシークレットとプロパティーへのアクセス
環境プロパティーおよびシークレット (パイプライン UI で定義される) には、次のように pipelinectl
を使用してアクセスできます。
# if you set my_config_value on the UI, it's accessible via `get_env`
my_config_value=$(get_env my_config_value)
次のように set_env
を使用して、他にも変数を設定することができます。
set_env my_config_value "some value"
# later on, even in another stage
my_config_value=$(get_env my_config_value)
これらの値は永続するものではなく、1 回のパイプラインの実行でのみ使用されます。
例
パイプライン UI に必要なパラメーターを追加することで、独自のビルド用の Artifactory 認証資格情報を作成することができます。
my-artifactory-email
my-artifactory-user
my-artifactory-password
my-artifactory-url
これらのパラメーターをパイプラインで使用できる場合は、ユーザー・スクリプトでこれらにアクセスして Docker 認証 JSON ファイルを作成できます。 以下に例を示します。
kubectl create secret docker-registry regcred \
--o json \
--dry-run=client \
--docker-server="$(get_env my-artifactory-url)" \
--docker-username="$(get_env my-artifactory-user)" \
--docker-email="$(get_env my-artifactory-email)" \
--docker-password="$(get_env my-artifactory-password)" \
| jq -r '.data[".dockerconfigjson"]'
{"auths":{"us.icr.io":{"username":"user@ibm.com","password":"secret-password","email":"user@ibm.com","auth":"dXNlckBpYm0uY29tOnNlY3JldC1wYXNzd29yZA=="}}}
カスタム・スクリプトのパラメーター
パイプライン環境変数とシークレットに加えて、これらのパラメーター値がユーザー・スクリプト・ステージ用に提供されています。
ユーザー・スクリプトで pipelinectl
コマンドを使用して、リポジトリー、成果物、ファイル、および環境変数にアクセスできます。 メソッド list_repos
、load_repo
、load_artifact
、list_artifacts
、および get_env
を使用します。
pipelinectl
app-repo
は、内部的に複製され、save_repo pipelinectl
インターフェースを使用して app-repo
の参照名でパイプラインに追加される、デフォルトのアプリ・リポジトリーです。 ツールチェーン・テンプレートからパイプラインをセットアップすると、デフォルトのリポジトリーが、リポジトリー・パイプライン UI のパラメーターによって提供されるか、そのツールチェーン・バインディング名で選択されます。
保存された load_repo
のプロパティーにアクセスするには、app-repo
コマンドを使用します。
の値 /config/
以前のバージョンとのユーザー・スクリプトの互換性をサポートするために、これらの値は /config/
にコピーされます。 これらのファイルを使用できるかどうかは、パイプラインのコンテキストに依存するため、これらのファイルの値を使用する前にファイルが使用可能であることを確認してください。
パス | 説明 |
---|---|
/config/api-key |
以前のバージョンとのスクリプトの互換性のためにコピーされた ibmcloud-api-key の値。 |
/workspace/git-token |
以前のバージョンとのスクリプトの互換性のために、パイプラインの開始時点で取得される Git トークン。 |
/config/environment |
インベントリーのデプロイメント・ターゲット環境。 |
/config/deployment-delta-path |
デプロイメント・デルタを含む JSON ファイルのパス。 |
/config/inventory-path |
インベントリー・リポジトリー・コンテンツのパス。 |
/config/git-branch |
アプリ・リポジトリーの現在チェックアウトされている Git ブランチ。 |
/config/git-commit |
チェックアウトされたアプリ・リポジトリーの最新の Git コミット。 |
/config/repository-url |
アプリ・リポジトリーの URL。 |
/config/inventory-url |
インベントリー・リポジトリーの URL。 |
/config/image |
イメージのレジストリー、名前空間、名前、およびダイジェストを含む、ビルドされた Docker イメージ成果物。 |
/config/artifact |
イメージのレジストリー、名前空間、名前、およびダイジェストを含む、ビルドされた Docker イメージ成果物。 |
/config/signature |
イメージ成果物の署名。 |
これらの値は段階的に廃止され、pipelinectl によるステージ入出力インターフェースに置き換えられます。
環境変数
以下の表に、パイプラインによって提供されるカスタム・スクリプト・ステージのコンテキストのデフォルト ENV 変数を示します。
パス | 説明 |
---|---|
BUILD_NUMBER |
Tekton パイプラインのビルド番号。 |
PIPELINE_CONFIG_PATH |
パイプライン・スクリプト・ライブラリーのルートのパス。 |
PIPELINE_CONFIG_REPO_PATH |
パイプラインの config-repo が複製されるディレクトリー。 |
PIPELINE_RUN_NAME |
Tekton パイプラインの実行名。 |
PIPELINE_RUN_ID |
Tekton パイプラインの実行 ID。 |
PIPELINE_RUN_URL |
Tekton パイプラインの実行 URL。 |
PIPELINE_ID |
Tekton パイプライン ID。 |
STAGE |
ユーザー・スクリプトのステージ。 |
TOOLCHAIN_DATA_PATH |
ツールチェーン・データ・パス /toolchain/toolchain.json ファイル。 |
TRIGGER_TYPE |
パイプラインのトリガー・タイプ。 |
TRIGGER_NAME |
パイプラインのトリガー名。 |
TRIGGERED_BY |
パイプラインをトリガーしたユーザーに関する情報。 この値は、E メール・アドレスか、時間によりトリガーされるパイプライン実行になります。 |
WORKSPACE |
共有ワークスペースのパス。 |
PIPELINE_STATUS |
パイプラインの実行の状況。 「成功」、「失敗」、またはブランクにすることができます。 PIPELINE_STATUS は、終了ステージでのみ使用可能です。 |
INVENTORY_URL |
インベントリー・リポジトリーの URL。 |
EVIDENCE_LOCKER_URL |
エビデンス・リポジトリー URL。 |
INCIDENT_ISSUES_URL |
問題のリポジトリー URL。 |
これらの環境変数には、任意のスクリプト ( ${PIPELINE_ID}
など) でアクセスできます。
カスタム・スクリプトからのツールチェーン・データへのアクセス
toolchain.json file
環境変数に格納されたパスの位置にパイプラインによって提供された TOOLCHAIN_DATA_PATH
から、ツールチェーン・データを読み取ることができます。 また、ツールチェーン統合と jsonpath
を使用し、/config
にあるそれらに、他の変数と同様の方法でアクセスすることもできます。 あるいは、get_env
を使用することによってもアクセスできます。
使用例
TOOLCHAIN_CONFIG_JSON="$(get_env TOOLCHAIN_CONFIG_JSON)"
toolchain_id=$(jq -r '.toolchain_guid' "$TOOLCHAIN_CONFIG_JSON")
カスタム終了ステージ
終了ステージには、以下の 3 つのステップがあります。
手順 | 説明 |
---|---|
evaluate |
ログ・ファイル、成果物、および証拠を証拠ロッカーに収集およびアップロードすることに関連するタスクを実行する、カスタマイズ不可のステップ。 |
prepare |
カスタム終了ステージを実行するために必要なツールをセットアップするカスタマイズ不能なステップ。 |
finish |
.one-pipeline-config.yaml で提供されているカスタム・スクリプトを実行します。 |
このパイプラインの状況は、以下の 2 つの方法で判別できます。
- パイプライン実行の全体的な状況は、環境変数
PIPELINE_STATUS
から取得できます。 値は、「Succeeded」、「Failed」、または「"」(大/小文字の区別あり) のいずれかです。PIPELINE_STATUS
は、基礎となる Tekton フレームワークから提供されます。 evaluate
ステップはエビデンスの観点からパイプライン実行を評価するため、この評価はPIPELINE_STATUS
で設定された値とは異なる場合があります。 エビデンス評価に基づいてパイプラインの状況を表示するには、環境変数finish_evaluate_exit_code
を使用します。