pipelinectl
pipelinectl DevSecOps パイプライン内で、タスクとコンプライアンス自動化スクリプトの間でデータを共有するために使用できる、軽量なキーバリューストアです。
このツールの使用場所について詳しくは、 パイプラインへのテスト・ステップおよびビルド・ステップの追加 を参照してください。
Cloud Object Storage パイプラインデータの設定
Cloud Object Storage (COS) は、ビルド成果物、テストレポート、中間ファイルなどのパイプラインデータ向けに、容量無制限の永続ストレージを提供します。 デフォルトのローカルストレージとは異なり、COSに保存されたファイルはパイプラインの実行を超えて保持され、異なるパイプライン間で共有することができます。
pipelinectl COSバケットを明示的な永続ストレージとしてサポートするコマンドは以下の通りです:
監査およびコンプライアンスの要件により、COSバケットは証拠保管庫のバケットとは別のものである必要があります。
パイプラインデータ用にCOSを設定する
COSをpipelinectlのファイル操作で利用するには、以下の設定手順を実行してください:
- データバケットを作成する
- 既存の Cloud Object Storage インスタンスを使用することも、新しいインスタンスを作成することもできます。 『 Cloud Object Storage の設定 』の手順に従って、以下の操作を行ってください:
- データ用バケットを作成してください(証拠保管用バケットとは別のものにする必要があります)
- バケット用のサービス認証情報を作成する
- IAMの権限を設定する
データバケットのサービス認証情報に、 Writer、 Object Writer、 Reader、 およびContent Reader の各ロールを割り当ててください。
詳しい手順については、「 バケットへのアクセス権限 」を参照してください。
- 環境プロパティの設定
DevSecOps パイプラインに、以下の環境プロパティを追加してください:
| プロパティー (Property) | タイプ | 値 | 説明 |
|---|---|---|---|
data-cos-api-key |
セキュア | お客様のCOS APIキー | サービス認証情報に含まれるAPIキー |
data-cos-bucket-name |
テキスト | バケット名 | データバケットの名前 |
data-cos-endpoint |
テキスト | COSエンドポイント URL | バケットのリージョンに対するエンドポイント |
COSエンドポイント( URL )を確認するには、バケットの 「設定」 ページにアクセスし、そのバケットのリージョンに対応するエンドポイント(例: s3.us-south.cloud-object-storage.appdomain.cloud )をコピーしてください。パフォーマンスとセキュリティを向上させるため、可能な場合はダイレクトエンドポイントまたはプライベートエンドポイントを使用してください。
機密性の高い認証情報を保護するため、APIキーをセキュアプロパティとして保存してください。
- バケットのライフサイクルを設定する(推奨)
古いパイプラインデータを自動的に削除するようにライフサイクルポリシーを設定します。 ほとんどのパイプラインデータについては、有効期限を7日間に設定することを推奨します。 手順については、「 ライフサイクルポリシー 」を参照してください。
COSデータの範囲について
save_result や set_env コマンドは個々のパイプライン実行ごとにスコープが限定されますが、COS バックエンド(--storage=cos )を使用したファイル操作は、すべてのパイプライン実行を通じて維持される共有バケットに対して行われます。
主な行動:
実行の自動分離は行われません :異なるパイプライン実行で同じキーを使用して保存されたファイルは、互いに上書きされます。
共有バケットネームスペース :同じCOS設定を使用するすべてのパイプライン実行は、同じバケットネームスペースを共有します。
永続ストレージ :ファイルは、明示的に削除されるか、バケットのライフサイクルルールによって有効期限が切れるまで、COS内に残ります。
範囲の比較:
| コマンド | スコープ | 永続性 |
|---|---|---|
save_result |
単一パイプラインの実行 | ランニング専用 |
set_env |
単一パイプラインの実行 | ランニング専用 |
save_file (ローカル) |
単一パイプラインの実行 | ランニング専用 |
save_file --storage=cos |
すべての実行で共有される | 持続 |
list_files --storage=cos を使用すると、このコマンドは現在のパイプライン実行からのファイルだけでなく、設定されたバケット内のすべてのファイルを返します。 プレフィックス検索を使って検索結果を絞り込みます。
COSファイル操作のベストプラクティス
Cloud Object Storage でファイルを効果的に整理・管理し、意図しないデータの上書きを防ぐために、以下のベストプラクティスに従ってください。
競合の回避
データの上書きや競合を防ぐために:
- キーに一意の識別子を含める(例:パイプライン実行ID、タイムスタンプ)
- 階層的なキーパターンを使用します:
project/component/run-id/filename - 修飾子のない「
build-artifact」のような汎用的なキーは避けてください
対立の例:
# Pipeline Run 1
save_file --storage=cos build-artifact ./dist/app-v1.0.0.tar.gz
# Pipeline Run 2 (overwrites Run 1's file!)
save_file --storage=cos build-artifact ./dist/app-v2.0.0.tar.gz
安全な使用例:
# Pipeline Run 1
save_file --storage=cos "build-artifact-${PIPELINE_RUN_ID}" ./dist/app-v1.0.0.tar.gz
# Pipeline Run 2 (separate key, no conflict)
save_file --storage=cos "build-artifact-${PIPELINE_RUN_ID}" ./dist/app-v2.0.0.tar.gz
主要な命名規則
階層型パターンを使用する
説明的で階層的なキー名を使ってファイルを整理する:
# Good: Organized, descriptive
save_file --storage=cos "artifacts/build/${PIPELINE_RUN_ID}/app.tar.gz" ./dist/app.tar.gz
save_file --storage=cos "reports/security/${BUILD_NUMBER}/scan.json" ./scan-results.json
# Avoid: Flat, generic
save_file --storage=cos "artifact" ./dist/app.tar.gz
一意の識別子を含める
変数を使用して、パイプラインの実行ごとにキーを一意にするには:
- パイプライン実行ID:
${PIPELINE_RUN_ID} - ビルド番号:
${BUILD_NUMBER} - タイム・スタンプ:
$(date +%Y%m%d-%H%M%S) - Git コミット SHA:
${GIT_COMMIT}
わかりやすい名前をつける
ファイルの目的が明確に伝わる、意味のある名前を選んでください:
# Good: Clear purpose
save_file --storage=cos "ui-service-image-${VERSION}" ./image.tar
# Avoid: Ambiguous
save_file --storage=cos "img" ./image.tar
予約済みのプレフィックスは使用しないでください
devsecops-pipeline-data/ で始まるキー(例: devsecops-pipeline-data/path/to/file )は使用しないでください。 devsecops-pipeline-data/ というプレフィックスは、内部のパイプライン処理用に予約されています。 予約済みプレフィックスを使用すると、データの破損やパイプラインの障害が発生する可能性があります。
フィルタリングと検索
ファイルの一覧表示時に、プレフィックスによるフィルタリングを使用して結果を絞り込むには:
# List all artifacts for a specific project
list_files --storage=cos "myproject/artifacts/"
# List security reports for a specific date
list_files --storage=cos "reports/security/2024-01-15"
一時ファイルを明示的に削除する
ファイルが不要になった場合は、明示的に削除してください:
remove_file --storage=cos "temp/build-${PIPELINE_RUN_ID}/cache.tar"
セキュリティーに関する考慮事項
- APIキーの管理 :
data-cos-api-keyは常に安全なプロパティとして保存してください。 スクリプトや設定ファイルにAPIキーをハードコードしてはいけません。 - 最小権限の原則 :上記に記載された、必要最小限のIAM権限のみを付与してください。
- バケットの分離 :パイプラインデータ用に専用のバケットを使用し、証拠保管用バケットとは区別してください。
使用法
pipelinectl はシングル・バイナリーとして提供されています。 その動作は、その名前 ( busyboxなど) によって異なります。 pipelinectl として呼び出すには、このプログラムを最初の引数として指定する必要があります。例えば、pipelinectl get_data のように指定します。
使用可能な別名およびメソッド:
- set_env
- 環境変数を設定する
- get_env
- リスト環境
- セット・シークレット
- ゲットシークレット
- リスト_秘密
- 削除_秘密
- save_file
- load_file
- リスト_ファイル
- 削除ファイル
- save_repo
- list_repos
- load_repo
- save_result
- list_results
- load_result
- save_artifact
- list_artifacts
- load_artifact
- put_data
- get_data
- シリアライズ
- デシリアライズ
- 資産の保存
- ロード資産
- 証拠の保存
- ロードのエビデンス
- 証拠の削除(delete_エビデンス)
set_env
# <key>: The name of the environment variable e.g. pipeline-namespace, app-name
# <value>: Value of the key
set_env <key> # reads <value> from `stdin`
set_env <key> <value>
任意の文字列を保存し、後でその文字列を get_env を使用して取得することができます。
引 <value> 数が指定されていない場合、標準入力 set_env から読み込みます。 set_env また、一度に設定する複数のキーと値のペアを渡すこともサポートしています。
次に例を示します。
# set value provided as argument
set_env app-name "my-app-name"
# set value provided via stdin
echo "my-app-name" | set_env app-name
set_env my-api-key < /config/my-api-key
# set multiple key value pairs
set_env key-1 "value-1" \
key-2 "value-2" \
key-n "value-n"
環境変数を設定する
# <key>: The name of the environment variable e.g. pipeline-namespace, app-name
# <value>: Value of the key
set_envc <key> # reads <value> from `stdin`
set_envc <key> <value>
変更不可能な任意の文字列を保存し、後で get_env で後で取得できる不変の任意の文字列を保存します。 一度で保存されると set_envc、それ以降の set_env 呼び出しによって変更することは set_envc できません。
引 <value> 数が指定されていない場合、標準入力 set_envc から読み込みます。 set_envc また、一度に設定する複数のキーと値のペアを渡すこともサポートしています。
- 一度で設定されると
set_envc、そのキーは以降の呼び出しによって上書きset_envcすることはできません。set_env - set_env で一度設定された変数は、.
set_envcで上書きすることはできません。
次に例を示します。
# set value provided as argument
set_envc app-name "my-app-name"
# set value provided via stdin
echo "my-app-name" | set_envc app-name
set_envc my-api-key < /config/my-api-key
# set multiple key value pairs
set_envc key-1 "value-1" \
key-2 "value-2" \
key-n "value-n"
get_env
# <key>: The name of the environment variable e.g. pipeline-namespace, app-name
get_env <key> [default]
保管されている構成値を (次の順序で) 出力します。
set_envを指定したkeyが過去に使用されていた場合は、その値を取得します。- ファイル
$CONFIG_DIR/$keyを読み取ろうとします (CONFIG_DIRはデフォルトでは/configです)。 - 指定されているデフォルト値を出力します (指定されている場合)。
- エラーメッセージを表示し、0 以外の終了コードを返します
次に例を示します。
get_env app-name "default-app-name"
リスト
list_env
set_env プロセスから保存されたキーと環境変数を表示する。
次に例を示します。
list_env
セット・シークレット
# <key>: The name of the secret e.g. artifactory-token, (short-lived) iam-token
# <value>: Value of the secret
set_secret <key> # reads <value> from `stdin`
set_secret <key> <value>
で後で取り出すことができる秘密を保存します。 get_secret.
<value> 引数が指定されていない場合、 set_secret は標準入力からその引数を読み込みます。
set_secretで設定された内容はシリアライズされないため、サブパイプライン/非同期パイプラインランをまたいで利用することはできません。- このコマンドの実行に関するデバッグログを無効にし、保存されたシークレットの内容がデバッグログにも表示されないようにしてください。
- スクリプトやロジックが、
set_secretの出力に依存しないようにする( ::add-mask::機能を 利用して、秘密の値をマスクするためにprint文が実行される)
次に例を示します。
# set value provided as argument
set_secret my-secret-key "my-secret-content"
# set value provided via stdin
echo "my-secret-content" | set_secret my-secret
set_secret my-api-key < /config/my-api-key
# set multiple key value pairs
set_secret secret-key-1 "value-1" \
secret-key-2 "value-2" \
secret-key-n "value-n"
ゲット・シークレット
# <key>: The name of the secret set with set_secret or set as Secure Value in pipeline UI
get_secret <key> [default]
保存されているシークレット値を取得します(以下の順序で):
set_secretを指定したkeyが過去に使用されていた場合は、その値を取得します。- ファイル
$SECRET_CONFIG_DIR/$keyを読み取ろうとします (SECRET_CONFIG_DIRはデフォルトでは/config/secure-propertiesです)。 - 指定されているデフォルト値を出力します (指定されている場合)。
- エラーメッセージを表示し、0 以外の終了コードを返します
次に例を示します。
get_secret cookie-token "default-token"
get_secret specific-account-ibmcloud-api-key "$(get_secret ibmcloud-api-key "")"
機密値が格納されている変数は、常に引用符で囲んでください
シェル変数に秘密の値を格納し、その変数を使用する際は、必ずダブルクォートで囲んでください。 引用符を付けないと、シェルはコマンドに値を渡す前に、その値を複数の単語に分割してしまうことがあります。
機密情報が含まれる変数については、引用符で囲まない形で使用しないでください。
export API_KEY=$(get_secret my-api-key)
# Unsafe: a multi-line secret value is not passed intact.
# Parts of the secret may appear unmasked in the pipeline log.
some-cli login --apikey $API_KEY
値をそのまま保持するには、変数を必ず引用符で囲んでください。
export API_KEY=$(get_secret my-api-key)
# Safe: the value is passed as a single, intact string.
some-cli login --apikey "$API_KEY"
このルールは、変数が使用されるあらゆる場面――コマンドの引数、文字列補間、あるいはファイルへの書き込み時など――に適用されます。
# Safe
curl -H "Authorization: Bearer $API_KEY" https://example.com/api
echo "$API_KEY" > /tmp/credentials.txt
リスト_秘密
list_secrets
set_secret プロセスと Secure Value タイプの環境変数から保存されたキーをパイプライン UI に表示します。
次に例を示します。
list_secrets
削除_秘密
remove_secret <key>
このコマンドは、 set_secret を使用して保存された、pipelinectl 内に保存されたシークレットの設定を解除します。
save_file
# <identifier>: Name used to store and retrieve the file (for example, 'build-artifact', 'my-report')
# <path>: Path to the file on the local filesystem (for example, './dist/app.tar.gz')
save_file <identifier> <path>
任意のファイルを保存します。このファイルは、後で load_file を使用して取得できます。
ディレクトリーはサポートされていません。
ローカルストレージ(デフォルト):
ファイルはパイプラインワークスペースに保存され、現在のパイプライン実行の範囲内に限定されます。
save_file some_config ./config.yaml
COSストレージ:
ファイルは Cloud Object Storage に保存され、パイプラインの実行をまたいで保持されます。 共有バケットの動作に関する重要な情報については、「 データスコープと永続性 」を参照してください。
前提条件:COSが設定されていることを確認してください。 Cloud Object Storage の設定を 参照してください。
# Save with run-specific key
save_file --storage=cos "build-artifact-${PIPELINE_RUN_ID}" ./dist/app-v1.2.3.tar.gz
# Save with hierarchical key
save_file --storage=cos "artifacts/ui-service/${BUILD_NUMBER}/image.tar" ./image.tar
# Save report with timestamp
save_file --storage=cos "reports/security/$(date +%Y%m%d)/scan.json" ./scan-results.json
load_file
# <identifier>: Name of the file to retrieve (for example, 'build-artifact', 'my-report')
load_file <identifier>
保存されているファイルを stdout に出力します。
ローカルストレージ(デフォルト):
現在の実行のパイプラインワークスペースに保存されているファイルを取得します。
load_file some_config > some_config.yaml
COSストレージ:
Cloud Object Storage からファイルを取得します。
前提条件:COSが設定されていることを確認してください。 Cloud Object Storage の設定を 参照してください。
# Load file and print to stdout
load_file --storage=cos "build-artifact-${PIPELINE_RUN_ID}"
# Load file and save to local filesystem
load_file --storage=cos "artifacts/ui-service/${BUILD_NUMBER}/image.tar" > ./downloaded-image.tar
リスト_ファイル
save_file 経由で保存されたすべてのファイルを一覧表示します。オプションで、キーのプレフィックスでフィルタリングすることもできます。
# <prefix>: (optional) Filter results to keys starting with this prefix
list_files <prefix>
ファイルキーのリストを stdout に出力します。
ローカルストレージ(デフォルト):
現在の実行において、パイプラインワークスペースに保存されているファイルを一覧表示します。
list_files # lists all saved files
list_files saved-reports- # lists files with "saved-reports-" prefix
COSストレージ:
Cloud Object Storage にあるファイルを一覧表示します。 設定されたバケット内のすべてのファイルを返します。現在のパイプライン実行で生成されたファイルのみではありません。 オプションのプレフィックスパラメータを使用して、結果をフィルタリングし、特定のファイルに絞り込むことができます。
前提条件:COSが設定されていることを確認してください。 Cloud Object Storage の設定を 参照してください。
# List all files in bucket (may include files from multiple runs)
list_files --storage=cos
# List files with specific prefix to narrow results
list_files --storage=cos "artifacts/ui-service/"
# List files for specific date
list_files --storage=cos "reports/security/20240115"
削除ファイル
保存されたファイルを削除します。
# <identifier>: Name of the file to remove (for example, 'build-artifact', 'my-report')
remove_file <identifier>
ローカルストレージ(デフォルト):
現在の実行におけるパイプラインワークスペースからファイルを削除します。
remove_file my-report
COSストレージ:
Cloud Object Storage からファイルを削除します。
前提条件:COSが設定されていることを確認してください。 Cloud Object Storage の設定を 参照してください。
# Remove specific file
remove_file --storage=cos "build-artifact-${PIPELINE_RUN_ID}"
# Remove temporary file
remove_file --storage=cos "temp/cache-${BUILD_NUMBER}.tar"
save_repo
# <key>: Key of the repository e.g. repository name
# <prop>: Type of the property, e.g. url, branch, commit etc.
# <value>: Value of the property
save_repo <key> [<prop>=<value> ...]
新規リポジトリーをパイプラインに登録するか、既存リポジトリーを更新します。
サポートされているプロパティーは、以下のとおりです。
url: リポジトリのクローン作成に使用できる URL。path: ワークスペースのルートを基準とする複製リポジトリーの相対的な場所。
他のプロパティ名も使用できますが、名前が重複するのを避けるため、サービス固有の識別子をプレフィックスとして付ける必要があります。たとえば、 foo ではなく、 my-service.foo を使用します。
次に例を示します。
save_repo app_ui "url=${REPO_URL}" "path=app_ui_repo"
save_repo app_ui "branch=${REPO_BRANCH}"
save_repo app_ui "commit=${REPO_SHA}"
# any additional property can be added
save_repo app_ui "commit=${REPO_SHA}"
値ソースとしての stdin の使用
以下の条件に該当する場合は、stdin から値を指定できます。
- コンテンツはコマンド用にストリーミングされます。
- 1 つのプロパティーに値がなく、
=
次に例を示します。
command_with_large_output | save_repo app_ui "issues"
# this also works with multiple properties,
# but stdin can provide value for only a single one
command_with_large_output | save_repo app_ui "issues" "result=success" "commit=${REPO_SHA}"
= で複数の値が欠落している場合、どのプロパティーが stdin の値に属しているかを判別できないため、コマンドはエラーで終了します。
値がないが、 = が付加されているプロパティーには、値として空ストリングがあります。
save_repo app_ui "bar="
load_repo app_ui bar # returns an empty string
list_repos
list_repos
保存されているリポジトリの <key> を stdout に一覧表示します。
次に例を示します。
list_repos
# returns the list of stored repository keys to stdout for example:
# app_ui
# app_repo
load_repo
# <key>: Key of the repository, e.g. repository name
# <prop>: Name of the property, e.g. commit, branch, url
load_repo <key> [<prop>]
リポジトリの指定されたプロパティの値を表示します。 リポジトリのみが提供されている場合、リポジトリの利用可能なすべてのプロパティを一覧表示します。 提供されたリポジトリまたはプロパティが無効な場合、一致するプロパティが見つからなかったことを示すエラーを返します。
説明:
-
および の値が指定されている場合、リポジトリの指定されたプロパティの値を出力します。 -
のみが指定された場合、そのリポジトリで利用可能なすべてのプロパティを一覧表示します。 - 指定された
が無効な場合、一致するプロパティが見つからなかったことを示すエラーを返します。
例 1:特定のプロパティをフェッチする:
REPO_SHA=$(load_repo app_ui commit)
例 2:指定されたリポジトリのすべてのプロパティをリストする:
REPO_SHA=$(load_repo app_ui)
プロパティの値を取得するために 'list_repos と共に使用される
#
# iterate over all repos and print their URLs
#
while read -r key; do
url=$(load_repo $key url)
echo "Repository saved as '$key' is at: '$url'"
done < <(list_repos)
以下の行をコンソールに出力します。
特定のプロパティを検索する場合:
Repository saved as 'my-frontend' is at: 'github.com/my-team/frontend'
Repository saved as 'my-backend' is at: 'github.com/my-team/backend'
指定したリポジトリのすべてのプロパティを一覧表示する場合:
Properties available for '$key'.
save_result
# <stage>: Stage name e.g. test, detect-secrets, static-scan
# <path>: Path where will be stored the file, string
save_result <stage> <path>
ステージの任意のテストやスキャン結果ファイルを保存します。 後で、このファイルは load_result`` で取得できます。 デフォルトでは、データはワークスペースを基準としたパスをキーとして保存されます。
PIPELINECTL_USE_PATH_AS_KEY 機能フラグを使用すると、指定されたパスをキーとしてデータが保存されます。
次に例を示します。
#
# save the contents of the file ./results/mocha_results.json
# as an entry named "mocha_results.json" for the "test" stage
#
save_result test ./results/mocha_results.json
#
# save the contents of the file ../data/coverage.xml
# as an entry named "coverage.xml" for the "test" stage
#
save_result test ../data/coverage.xml
#
# Using the `PIPELINECTL_USE_PATH_AS_KEY` environment variable
# save the contents of the file ../data/coverage.xml
# as an entry named "../data/coverage.xml" for the "test" stage
#
PIPELINECTL_USE_PATH_AS_KEY=1 save_result test ../data/coverage.xml
list_results
# <stage>: Stage name
list_results <stage>
ステージごとに保存されたファイル名を一覧表示します。
次に例を示します。
list_results test
# mocha_results.json
# coverage.xml
load_result
# <stage>: Stage name e.g. test, detect-secrets, static-scan
# <file>: File name e.g. mocha_results.json
load_result <stage> <file>
保存されているファイルのキーを stdout に出力します。 デフォルトでは、キーは save_result 内の指定されたファイルパスのワークスペース相対パスとなります。 PIPELINECTL_USE_PATH_AS_KEY フィーチャー・フラグを使用する場合、キーは save_result に指定されたファイル・パスのパスです。 キーの正確なリストを取得するには、list_results を使用します。
次に例を示します。
load_result test mocha_results.json
#
# Using the `PIPELINECTL_USE_PATH_AS_KEY` environment variable
PIPELINECTL_USE_PATH_AS_KEY=1 load_result test ../data/coverage.xml
list_results と一緒に使用されます。
#
# iterate over all results stored for "test"
# and write them to the filename they were registered with
#
while read -r filename; do
load_result test "$filename" > "./$filename"
done < <(list_results test)
save_artifact
# <key>: Key of the artifact e.g. app-image, baseimage etc.
# <prop>: Type of property e.g. name, type, tags, signature
# <value>: Value of the property
save_artifact <key> [<prop>=<value> ...]
新規のビルド成果物をパイプラインに登録するか、既存のビルド成果物を更新します。
コンテナー・イメージ
使用できるいくつかの推奨プロパティーを以下に示します。
type:imageを含む任意の成果物タイプにすることができます。name: 成果物の完全修飾名。 例えば、イメージの場合は、docker pullで使用できるものです。signature: 有効な署名。digest:sha256ダイジェスト。source: 例:http://<some-git-url>/blob/<commithash>/<path-to-file>
これらのプロパティーの上に任意のプロパティーを設定できます。
イメージの場合、 name プロパティーにはイメージのタグも含まれている必要があります。
次に例を示します。
save_artifact ui_service "name=us.icr.io/team_namespace/ui_service:2.4.3"
save_artifact ui_service "type=image"
# any additional property can be added
save_artifact ui_service "tags=latest,2.4.3,feat-something"
# later, when the image was signed, and we have signature data
save_artifact ui_service "signature=${SIGNATURE}"
値ソースとしての stdin の使用
以下の条件に該当する場合は、stdin から値を指定できます。
- コンテンツはコマンド用にストリーミングされます。
- 1 つのプロパティーに値がなく、
=
次に例を示します。
command_with_large_output | save_artifact ui_service "issues"
# this also works with multiple properties,
# but stdin can provide value for only a single one
command_with_large_output | save_artifact ui_service "issues" "result=success" "signature=${SIGNATURE}"
= で複数の値が欠落している場合、どのプロパティーが stdin の値に属しているかを判別できないため、コマンドはエラーで終了します。
値がないが、 = が付加されているプロパティーには、値として空ストリングがあります。
save_artifact ui_service "bar="
load_artifact ui_service bar # returns an empty string
list_artifacts
list_artifacts
保存されているアーティファクトの <key> を stdout に一覧表示します。
次に例を示します。
list_artifacts
# returns the list of stored artifact keys to stdout for example:
#
# ui_service
# app_service
load_artifact
# <key>: Name of the artifact e.g. app-image, baseimage etc.
# <prop>: Type of property e.g. name, type, tags, signature
load_artifact <key> [<prop>]
説明:
-
および の値が指定されている場合、リポジトリの指定されたプロパティの値を出力します。 -
のみが指定された場合、そのリポジトリで利用可能なすべてのプロパティを一覧表示します。
例 1:特定のプロパティをフェッチする:
SIGNATURE=$(load_artifact ui_service signature)
Example2:指定されたアーティファクトのすべてのプロパティをリストする:
load_artifact ui_service
プロパティの値を取得するために 'list_repos と共に使用される
#
# iterate over all artifacts and print their image names
#
while read -r key; do
image=$(load_artifact $key name)
echo "Artifact saved as '$key' is named: '$image'"
done < <(list_artifacts)
以下の行をコンソールに出力します。
特定のプロパティを検索する場合:
Artifact saved as 'ui_service' is named: 'us.icr.io/team_namespace/ui_service:2.4.3'
Artifact saved as 'backend_service' is named: 'us.icr.io/team_namespace/backend_service:2.4.3'
指定されたアーティファクトのすべてのプロパティを一覧表示する場合:
Properties available for 'ui_service': name, type, tags, signature
直列化 (Serialize)
pipelinectl データを転送可能な JSON ファイルにシリアライズして、パイプライン Webhook トリガーのペイロードとして使用します。 save_repo によって設定されたリポジトリー、 save_artifact によって設定された成果物、および set_env によって設定された環境変数をシリアライズできます。
(オプション) フラグ:
--all-repos # all the repository information set by `pipelinectl`
--all-artifacts # all the artifacts information set by `pipelinectl`
次に例を示します。
以下のコードは、すべてのリポジトリー、すべての成果物、および <env_variable1>、 <env_variable2> を foo.json ファイルに保存します。
pipelinectl serialize --all-repos --all-artifacts <env_variable1> <env_variable2> > foo.json
```このコマンドはエイリアスではありません。 `pipelinectl`。
{: note}
### デシリアライズ {: #deserialize}
`pipelinectl` を JSON からファイルにデシリアライズして、 `pipelinectl` がトリガーされたパイプラインで動作できるようにします。 `pipelinectl serialize` コマンドによってシリアライズされた JSON を引数として使用します。
次に例を示します。
```bash {: codeblock}
pipelinectl deserialize ./foo.json
```このコマンドはエイリアスではないため、 `pipelinectl` を明示的に指定する必要があります。
{: note}
## 下位メソッド {: #low-level-methods}
これらの方法は、完全を期すためにのみ公開されています。 これらの方法はまれにしか使用しないでください。
### put_data {: #put_data}
```bash {: codeblock}
# <key>: Name of the data
# <prop>: Type of property e.g. name, type, tags, signature
# <value>: Value of the property
put_data <key> <prop> <value>
prop に value で定義されたエントリーの key を設定します。
get_data
# <key>: Key of data
# <prop>: Type of property e.g. name, type, tags, signature
# <value>: Value of the property
get_data <key>
get_data <key> <prop>
key で定義されているエントリの「 prop 」を出力します。 prop が指定されていない場合、 key のすべての prop が返されます。 key に prop がない場合、0以外の終了コードを返します。
資産の保存
# <prop>: Type of property; for example, uri, id, blob
# <value>: Value of the property
save_asset <prop1> <value1> blob <json_string or path to a json file>
save_asset <prop1> <value1> <prop2> <value2> blob <json_string or path to a json file>
パイプライン全体でアクセスできるように、資産情報を pipelinectl ストレージに保存します。 任意の数のプロパティーを使用できます。 しかし、blob 渡すことが必須の予約済みプロパティであり、対応する値は有効な json ファイルへのファイルパスまたは有効な json 文字列である必要があります。 save_asset プロパティーは、不変エントリーを作成します。 <prop> <value> ペアの同じ組み合わせに対して 2 回呼び出すことはできません。
ロード資産
# <prop>: Type of property; for example, uri, id
# <value>: Value of the property
load_asset # retrieves all assets stored by save_asset
load_asset <prop1> <value1> # retrieves one asset that matches prop1 = value1 saved during save_asset
load_asset <prop1> <value1> <prop2> <value2> # retrieves one asset that matches prop1 = value1 AND prop2 = value2 saved during save_asset
指定された <prop> <value> ペアに一致する資産を取得します。 <prop> <value> の組み合わせを指定せずに呼び出すと、JSON 配列内のパイプラインで save_asset を使用して保存されたすべての資産が取得されます。 blob プロパティーは予約済みプロパティーであるため、 load_asset のマッチング・プロパティーとして使用することはできません。
証拠の保存
# <prop>: Type of property; for example, blob, sha
# <value>: Value of the property
save_evidence <prop1> <value1> blob <json_string or path to a json file>
save_evidence <prop1> <value1> <prop2> <value2> blob <json_string or path to a json file>
パイプライン全体でアクセスできるように、証拠情報を pipelinectl ストレージに保存します。 任意の数のプロパティーを使用できます。 しかし blob property は必ず渡される予約済みプロパティであり、それに対応する値は有効な json ファイルへのファイルパスまたは有効な json 文字列である必要があります。 save_evidence プロパティーは、不変エントリーを作成します。 <prop> <value> ペアの同じ組み合わせに対して 2 回呼び出すことはできません。
ロードエビデンス
# <prop>: Type of property; for example, id, sha
# <value>: Value of the property
load_evidence # retrieves all evidences that are stored by save_evidence
load_evidence <prop1> <value1> # retrieves one evidence that matches prop1 = value1 saved during save_evidence
load_evidence <prop1> <value1> <prop2> <value2> # retrieves one evidence that matches prop1 = value1 AND prop2 = value2 saved during save_evidence
指定された <prop> <value> ペアに一致するエビデンスを取得します。 <prop> <value> の組み合わせを指定せずに呼び出すと、JSON 配列内のパイプラインで save_evidence を使用して保存されたすべての証拠が取得されます。 blob プロパティーは予約済みプロパティーであるため、 load_evidence のマッチング・プロパティーとして使用することはできません。
証拠の削除
delete_evidences # deletes all the evidences stored inside pipelinectl so far using save_evidence
このコマンドは、 save_evidence を使用して保存された、pipelinectl 内に保管されているすべての証拠を消去します。
save_string (非推奨)
save_string は非推奨です。代わりに set_env を使用してください。
save_string <key> <value>
任意の文字列を保存します。この文字列は、後で load_string を使用して取得できます。
load_string (非推奨)
load_string は非推奨です。代わりに get_env を使用してください。
load_string <key>
key に格納されている文字列を出力します。