Membuat pipeline CI/CD dengan Azure Pipelines dan Cloud Run

Tutorial ini menunjukkan cara menggunakan Azure Pipelines, Cloud Run, dan Container Registry untuk membuat pipeline continuous integration/continuous deployment (CI/CD) untuk aplikasi web ASP.NET MVC Core.

Pipeline CI/CD menggunakan dua Cloud de Confiance project, satu untuk pengembangan dan satu untuk produksi, seperti yang ditunjukkan diagram berikut.

Arsitektur cara pipeline build dan rilis Azure berinteraksi dengan pipeline produksi dan pengembangan Google Cloud.

Di awal pipeline, developer melakukan commit perubahan pada codebase contoh. Tindakan ini memicu pipeline untuk membuat rilis dan men-deploy-nya ke Cloud Run di cluster pengembangan. Kemudian, pengelola rilis mempromosikan rilis sehingga di-deploy ke project produksi.

Tutorial ini ditujukan bagi developer dan engineer DevOps. Tutorial ini mengasumsikan bahwa Anda memiliki pengetahuan dasar tentang .NET, Azure Pipelines, Cloud Run, dan git. Untuk menyelesaikan tutorial ini, Anda memerlukan akses administratif ke akun Azure DevOps.

Tujuan

  • Menghubungkan Artifact Registry ke Azure Pipelines untuk memublikasikan image Docker.
  • Siapkan aplikasi contoh.NET untuk deployment ke Cloud Run.
  • Menyiapkan autentikasi antara Azure Pipelines dan Cloud de Confiance by S3NS.
  • Gunakan pengelolaan rilis Azure Pipelines untuk mengatur deployment Cloud Run.

Biaya

Dalam dokumen ini, Anda akan menggunakan komponen Cloud de Confiance by S3NSyang dapat ditagih berikut:

Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.

Lihat halaman harga Azure DevOps untuk mengetahui biaya yang mungkin berlaku pada penggunaan Azure DevOps.

Sebelum memulai

Anda menggunakan dua project terpisah dalam tutorial ini, satu untuk pengembangan dan satu untuk produksi. Dengan menggunakan project terpisah, Anda dapat menguji rilis sebelum men-deploy-nya ke produksi dan juga mengelola peran dan izin Identity and Access Management (IAM) satu per satu.

  1. Buat Cloud de Confiance project untuk pengembangan. Tutorial ini menyebut project ini sebagai project pengembangan.
  2. Buat Cloud de Confiance project untuk produksi. Tutorial ini merujuk pada project ini sebagai project produksi.
  3. Verifikasi bahwa penagihan diaktifkan untuk project Cloud de Confiance Anda.

  4. Pastikan Anda memiliki akun Azure DevOps dan akses administrator ke akun tersebut. Jika belum memiliki akun Azure DevOps, Anda dapat mendaftar di halaman beranda Azure DevOps.

Membuat project Azure DevOps

