pipelinectl

pipelinectl DevSecOps パイプライン内で、タスクとコンプライアンス自動化スクリプトの間でデータを共有するために使用できる、軽量なキーバリューストアです。

このツールの使用場所について詳しくは、 パイプラインへのテスト・ステップおよびビルド・ステップの追加 を参照してください。

Cloud Object Storage パイプラインデータの設定

Cloud Object Storage (COS) は、ビルド成果物、テストレポート、中間ファイルなどのパイプラインデータ向けに、容量無制限の永続ストレージを提供します。 デフォルトのローカルストレージとは異なり、COSに保存されたファイルはパイプラインの実行を超えて保持され、異なるパイプライン間で共有することができます。

pipelinectl COSバケットを明示的な永続ストレージとしてサポートするコマンドは以下の通りです:

監査およびコンプライアンスの要件により、COSバケットは証拠保管庫のバケットとは別のものである必要があります。

パイプラインデータ用にCOSを設定する

COSをpipelinectlのファイル操作で利用するには、以下の設定手順を実行してください:

  1. データバケットを作成する
  • 既存の Cloud Object Storage インスタンスを使用することも、新しいインスタンスを作成することもできます。 『 Cloud Object Storage の設定 』の手順に従って、以下の操作を行ってください:
  • データ用バケットを作成してください(証拠保管用バケットとは別のものにする必要があります)
  • バケット用のサービス認証情報を作成する
  1. IAMの権限を設定する

データバケットのサービス認証情報に、 WriterObject WriterReaderおよびContent Reader の各ロールを割り当ててください。

詳しい手順については、「 バケットへのアクセス権限 」を参照してください。

  1. 環境プロパティの設定

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キーをセキュアプロパティとして保存してください。

  1. バケットのライフサイクルを設定する(推奨)

古いパイプラインデータを自動的に削除するようにライフサイクルポリシーを設定します。 ほとんどのパイプラインデータについては、有効期限を7日間に設定することを推奨します。 手順については、「 ライフサイクルポリシー 」を参照してください。

COSデータの範囲について

save_resultset_env コマンドは個々のパイプライン実行ごとにスコープが限定されますが、COS バックエンド(--storage=cos )を使用したファイル操作は、すべてのパイプライン実行を通じて維持される共有バケットに対して行われます。

主な行動:

実行の自動分離は行われません :異なるパイプライン実行で同じキーを使用して保存されたファイルは、互いに上書きされます。

共有バケットネームスペース :同じCOS設定を使用するすべてのパイプライン実行は、同じバケットネームスペースを共有します。

永続ストレージ :ファイルは、明示的に削除されるか、バケットのライフサイクルルールによって有効期限が切れるまで、COS内に残ります。

範囲の比較:

表 1. コマンドのスコープの比較
コマンド スコープ 永続性
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

# <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>

propvalue で定義されたエントリーの 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 が返されます。 keyprop がない場合、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 に格納されている文字列を出力します。