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 Google Cloud 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 contoh codebase. 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 Google Cloud.
  • Gunakan pengelolaan rilis Azure Pipelines untuk mengatur deployment Cloud Run.

Biaya

Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih sebagai berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.

Pengguna Google Cloud baru mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

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 Google Cloud project untuk pengembangan. Tutorial ini menyebut project ini sebagai project pengembangan.
  2. Buat Google Cloud project untuk produksi. Tutorial ini merujuk pada project ini sebagai project produksi.
  3. Verify that billing is enabled for your Google Cloud project.

  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 New Project.
  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 layananGoogle Cloud di project produksi Anda:

  1. Di konsol Google Cloud , alihkan ke project produksi.
  2. In the Google Cloud console, activate Cloud Shell.

    Activate 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.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.

  10. 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 Google Cloud , 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 diimplementasikan 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 Google Cloud 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.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.iam.gserviceaccount.com \
          --role roles/artifactregistry.reader
      

    Mengonfigurasi akun peluncur 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.iam.gserviceaccount.com
      
      PROD_CLOUDDEMO_RUNNER=clouddemo-runner@$PROD_PROJECT_ID.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.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 kumpulan 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 New pipeline.
    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 Artefak, klik Pemicu deployment berkelanjutan (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).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 Tahapan, pilih Tambahkan > Tahapan baru.
    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 tugas 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).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 Google Cloud , 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 telah 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 Google Cloud , 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 yang ditampilkan menunjukkan bahwa Cloud Run 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 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 Google Cloud project pengembangan dan produksi

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Langkah berikutnya