Anda menggunakan Azure DevOps untuk mengelola kode sumber, menjalankan build dan pengujian, serta mengatur deployment ke Cloud Run. Untuk memulai, Anda membuat project di akun Azure DevOps Anda.

  1. Buka halaman beranda Azure DevOps (https://dev.azure.com/YOUR_AZURE_DEVOPS_ACCOUNT_NAME).
  2. Klik Project Baru.
  3. Masukkan nama project, seperti CloudDemo.
  4. Tetapkan Visibilitas ke Pribadi, lalu klik Buat project.
  5. Setelah Anda membuat project, di menu sebelah kiri, klik Repos.
  6. Klik Impor untuk membuat fork repositori dotnet-docs-samples dari GitHub, lalu tetapkan nilai berikut:
    • Jenis repositori: Git
    • URL Clone: https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
  7. Klik Import.

    Setelah proses impor selesai, Anda akan melihat kode sumber repositori dotnet-docs-samples.

Menghubungkan Azure Pipelines ke Artifact Registry

Sebelum dapat menyiapkan continuous integration untuk aplikasi CloudDemo, Anda harus menghubungkan Azure Pipelines ke Artifact Registry. Koneksi ini memungkinkan Azure Pipelines memublikasikan image container ke Artifact Registry.

Menyiapkan akun layanan untuk memublikasikan gambar

Buat akun layananCloud de Confiance di project produksi Anda:

  1. Di konsol Cloud de Confiance , alihkan ke project produksi.
  2. Di konsol Cloud de Confiance , aktifkan Cloud Shell.

    Aktifkan Cloud Shell

  3. Lakukan inisialisasi variabel lingkungan berikut:

    DEV_PROJECT_ID=DEV_PROJECT_ID
    PROD_PROJECT_ID=PROD_PROJECT_ID
    

    Ganti kode berikut:

    • DEV_PROJECT_ID: project ID project pengembangan Anda
    • PROD_PROJECT_ID: project ID project produksi Anda
  4. Aktifkan Artifact Registry API di project produksi:

    gcloud services enable artifactregistry.googleapis.com \
        --project=$PROD_PROJECT_ID
    
  5. Buat repositori Artifact Registry untuk menyimpan image Docker Anda:

    gcloud artifacts repositories create docker  \
        --project=$PROD_PROJECT_ID \
        --repository-format=docker \
        --location REGION
    

    Ganti REGION dengan region repositori Artifact Registry Anda, misalnya us-central1.

  6. Buat akun layanan yang digunakan Azure Pipelines untuk memublikasikan image Docker:

    gcloud iam service-accounts create azure-pipelines-publisher \
        --display-name="Azure Pipelines Publisher" \
        --project=$PROD_PROJECT_ID
    
  7. Berikan peran Penulis Artifact Registry (roles/artifactregistry.writer) ke akun layanan untuk mengizinkan Azure Pipelines melakukan push ke Artifact Registry:

    AZURE_PIPELINES_PUBLISHER=azure-pipelines-publisher@$PROD_PROJECT_ID.s3ns.iam.gserviceaccount.com
    
    gcloud projects add-iam-policy-binding $PROD_PROJECT_ID \
        --member serviceAccount:$AZURE_PIPELINES_PUBLISHER \
        --role roles/artifactregistry.writer \
        --project=$PROD_PROJECT_ID
    
  8. Buat kunci akun layanan:

    gcloud iam service-accounts keys create azure-pipelines-publisher.json \
        --iam-account $AZURE_PIPELINES_PUBLISHER \
        --project=$PROD_PROJECT_ID
    
    tr -d '\n' < azure-pipelines-publisher.json > azure-pipelines-publisher-oneline.json
    
  9. Lihat konten file kunci akun layanan:

    echo $(<azure-pipelines-publisher-oneline.json)
    

    Anda memerlukan kunci akun layanan di salah satu langkah berikut.

Membuat koneksi layanan untuk Artifact Registry

Di Azure Pipelines, buat koneksi layanan baru untuk Artifact Registry:

  1. Di menu DevOps Azure, pilih Project settings, lalu pilih Pipelines > Service connections.
  2. Klik Create service connection.
  3. Dari daftar, pilih Docker Registry, lalu klik Next.
  4. Dalam dialog, masukkan nilai untuk kolom berikut:

    • Jenis registry: Lainnya
    • Docker Registry: https://REGION-docker.pkg.dev/PROD_PROJECT_ID/docker/

      Ganti kode berikut:

      • REGION: region repositori Artifact Registry Anda
      • PROD_PROJECT_ID: nama project produksi Anda
    • Docker ID: _json_key

    • Sandi: Tempelkan konten azure-pipelines-publisher-oneline.json.

    • Nama koneksi layanan: gcr-tutorial

  5. Klik Simpan untuk membuat koneksi.

Membangun secara berkelanjutan

Sekarang Anda dapat menggunakan Azure Pipelines untuk menyiapkan continuous integration. Untuk setiap commit yang dikirim ke repositori Git, Azure Pipelines akan membangun kode dan mengemas artefak build ke dalam container Docker. Kemudian, container akan dipublikasikan ke Artifact Registry.

Repositori sudah berisi Dockerfile berikut:

#
# Copyright 2020 Google LLC
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
# 
#   http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

FROM mcr.microsoft.com/dotnet/aspnet:6.0
EXPOSE 8080

#------------------------------------------------------------------------------
# Copy publishing artifacts.
#------------------------------------------------------------------------------

WORKDIR /app
COPY CloudDemo.MvcCore/bin/Release/net6.0/publish/ /app/

ENV ASPNETCORE_URLS=http://0.0.0.0:8080

#------------------------------------------------------------------------------
# Run application in Kestrel.
#------------------------------------------------------------------------------

ENTRYPOINT ["dotnet", "CloudDemo.MvcCore.dll"]

Sekarang Anda akan membuat pipeline baru yang menggunakan sintaksis YAML:

  1. Dengan menggunakan Visual Studio atau klien git command line, clone repositori Git baru Anda.
  2. Di root repositori, buat file bernama azure-pipelines.yml.
  3. Salin kode berikut ke dalam file:

    resources:
    - repo: self
      fetchDepth: 1
    pool:
      vmImage: ubuntu-22.04
    trigger:
    - master
    variables:
      TargetFramework: 'net6.0'
      BuildConfiguration: 'Release'
      DockerImageName: 'PROD_PROJECT_ID/docker/CloudDemo'
    steps:
    - task: DotNetCoreCLI@2
      displayName: Publish
      inputs:
        projects: 'applications/clouddemo/netcore/CloudDemo.MvcCore.sln'
        publishWebProjects: false
        command: publish
        arguments: '--configuration $(BuildConfiguration) --framework=$(TargetFramework)'
        zipAfterPublish: false
        modifyOutputPath: false
    - task: PublishBuildArtifacts@1
      displayName: 'Publish Artifact'
      inputs:
        PathtoPublish: '$(build.artifactstagingdirectory)'
    - task: Docker@2
      displayName: 'Login to Container Registry'
      inputs:
        command: login
        containerRegistry: 'gcr-tutorial'
    - task: Docker@2
      displayName: 'Build and push image'
      inputs:
        Dockerfile: 'applications/clouddemo/netcore/Dockerfile'
        command: buildAndPush
        repository: '$(DockerImageName)'

    Ganti PROJECT_ID dengan nama project produksi Anda, lalu simpan file.

    Karena Cloud Run adalah lingkungan berbasis Linux, pipeline menggunakan agen build berbasis Linux.

  4. Lakukan commit pada perubahan Anda dan kirimkan ke Azure Pipelines.

    Visual Studio

    1. Buka Team Explorer, lalu klik ikon Home.
    2. Klik Perubahan.
    3. Masukkan pesan commit seperti Add pipeline definition.
    4. Klik Commit All and Push.

    Command line

    1. Siapkan semua file yang diubah:

      git add -A
      
    2. Lakukan perubahan pada repositori lokal:

      git commit -m "Add pipeline definition"
      
    3. Kirim perubahan ke Azure DevOps:

      git push
      
  5. Di menu Azure DevOps, pilih Pipelines, lalu klik Create Pipeline.

  6. Pilih Azure Repos Git.

  7. Pilih repositori Anda.

  8. Di halaman Tinjau YAML pipeline Anda, klik Jalankan.

    Build baru dipicu. Proses build mungkin memerlukan waktu sekitar dua menit.

  9. Untuk memverifikasi bahwa image telah dipublikasikan ke Artifact Registry, beralihlah ke project produksi Anda di konsol Cloud de Confiance , pilih Artifact Registry > docker, lalu klik CloudDemo.

    Satu gambar dan tag gambar ini ditampilkan. Tag sesuai dengan ID numerik build yang dijalankan di Azure Pipelines.

Men-deploy secara berkelanjutan

Dengan Azure Pipelines yang otomatis membangun kode dan memublikasikan image Docker untuk setiap commit, Anda kini dapat mengalihkan perhatian ke deployment.

Tidak seperti beberapa sistem integrasi berkelanjutan lainnya, Azure Pipelines membedakan antara membangun dan men-deploy, serta menyediakan serangkaian alat khusus berlabel Release Management untuk semua tugas terkait deployment.

Pengelolaan Rilis Azure Pipelines dibangun berdasarkan konsep berikut:

  • Rilis mengacu pada sekumpulan artefak yang membentuk versi tertentu aplikasi Anda dan biasanya merupakan hasil dari proses build.
  • Deployment mengacu pada proses pengambilan rilis dan men-deploy-nya ke lingkungan tertentu.
  • Deployment melakukan serangkaian tugas, yang dapat dikelompokkan dalam tugas.
  • Tahapan memungkinkan Anda menyegmentasikan pipeline dan dapat digunakan untuk mengatur deployment ke beberapa lingkungan—misalnya, lingkungan pengembangan dan pengujian.

Anda menyiapkan pipeline rilis agar dipicu setiap kali build baru selesai. Pipeline terdiri dari dua tahap: pengembangan dan produksi. Di setiap tahap, pipeline rilis menggunakan image Docker yang dihasilkan oleh pipeline build, lalu pipeline men-deploy-nya ke Cloud Run.

Pipeline build yang Anda konfigurasi sebelumnya memberi tag pada setiap image Docker dengan ID build sebelum memublikasikannya ke Artifact Registry. Oleh karena itu, di pipeline rilis, Anda menggunakan variabel $BUILD_BUILDID untuk mengidentifikasi image Docker yang tepat untuk di-deploy.

Mengonfigurasi Cloud Run

Cloud Run adalah lingkungan serverless yang terkelola sepenuhnya, sehingga Anda tidak perlu menyediakan infrastruktur apa pun. Untuk membantu menjaga keamanan deployment Cloud Run Anda, Anda perlu menyiapkan IAM.

Men-deploy dan menjalankan layanan Cloud Run melibatkan beberapa identitas, seperti yang ditunjukkan diagram berikut.

Identitas yang berjalan sebagai akun layanan dalam deployment Cloud Run.

Setiap identitas ini diterapkan sebagai akun layanan dan digunakan untuk tujuan tertentu, seperti yang dijelaskan dalam tabel berikut.

Service account Digunakan oleh Tujuan Peran yang diperlukan
Azure Pipelines Publisher Membangun pipeline Memublikasikan image Docker ke Artifact Registry roles/artifactregistry.writer (khusus project produksi)
Azure Pipelines Deployer Pipeline rilis Mulai deployment Cloud Run roles/run.admin
Luncurkan layanan CloudDemo roles/iam.serviceAccountUser
Agen layanan Cloud Run Cloud Run Mengambil image Docker dari Artifact Registry roles/artifactregistry.reader (khusus project produksi)
Runner CloudDemo (akun layanan runtime) Layanan CloudDemo Mengakses resource di Cloud de Confiance Tidak ada

Anda telah membuat dan mengonfigurasi akun layanan Azure Pipelines Publisher. Di bagian berikut, Anda akan membuat dan mengonfigurasi akun layanan yang tersisa.

Mengonfigurasi akun layanan Cloud Run

  1. Buka Cloud Shell.

  2. Lakukan inisialisasi variabel lingkungan berikut:

    DEV_PROJECT_ID=DEV_PROJECT_ID
    PROD_PROJECT_ID=PROD_PROJECT_ID
    

    Ganti kode berikut:

    • DEV_PROJECT_ID: project ID project pengembangan Anda
    • PROD_PROJECT_ID: project ID project produksi Anda
  3. Aktifkan Cloud Run dan Compute Engine API di project pengembangan dan produk:

    gcloud services enable run.googleapis.com --project=$DEV_PROJECT_ID
    gcloud services enable run.googleapis.com --project=$PROD_PROJECT_ID
    

    Mengaktifkan API ini akan menyebabkan akun agen layanan Cloud Run dibuat di project Anda.

  4. Beri dua akun agen layanan Cloud Run akses ke Artifact Registry di project produksi tempat image Docker Anda disimpan:

    DEV_PROJECT_NUMBER=$(gcloud projects describe $DEV_PROJECT_ID \
        --format='value(projectNumber)')
    PROD_PROJECT_NUMBER=$(gcloud projects describe $PROD_PROJECT_ID \
        --format='value(projectNumber)')
    
    gcloud projects add-iam-policy-binding $PROD_PROJECT_ID \
        --member=serviceAccount:service-$DEV_PROJECT_NUMBER@serverless-robot-prod.s3ns-system.iam.gserviceaccount.com \
        --role roles/artifactregistry.reader
    
    gcloud projects add-iam-policy-binding $PROD_PROJECT_ID \
        --member=serviceAccount:service-$PROD_PROJECT_NUMBER@serverless-robot-prod.s3ns-system.iam.gserviceaccount.com \
        --role roles/artifactregistry.reader
    

Mengonfigurasi akun pelaksana CloudDemo

Sekarang Anda dapat mengonfigurasi akun runner CloudDemo, yang merupakan akun layanan runtime kustom untuk layanan CloudDemo:

  • Buat akun layanan bernama CloudDemo-runner:

    gcloud iam service-accounts create clouddemo-runner \
        --display-name="CloudDemo Runner" \
        --project=$DEV_PROJECT_ID
    
    gcloud iam service-accounts create clouddemo-runner \
        --display-name="CloudDemo Runner" \
        --project=$PROD_PROJECT_ID
    
    DEV_CLOUDDEMO_RUNNER=clouddemo-runner@$DEV_PROJECT_ID.s3ns.iam.gserviceaccount.com
    
    PROD_CLOUDDEMO_RUNNER=clouddemo-runner@$PROD_PROJECT_ID.s3ns.iam.gserviceaccount.com
    

Mengonfigurasi akun Azure Pipelines Deployer

Terakhir, buat dan konfigurasi akun Azure Pipelines Deployer, yang digunakan pipeline rilis Azure untuk men-deploy ke Cloud Run.

  1. Buat akun layanan bernama azure-pipelines-deployer:

    gcloud iam service-accounts create azure-pipelines-deployer \
        --display-name="Azure Pipelines Deployer" \
        --project=$PROD_PROJECT_ID
    
    AZURE_PIPELINES_DEPLOYER=azure-pipelines-deployer@$PROD_PROJECT_ID.s3ns.iam.gserviceaccount.com
    
  2. Tetapkan peran IAM yang diperlukan untuk men-deploy layanan atau revisi Cloud Run baru di project pengembangan:

    gcloud projects add-iam-policy-binding $DEV_PROJECT_ID \
        --member serviceAccount:$AZURE_PIPELINES_DEPLOYER \
        --role roles/run.admin
    
    gcloud iam service-accounts add-iam-policy-binding \
        $DEV_CLOUDDEMO_RUNNER \
        --member=serviceAccount:$AZURE_PIPELINES_DEPLOYER \
        --role="roles/iam.serviceAccountUser" \
        --project=$DEV_PROJECT_ID
    
  3. Tetapkan set peran yang sama untuk project produksi:

    gcloud projects add-iam-policy-binding $PROD_PROJECT_ID \
        --member serviceAccount:$AZURE_PIPELINES_DEPLOYER \
        --role roles/run.admin
    
    gcloud iam service-accounts add-iam-policy-binding \
        $PROD_CLOUDDEMO_RUNNER \
        --member=serviceAccount:$AZURE_PIPELINES_DEPLOYER \
        --role="roles/iam.serviceAccountUser" \
        --project=$PROD_PROJECT_ID
    
  4. Buat kunci akun layanan:

    gcloud iam service-accounts keys create azure-pipelines-deployer.json \
        --iam-account=$AZURE_PIPELINES_DEPLOYER \
        --project=$PROD_PROJECT_ID
    
    cat azure-pipelines-deployer.json | base64 -w 0
    

    Anda menggunakan output perintah ini saat mengonfigurasi pipeline rilis.

Mengonfigurasi pipeline rilis

Sekarang Anda dapat kembali ke Azure Pipelines untuk mengotomatiskan deployment, yang mencakup langkah-langkah berikut:

  • Men-deploy ke lingkungan pengembangan.
  • Meminta persetujuan manual sebelum memulai deployment ke lingkungan produksi.
  • Men-deploy ke lingkungan produksi.

Membuat definisi rilis

Pertama, buat definisi rilis:

  1. Di menu Azure DevOps, pilih Pipelines > Releases.
  2. Klik Pipeline baru.
  3. Dari daftar template, pilih Empty job.
  4. Saat Anda diminta untuk memasukkan nama panggung, masukkan Development.
  5. Di bagian atas layar, beri nama pipeline CloudDemo.
  6. Dalam diagram pipeline, di samping Artifacts, klik Add.
  7. Pilih Build, lalu tambahkan setelan berikut:
    • Jenis sumber: Build
    • Sumber (pipeline build): Pilih definisi build (hanya ada satu opsi)
    • Versi default: Terbaru
    • Alias Sumber: build
  8. Klik Tambahkan.
  9. Di kotak Artifact, klik Continuous deployment trigger (ikon petir) untuk menambahkan pemicu deployment.
  10. Di bagian Pemicu deployment berkelanjutan, setel tombol ke Diaktifkan.
  11. Klik Simpan.
  12. Masukkan komentar jika Anda mau, lalu konfirmasi dengan mengklik Oke.

    Pipeline akan ditampilkan seperti berikut.

    Tampilan pipeline penyiapan deployment otomatis.

Men-deploy ke project pengembangan

Setelah definisi rilis dibuat, Anda kini dapat mengonfigurasi deployment Cloud Run ke project pengembangan.

  1. Di menu, beralihlah ke tab Tugas.
  2. Klik Agent job.
  3. Tetapkan Agent specification ke ubuntu-22.04.
  4. Di samping Tugas agen, klik Tambahkan tugas ke tugas agen untuk menambahkan langkah ke fase.
  5. Pilih tugas Command line, lalu klik Tambahkan.
  6. Klik tugas yang baru ditambahkan dan konfigurasi setelan berikut:

    1. Nama tampilan: Deploy image to development project
    2. Skrip:

      gcloud auth activate-service-account \
          --quiet \
          --key-file <(echo $(ServiceAccountKey) | base64 -d) && \
      gcloud run deploy clouddemo \
          --quiet \
          --service-account=clouddemo-runner@$(CloudRun.ProjectId.Development).s3ns.iam.gserviceaccount.com \
          --allow-unauthenticated \
          --image=$(CloudRun.Region)-docker.pkg.dev/$(ContainerRegistry.ProjectId)/docker/clouddemo:$BUILD_BUILDID \
          --platform=managed \
          --region=$(CloudRun.Region) \
          --project=$(CloudRun.ProjectId.Development)
      

      Perintah ini mendapatkan kunci akun layanan dari variabel lingkungan, lalu menggunakan gcloud CLI untuk men-deploy aplikasi ke Cloud Run. gcloud CLI tersedia secara default di agen Azure Pipelines.

  7. Beralih ke tab Variabel dan tambahkan variabel berikut.

    Nama Nilai Secret
    ServiceAccountKey Kunci akun layanan dibuat untuk azure-pipelines-deployer sebelumnya. Ya
    ContainerRegistry.ProjectId Project ID project produksi Anda.
    CloudRun.Region Region yang Anda pilih sebelumnya untuk men-deploy resource Artifact Registry.
    CloudRun.ProjectId.Development Project ID project pengembangan Anda.
    CloudRun.ProjectId.Production Project ID project produksi Anda.
  8. Klik Simpan.

  9. Masukkan komentar jika Anda mau, lalu konfirmasi dengan mengklik Oke.

Men-deploy ke cluster produksi

Terakhir, Anda mengonfigurasi deployment ke project produksi:

  1. Di menu, beralihlah ke tab Pipeline.
  2. Di kotak Stages, pilih Add > New stage.
  3. Dari daftar template, pilih Empty job.
  4. Saat Anda diminta untuk memasukkan nama panggung, masukkan Production.
  5. Klik ikon petir pada tahap yang baru dibuat.
  6. Konfigurasi setelan berikut:

    1. Pilih pemicu: Setelah tahap
    2. Tahap: Pengembangan
    3. Persetujuan sebelum deployment: (diaktifkan)
    4. Pemberi persetujuan: Pilih nama pengguna Anda.

    Pipeline menampilkan tampilan yang mirip dengan berikut ini.

    Tampilan pipeline penyiapan deployment cluster.

  7. Beralihlah ke tab Tugas.

  8. Arahkan kursor ke tab Tasks, lalu pilih Tasks > Production.

  9. Klik Agent job.

  10. Tetapkan Agent specification ke ubuntu-22.04.

  11. Klik Tambahkan tugas ke pekerjaan agen untuk menambahkan langkah ke fase.

  12. Pilih tugas Command line, lalu klik Add.

  13. Klik tugas yang baru ditambahkan dan konfigurasi setelan berikut:

    1. Nama tampilan: Deploy image to production project
    2. Skrip:

      gcloud auth activate-service-account \
          --quiet \
          --key-file <(echo $(ServiceAccountKey) | base64 -d) && \
      gcloud run deploy clouddemo \
          --quiet \
          --service-account=clouddemo-runner@$(CloudRun.ProjectId.Production).s3ns.iam.gserviceaccount.com \
          --allow-unauthenticated \
          --image=$(CloudRun.Region)-docker.pkg.dev/$(ContainerRegistry.ProjectId)/docker/clouddemo:$BUILD_BUILDID \
          --platform=managed \
          --region=$(CloudRun.Region) \
          --project=$(CloudRun.ProjectId.Production)
      
  14. Klik Simpan.

  15. Masukkan komentar jika Anda mau, lalu konfirmasi dengan mengklik Oke.

Menjalankan pipeline

Setelah mengonfigurasi seluruh pipeline, Anda dapat mengujinya dengan melakukan perubahan kode sumber:

  1. Di komputer lokal Anda, buka file applications\clouddemo\netcore\CloudDemo.MvcCore\Views\Home\Index.cshtml dari repositori Git yang Anda clone sebelumnya.
  2. Ubah nilai ViewBag.Title dari Home Page menjadi Home Page Cloud Run.
  3. Lakukan commit pada perubahan, lalu kirimkan ke Azure Pipelines.

    Visual Studio

    1. Buka Team Explorer, lalu klik ikon Home.
    2. Klik Perubahan.
    3. Masukkan pesan commit seperti Change site title.
    4. Klik Commit All and Push.

    Command line

    1. Siapkan semua file yang diubah:

      git add -A
      
    2. Lakukan perubahan pada repositori lokal:

      git commit -m "Change site title"
      
    3. Kirim perubahan ke Azure Pipelines:

      git push
      
  4. Di menu Azure DevOps, pilih Pipelines. Build dipicu.

  5. Setelah build selesai, pilih Pipelines > Releases. Proses rilis dimulai.

  6. Klik Release-1 untuk membuka halaman detail, lalu tunggu hingga status tahap Development berubah menjadi Succeeded.

  7. Di konsol Cloud de Confiance , alihkan ke project pengembangan.

  8. Di menu, pilih Compute > Cloud Run.

    Layanan clouddemo berhasil di-deploy.

    Status deployment di Cloud Run.

  9. Klik clouddemo untuk melihat detail selengkapnya.

    URL ditampilkan yang menunjukkan bahwa Cloud Run menyediakan layanan.

  10. Buka URL di tab browser baru untuk memverifikasi bahwa aplikasi CloudDemo di-deploy dan menggunakan judul kustom.

  11. Di Azure Pipelines, klik Setujui (di samping tahap Produksi) untuk mempromosikan deployment ke lingkungan produksi.

  12. (Opsional) Masukkan komentar.

  13. Konfirmasi dengan mengklik Setujui, dan tunggu hingga status lingkungan Produksi berubah menjadi Berhasil.

  14. Di konsol Cloud de Confiance , alihkan ke project produksi.

  15. Di menu, pilih Compute > Cloud Run.

    Layanan clouddemo di-deploy ke project produksi.

  16. Klik clouddemo untuk melihat detail selengkapnya.

    URL akan ditampilkan yang menunjukkan bahwa Cloud Run telah menyediakan layanan.

  17. Buka URL di tab browser baru untuk memverifikasi bahwa aplikasi CloudDemo di-deploy ke produksi dan menggunakan judul kustom.

Pembersihan

Agar tidak menimbulkan biaya lebih lanjut setelah Anda menyelesaikan tutorial ini, hapus entitas yang telah Anda buat.

Menghapus project Azure Pipelines

Untuk menghapus project Azure Pipelines, lihat dokumentasi Azure DevOps Services. Menghapus project Azure Pipelines akan menyebabkan semua perubahan kode sumber hilang.

Hapus Cloud de Confiance project pengembangan dan produksi

  1. Di Konsol Cloud de Confiance , buka halaman Manage resources.

    Buka Kelola resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Langkah berikutnya