Dokumen ini menjelaskan cara memanggil pipeline pengiriman Cloud Deploy dari sistem continuous integration (CI) Anda.
Mengintegrasikan Cloud Deploy dengan sistem CI Anda semudah menambahkan panggilan ke gcloud
CLI Cloud Deploy. Panggilan ini terjadi pada titik di pipeline CI tempat aplikasi Anda siap di-deploy.
Sebelum memulai
Petunjuk di halaman ini mengasumsikan bahwa Anda telah memenuhi kondisi berikut:
Anda telah mengaktifkan API yang berlaku
Anda memiliki setidaknya satu pipeline pengiriman yang ditentukan dan didaftarkan dengan Cloud Deploy.
Anda memiliki setidaknya satu target yang ditentukan, dan pipeline pengiriman Anda mereferensikan target tersebut.
Memanggil Cloud Deploy dari pipeline CI Anda
Perintah berikut 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 pada 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 berada dalam tanda kutip tunggal.PIPELINE_NAME
adalah nama pipeline pengiriman terdaftar Anda. Nilai ini wajib diisi.
REGION
adalah region tempat Anda membuat rilis ini. Region tidak harus sama dengan region tempat Anda akhirnya men-deploy aplikasi.
[KEY=VALUE,...]
adalah daftar opsional yang berisi satu atau beberapa anotasi untuk diterapkan pada rilis, dalam bentuk pasangan nilai kunci.
Anda dapat menggunakan anotasi untuk melacak asal rilis, misalnya, dengan meneruskan anotasi seperti
commitId=0065ca0. Semua anotasi pada rilis akan ditampilkan saat Andalistataugetrilis, dan ditampilkan bersama rilis di konsol Google Cloud , sehingga Anda juga dapat melihat asal rilis di sana.[IMAGE_LIST]
adalah daftar penggantian nama gambar ke jalur gambar yang dipisahkan koma. Contoh:
--images=image1=path/to/image1:v1@sha256:45db24,image2=path/to/image2:v1@sha256:55xy18Nilai ini tidak diperlukan jika Anda meneruskan
--build-artifacts, yang mengidentifikasi file output artefak build Skaffold.Saat Cloud Deploy merender manifes, nama image dalam manifes yang belum dirender diganti dengan referensi image lengkap dalam manifes yang dirender. Artinya,
image1, dari contoh ini, ada dalam manifes yang belum dirender dan diganti dalam manifes yang dirender denganpath/to/image1:v1@sha256:45db24.
Contoh penggunaan referensi gambar langsung
Perintah berikut membuat rilis baru, meneruskan referensi image 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 berada 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.
SHA Git juga sering digunakan dalam nama rilis. Lihat contoh Cloud Build dan Docker dalam dokumen ini.
Artefak build versus gambar
Pada perintah gcloud deploy releases create, Anda dapat meneruskan serangkaian referensi gambar atau referensi file artefak build.
Gunakan
--images=[NAME=TAG,...]untuk merujuk ke satu atau beberapa image penampung individual.Nilai ini adalah referensi ke kumpulan penggantian jalur lengkap gambar ke nama gambar individual. Berikut contohnya:
gcloud deploy releases create my-release --images=image1=path/to/image1:v1@sha256:45db24Gunakan
--build-artifacts=untuk menunjuk ke file output artefak build Skaffold.
Contoh Cloud Build, meneruskan file artefak build
Contoh build Docker
File YAML berikut menunjukkan Cloud Build untuk mengirim image build Docker, dan pada akhirnya membuat rilis Cloud Deploy.
Contoh ini membangun dan mengirimkan 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 bergantung pada variabel $COMMIT_SHA.
Contoh ini mengirimkan image ke tag Docker yang sama dengan hash commit repo sumber. Kemudian, hash commit yang sama, sebagai tag Docker, akan direferensikan dari argumen release-command.
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}"
]
Perhatikan bahwa nama gambar di akhir contoh ini, "--images", "IMAGE_NAME= diganti dalam manifes yang dirender dengan referensi gambar lengkap.
Contoh konfigurasi Cloud Build menggunakan Skaffold
File YAML berikut adalah konten konfigurasi build Cloud Build yang menyertakan panggilan ke Cloud Deploy untuk membuat rilis, dengan nama rilis berdasarkan tanggal. Contoh ini juga menunjukkan Skaffold yang digunakan untuk build.
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 menggunakan GitHub Actions untuk integrasi berkelanjutan atau aktivitas terkait pengiriman software lainnya, Anda dapat terhubung ke Cloud Deploy untuk pengiriman berkelanjutan menggunakan GitHub Action create-cloud-deploy-release.
Menghubungkan GitLab ke Cloud Deploy
Jika menggunakan GitLab untuk continuous integration, Anda dapat menggunakan komponen GitLab Cloud Deploy create-cloud-deploy-release untuk membuat rilis Cloud Deploy.
Anda juga dapat mencoba tutorial end-to-end untuk menggunakan GitLab dengan Google Cloud.
Menggunakan anotasi untuk melacak asal rilis
Dengan tanda --annotations=, Anda dapat menerapkan satu atau beberapa pasangan nilai kunci arbitrer
ke rilis yang dibuat oleh perintah ini. Anda akan menambahkan tanda ini ke perintah
gcloud deploy releases create.
Misalnya, Anda dapat menggunakan pasangan nilai kunci berikut untuk melacak sumber gambar 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 tarik, misalnya. Untuk mengetahui informasi selengkapnya, lihat Menggunakan label dan anotasi dengan Cloud Deploy.