Dokumen ini menjelaskan cara memanggil pipeline pengiriman Cloud Deploy dari sistem continuous integration (CI) Anda.
Integrasi Cloud Deploy dengan sistem CI Anda semudah menambahkan
panggilan ke CLI gcloud
Cloud Deploy. Panggilan ini terjadi pada titik di pipeline CI Anda saat aplikasi Anda siap di-deploy.
Sebelum memulai
Petunjuk pada halaman ini mengasumsikan bahwa Anda telah memenuhi ketentuan berikut:
Anda telah mengaktifkan API yang berlaku
Anda memiliki minimal satu pipeline pengiriman yang ditentukan dan terdaftar di Cloud Deploy.
Anda memiliki setidaknya satu target yang ditentukan, dan pipeline pengiriman merujuk ke target tersebut.
Memanggil Cloud Deploy dari pipeline CI Anda
Perintah berikut akan membuat rilis baru, sehingga memanggil instance pipeline pengiriman:
gcloud deploy releases create RELEASE_NAME \
--delivery-pipeline=PIPELINE_NAME \
--region=REGION \
--annotations=[KEY=VALUE,...] \
--images=[IMAGE_LIST]
Di mana...
RELEASE_NAME
adalah nama yang Anda berikan untuk rilis ini. Nilai ini wajib diisi.
Anda dapat menentukan nama rilis dinamis dengan menyertakan
'$DATE'
atau'$TIME'
atau keduanya. Misalnya, jika Anda memanggil perintah ini pada pukul 15.07 UTC,'rel-$TIME'
akan di-resolve menjadirel-1507
.'$DATE'
dan'$TIME'
harus menggunakan tanda kutip tunggal.PIPELINE_NAME
adalah nama pipeline pengiriman terdaftar Anda. Nilai ini wajib diisi.
REGION
adalah region tempat Anda membuat rilis ini. Region tersebut tidak harus berupa region yang sama tempat Anda pada akhirnya men-deploy aplikasi.
[KEY=VALUE,...]
adalah daftar opsional dari satu atau beberapa anotasi untuk diterapkan pada rilis, dalam bentuk key-value pair.
Anda dapat menggunakan anotasi untuk melacak asal rilis, misalnya, dengan meneruskan anotasi seperti
commitId=0065ca0
. Semua anotasi pada rilis ditampilkan saat Anda melakukanlist
atauget
pada rilis, dan ditampilkan bersama rilis tersebut di Konsol Google Cloud, sehingga Anda juga dapat melihat provenance rilis di sana.[IMAGE_LIST]
adalah daftar yang dipisahkan koma untuk pengganti image-name-to-image-path. Contoh:
--images=image1=path/to/image1:v1@sha256:45db24,image2=path/to/image2:v1@sha256:55xy18
Nilai ini tidak diperlukan jika Anda meneruskan
--build-artifacts
, yang mengidentifikasi file output artefak build Skaffold.Saat Cloud Deploy merender manifes, nama gambar dalam manifes yang tidak dirender akan diganti dengan referensi gambar lengkap dalam manifes yang dirender. Artinya,
image1
, dari contoh ini, berada dalam manifes yang tidak dirender dan diganti dalam manifes yang dirender denganpath/to/image1:v1@sha256:45db24
.
Contoh yang menggunakan referensi gambar langsung
Perintah berikut membuat rilis baru, yang meneruskan referensi gambar secara langsung, bukan file artefak build:
gcloud deploy releases create my-release \
--delivery-pipeline=web-app \
--region=us-central1 \
--images=image1=path/to/image1:v1@sha256:45db24
Dalam contoh ini, my-release
adalah nama rilis. Jika ingin membuat
nama rilis berdasarkan tanggal atau waktu, Anda dapat menyertakan '$DATE'
atau 'TIME'
, atau
keduanya. Waktu adalah waktu UTC di komputer tempat Anda memanggil perintah. '$DATE'
dan '$TIME'
harus ditulis dalam tanda kutip tunggal.
Berikut contohnya:
gcloud deploy releases create rel-'$DATE'-'$TIME' \
--delivery-pipeline=web-app \
--region=us-central1 \
--images=image1=path/to/image1:v1@sha256:45db24
Dalam contoh ini, perintah menghasilkan nama rilis dengan awalan rel-
,
ditambah tanggal dan waktu, misalnya: rel-20220131-1507
.
Menggunakan Git SHA dalam nama rilis juga umum. Lihat contoh Cloud Build dan Docker dalam dokumen ini.
Membangun artefak versus gambar
Pada perintah gcloud deploy releases create
, Anda dapat meneruskan kumpulan
referensi gambar atau referensi file artefak build.
Gunakan
--images=[NAME=TAG,...]
untuk merujuk ke satu atau beberapa image penampung individual.Nilai ini merupakan referensi ke kumpulan nama gambar individual untuk penggantian jalur lengkap gambar. Berikut contohnya:
gcloud deploy releases create my-release --images=image1=path/to/image1:v1@sha256:45db24
Gunakan
--build-artifacts=
untuk menunjuk ke file output artefak build Skaffold.
Contoh Cloud Build, dengan meneruskan file artefak build
Contoh build Docker
File YAML berikut menunjukkan Cloud Build untuk push image build Docker, dan yang pada akhirnya membuat rilis Cloud Deploy.
Contoh ini mem-build dan mengirim image ke repositori artefak serta membuat
perintah untuk membuat rilis, dengan nama rilis berdasarkan SHA commit
singkat. Contoh ini harus digunakan sebagai
pemicu SCM Cloud Build karena
mengandalkan variabel $COMMIT_SHA
.
Contoh ini mengirim image ke tag Docker yang sama dengan hash commit dari repo sumber. Kemudian, hash commit yang sama, seperti tag Docker, akan direferensikan dari argumen perintah rilis.
steps:
# Build and tag using commit sha
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '.', '-t', 'REPO_LOCATION/$PROJECT_ID/IMAGE_NAME:${COMMIT_SHA}', '-f', 'Dockerfile']
# Push the container image
- name: 'gcr.io/cloud-builders/docker'
args: ['push', 'REPO_LOCATION/$PROJECT_ID/IMAGE_NAME:${COMMIT_SHA}']
# Create release in Google Cloud Deploy
- name: gcr.io/google.com/cloudsdktool/cloud-sdk
entrypoint: gcloud
args:
[
"deploy", "releases", "create", "rel-${SHORT_SHA}",
"--delivery-pipeline", "PIPELINE_NAME",
"--region", "us-central1",
"--annotations", "commitId=${REVISION_ID}",
"--images", "IMAGE_NAME=REPO_LOCATION/$PROJECT_ID/IMAGE_NAME:${COMMIT_SHA}"
]
Perlu diketahui bahwa nama gambar di akhir contoh ini, "--images", "IMAGE_NAME=
diganti dalam manifes yang dirender dengan referensi gambar penuh.
Contoh konfigurasi Cloud Build menggunakan Skaffold
File YAML berikut adalah konten konfigurasi build Cloud Build yang mencakup panggilan ke Cloud Deploy untuk membuat rilis, dengan nama rilis berdasarkan tanggal. Contoh ini juga menunjukkan Skaffold yang digunakan untuk membangun.
steps:
- name: gcr.io/k8s-skaffold/skaffold
args:
- skaffold
- build
- '--interactive=false'
- '--file-output=/workspace/artifacts.json'
- name: gcr.io/google.com/cloudsdktool/cloud-sdk
entrypoint: gcloud
args:
[
"deploy", "releases", "create", "rel-${SHORT_SHA}",
"--delivery-pipeline", "PIPELINE_NAME",
"--region", "us-central1",
"--annotations", "commitId=${REVISION_ID}",
"--build-artifacts", "/workspace/artifacts.json"
]
Menghubungkan GitHub Actions ke Cloud Deploy
Jika Anda menggunakan GitHub Actions untuk continuous integration atau aktivitas terkait pengiriman software lainnya, Anda dapat terhubung ke Cloud Deploy untuk continuous delivery menggunakan GitHub Action create-cloud-deploy-release
.
Menghubungkan GitLab ke Cloud Deploy
Jika menggunakan GitLab untuk continuous integration, Anda dapat menggunakan komponen Cloud Deploy GitLab create-cloud-deploy-release untuk membuat rilis Cloud Deploy.
Anda juga dapat mencoba tutorial menyeluruh untuk menggunakan GitLab dengan Google Cloud.
Untuk informasi selengkapnya, lihat Ringkasan GitLab di Google Cloud.
Menggunakan anotasi untuk melacak asal rilis
Tanda --annotations=
memungkinkan Anda menerapkan satu atau beberapa key-value pair arbitrer
ke rilis yang dibuat perintah ini. Anda akan menambahkan flag ini ke
perintah gcloud deploy releases create
.
Misalnya, Anda dapat menggunakan key-value pair berikut untuk melacak sumber image yang akan di-deploy.
Berikut contohnya:
gcloud deploy releases create web-app-1029rel \
--delivery-pipeline=web-app \
--region=us-central1 \
--annotations=commitId=0065ca0,author=user@company.com \
--images=image1=path/to/image1:v1@sha256:45db24
Anda juga dapat membuat anotasi yang nilainya adalah URL yang mengarah ke permintaan pull, misalnya. Untuk mengetahui informasi selengkapnya, baca artikel Menggunakan label dan anotasi dengan Cloud Deploy.