Docker イメージのビルド
必要なすべての Docker イメージを、containerizeステージでビルドすることができます。 それらのイメージのデフォルトの組み込み GPG イメージ署名をオーバーライドする場合は、パイプラインにそれらのイメージを認識させる必要があります。
イメージ成果物の追加
イメージ成果物は pipelinectl インターフェースを使用して追加することができます。 コンテナー化ステージで、イメージを成果物としてパイプラインに追加します。
save_artifact <image-alias> type=image "name=${IMAGE}" "digest=${DIGEST}" [<prop>=<value>]
ここで、name の値は完全修飾イメージ名でなければなりません (例: your-docker-repository.namespace/imagename:imagetag)。また、digest は、イメージの sha256 ダイジェストでなければなりません (例: sha256:c43e802dcc7485590b54614006ced9338d5bd9a045115c89d5570bb95eeb52d9)。
<image-alias> は任意の文字列で、その目的は、他のアーティファクトの中であなたの画像に人間が読める名前を提供することです。 成果物にはタグやタイム・スタンプなど任意のプロパティーを追加することができます。
type、name、および digest は必須フィールドです。
例
save_artifact service type=image \
name="${SERVICE_IMAGE}" \
digest="${SERVICE_IMAGE_DIGEST}" \
tags="${SERVICE_IMAGE_TAGS}"
save_artifact service_debug type=image \
"name=${SERVICE_DEBUG_IMAGE}" \
"digest=${SERVICE_DEBUG_IMAGE_DIGEST}"
このインターフェースを使用すると、デフォルトの組み込み GPG イメージ署名によってこれらのイメージをピックアップし、処理することができます。
イメージ成果物のロード
パイプラインのリリース・ステージの最後に、pipelinectl インターフェースを使用してこれらの成果物にアクセスすることができます。
list_artifacts
load_artifact <image-alias> <property>
list_artifacts は、使用可能なイメージ別名をリストしています。ここで、 <property> は、ユーザーまたは以前に追加したパイプラインの任意のプロパティーです。 これらを一緒に使用することで、成果物を順に反復して処理することができます。以下に例を示します。
list_artifacts | while IFS= read -r artifact; do
$image=$(load_artifact "$artifact" name)
$digest=$(load_artifact "$artifact" digest)
$signature=$(load_artifact "$artifact" signature)
# update your inventory using these
done
signature プロパティーは、デフォルトの組み込み GPG イメージ署名タスクによって追加されます。
ICR での作業
IBM Cloud® Container Registry マルチテナントのプライベート・イメージ・レジストリを使用して、コンテナ・イメージを保存し、 IBM Cloud アカウントのユーザーと共有することができます。
プライベート・エンドポイントが有効になっている ICR の操作
プライベート・エンドポイントで有効になっているレジストリーを処理するには、環境変数 registry-domain をパイプラインに追加する必要があります。
例
registry-domain の値は private.de.icr.io に設定できます。
環境変数を使用するために、コードは以下のサンプルのようになります。
ICR_REGISTRY_DOMAIN="$(get_env registry-domain "")"
if [ -z "$ICR_REGISTRY_DOMAIN" ]; then
# Default to icr domain from registry-region
ICR_REGISTRY_REGION="$(get-icr-region "$(get_env registry-region "")")"
ICR_REGISTRY_DOMAIN="$ICR_REGISTRY_REGION.icr.io"
fi
IMAGE="$ICR_REGISTRY_DOMAIN/$ICR_REGISTRY_NAMESPACE/$IMAGE_NAME:$IMAGE_TAG"
docker login -u iamapikey --password-stdin "$ICR_REGISTRY_DOMAIN" < /config/api-key
前のサンプル・コードは、 sample hello-compliance-app から取得されています。
詳しくは、以下の資料を確認してください。