このドキュメントでは、継続的インテグレーション(CI)システムから Cloud Deploy デリバリー パイプラインを呼び出す方法について説明します。
Cloud Deploy と CI システムの統合は、Cloud Deploy gcloud CLI への呼び出しを追加するだけで簡単です。この呼び出しは、アプリケーションをデプロイする準備ができた CI パイプラインのポイントで行われます。
始める前に
このページの操作手順は、次の条件を満たしていることを前提としています。
少なくとも 1 つのターゲットが定義され、そのターゲットを参照しているデリバリー パイプラインを参照している。
CI パイプラインから Cloud Deploy を呼び出す
次のコマンドで新しいリリースが作成され、デリバリー パイプライン インスタンスが呼び出されます。
gcloud deploy releases create RELEASE_NAME \
--delivery-pipeline=PIPELINE_NAME \
--region=REGION \
--annotations=[KEY=VALUE,...] \
--images=[IMAGE_LIST]
ここで...
RELEASE_NAME
は、このリリースに付ける名前です。この値は必須です。
'$DATE'または'$TIME'または 両方を含めることで、動的なリリース名を指定できます。たとえば、UTC 午後 3 時 7 分にこのコマンドを呼び出すと、'rel-$TIME'はrel-1507に解決されます。'$DATE'と'$TIME'は単一引用符で囲む必要があります。PIPELINE_NAME
は、登録されたデリバリー パイプラインの名前です。この値は必須です。
REGION
は、このリリースを作成するリージョンです。このリージョンは、最終的にアプリケーションをデプロイするリージョンと同じである必要はありません。
[KEY=VALUE,...]
は、リリースに適用する 1 つ以上のアノテーションのリストです(省略可)。Key-Value ペアの形式で指定します。
アノテーションを使用して、リリースの出所を追跡できます。たとえば、
commitId=0065ca0などのアノテーションを渡します。リリースのすべてのアノテーションは、リリースに対してlistまたはgetを実行すると 返され、コンソールにリリースと一緒に 表示されるため、リリースの出所も確認できます。 Google Cloud[IMAGE_LIST]
は、イメージ名からイメージパスへの置換のカンマ区切りのリストです。例:
--images=image1=path/to/image1:v1@sha256:45db24,image2=path/to/image2:v1@sha256:55xy18。Skaffold ビルド アーティファクト出力ファイルを識別する
--build-artifactsを渡す場合、この値は必要ありません。Cloud Deploy がマニフェストをレンダリングすると、レンダリングされていないマニフェストのイメージ名が、レンダリングされたマニフェストの完全なイメージ参照に置き換えられます。つまり、この例の
image1はレンダリングされていないマニフェストにあり、レンダリングされたマニフェストではpath/to/image1:v1@sha256:45db24に置き換えられます。
直接イメージ参照の使用例
次のコマンドは、ビルド アーティファクト ファイルではなく、イメージ参照を直接渡して新しいリリースを作成します。
gcloud deploy releases create my-release \
--delivery-pipeline=web-app \
--region=us-central1 \
--images=image1=path/to/image1:v1@sha256:45db24
この例では、my-release はリリース名です。日付または時刻に基づいてリリース名を生成する場合は、'$DATE' または 'TIME' のいずれか、または
両方を含めることができます。時刻は、コマンドを呼び出すマシン上の UTC 時刻です。'$DATE'
と '$TIME' は単一引用符で囲む必要があります。
次に例を示します。
gcloud deploy releases create rel-'$DATE'-'$TIME' \
--delivery-pipeline=web-app \
--region=us-central1 \
--images=image1=path/to/image1:v1@sha256:45db24
この例では、コマンドは接頭辞 rel-に日付と時刻を加えたリリース名を生成します(例: rel-20220131-1507)。
リリース名に Git SHA を使用することも一般的です。このドキュメントの Cloud Build と Docker の例 をご覧ください。
ビルド アーティファクトとイメージ
gcloud deploy releases create コマンドでは、イメージ参照のセットまたはビルド アーティファクト ファイル参照のいずれかを渡すことができます。
--images=[NAME=TAG,...]を使用して 1 つ以上の個々のコンテナ イメージを参照します。この値は、イメージのフルパスの置換への個々のイメージ名のコレクションへの参照です。次に例を示します。
gcloud deploy releases create my-release --images=image1=path/to/image1:v1@sha256:45db24--build-artifacts=を使用して、Skaffold ビルド アーティファクト出力ファイルを指定します。
ビルド アーティファクト ファイルを渡す Cloud Build の例
Docker ビルドの例
次の YAML ファイルは、Docker ビルドイメージの push 用の Cloud Build を示し、最終的に Cloud Deploy リリースを作成します。
この例では、イメージをアーティファクト リポジトリにビルドして push し、短い commit SHA に基づくリリース名でリリースを作成するコマンドを作成します。この例では $COMMIT_SHA 変数に依存しているため、Cloud Build SCM
トリガーとして使用する必要があります。
この例では、イメージをソース リポジトリの commit ハッシュと同じ Docker タグに push します。次に、同じ commit ハッシュが Docker タグとして、release-command 引数から参照されます。
steps:
# Build and tag using commit sha
- name: 'gcr.io/cloud-builders/docker'