Bagikan melalui


Tutorial: Menyebarkan pelari dan agen CI/CD yang dihost sendiri dengan pekerjaan Azure Container Apps

GitHub Actions dan Azure Pipelines memungkinkan Anda menjalankan alur kerja CI/CD dengan runner dan agen yang dihost sendiri. Anda dapat menjalankan runner dan agen yang dihost sendiri menggunakan pekerjaan Azure Container Apps berbasis peristiwa.

Pelari yang dihost sendiri berguna saat Anda perlu menjalankan alur kerja yang memerlukan akses ke sumber daya atau alat lokal yang tidak tersedia untuk runner yang dihosting cloud. Misalnya, pelari yang dihost sendiri dalam pekerjaan Aplikasi Kontainer memungkinkan alur kerja Anda mengakses sumber daya di dalam jaringan virtual pekerjaan yang tidak dapat diakses oleh pelari yang dihosting cloud.

Menjalankan pelari yang dihost sendiri sebagai pekerjaan berbasis peristiwa memungkinkan Anda memanfaatkan sifat tanpa server Azure Container Apps. Pekerjaan dijalankan secara otomatis ketika alur kerja dipicu dan keluar saat pekerjaan selesai.

Anda hanya membayar untuk waktu pekerjaan berjalan.

Dalam tutorial ini, Anda mempelajari cara menjalankan runner GitHub Actions sebagai pekerjaan Container Apps berbasis peristiwa.

  • Membuat lingkungan Container Apps untuk menyebarkan runner yang dihost sendiri
  • Membuat repositori GitHub untuk menjalankan alur kerja yang menggunakan runner yang dihost sendiri
  • Membangun gambar kontainer yang menjalankan runner GitHub Actions
  • Menyebarkan runner sebagai pekerjaan ke lingkungan Container Apps
  • Membuat alur kerja yang menggunakan runner yang dihost sendiri dan memverifikasi bahwa alur kerja berjalan

Penting

Pelari yang dihost sendiri hanya direkomendasikan untuk repositori privat . Menggunakannya dengan repositori publik dapat memungkinkan kode berbahaya dijalankan pada pelari yang dihost sendiri. Untuk informasi selengkapnya, lihat Keamanan pelari yang dihost sendiri.

Dalam tutorial ini, Anda mempelajari cara menjalankan agen Azure Pipelines sebagai pekerjaan Aplikasi Kontainer berbasis peristiwa.

  • Membuat lingkungan Container Apps untuk menyebarkan agen yang dihost sendiri
  • Membuat organisasi dan proyek Azure DevOps
  • Membangun gambar kontainer yang menjalankan agen Azure Pipelines
  • Menggunakan pekerjaan manual untuk membuat agen tempat penampung di lingkungan Container Apps
  • Menyebarkan agen sebagai pekerjaan ke lingkungan Container Apps
  • Membuat alur yang menggunakan agen yang dihost sendiri dan verifikasi bahwa alur berjalan

Penting

Agen yang dihost sendiri hanya direkomendasikan untuk proyek privat . Menggunakannya dengan proyek publik dapat memungkinkan kode berbahaya dijalankan pada agen yang dihost sendiri. Untuk informasi selengkapnya, lihat Keamanan agen yang dihost sendiri.

Catatan

Aplikasi dan pekerjaan kontainer tidak mendukung menjalankan Docker dalam kontainer. Setiap langkah dalam alur kerja Anda yang menggunakan perintah Docker akan gagal saat dijalankan pada runner atau agen yang dihost sendiri dalam pekerjaan Aplikasi Kontainer.

Prasyarat

Lihat batasan pekerjaan untuk daftar batasan.

Siapkan

Untuk masuk ke Azure dari CLI, jalankan perintah berikut dan ikuti perintah untuk menyelesaikan proses autentikasi.

az login

Untuk memastikan Anda menjalankan CLI versi terbaru, jalankan perintah peningkatan.

az upgrade

Selanjutnya, instal atau perbarui ekstensi Azure Container Apps untuk CLI.

Jika Anda menerima kesalahan tentang parameter yang hilang saat menjalankan az containerapp perintah di Azure CLI atau cmdlet dari Az.App modul di PowerShell, pastikan Anda memiliki versi terbaru ekstensi Azure Container Apps yang diinstal.

az extension add --name containerapp --upgrade

Catatan

Mulai Mei 2024, ekstensi Azure CLI tidak lagi mengaktifkan fitur pratinjau secara default. Untuk mengakses fitur pratinjau Container Apps, instal ekstensi Container Apps dengan --allow-preview true.

az extension add --name containerapp --upgrade --allow-preview true

Sekarang setelah ekstensi atau modul saat ini diinstal, daftarkan Microsoft.App namespace layanan dan Microsoft.OperationalInsights .

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

Membuat variabel lingkungan

Setelah penyiapan Azure CLI selesai, Anda dapat menentukan variabel lingkungan yang digunakan di seluruh artikel ini.

RESOURCE_GROUP="jobs-sample"
LOCATION="northcentralus"
ENVIRONMENT="env-jobs-sample"
JOB_NAME="github-actions-runner-job"
RESOURCE_GROUP="jobs-sample"
LOCATION="northcentralus"
ENVIRONMENT="env-jobs-sample"
JOB_NAME="azure-pipelines-agent-job"
PLACEHOLDER_JOB_NAME="placeholder-agent-job"

Membuat lingkungan Aplikasi Kontainer

Lingkungan Azure Container Apps bertindak sebagai batas aman di sekitar aplikasi dan pekerjaan kontainer sehingga mereka dapat berbagi jaringan yang sama dan berkomunikasi satu sama lain.

Catatan

Untuk membuat lingkungan Container Apps yang terintegrasi dengan jaringan virtual yang ada, lihat Menyediakan jaringan virtual ke lingkungan Azure Container Apps.

  1. Buat grup sumber daya menggunakan perintah berikut.

    az group create \
        --name "$RESOURCE_GROUP" \
        --location "$LOCATION"
    
  2. Buat lingkungan Container Apps menggunakan perintah berikut.

    az containerapp env create \
        --name "$ENVIRONMENT" \
        --resource-group "$RESOURCE_GROUP" \
        --location "$LOCATION"
    

Membuat repositori GitHub untuk menjalankan alur kerja

Untuk menjalankan alur kerja, Anda perlu membuat repositori GitHub yang berisi definisi alur kerja.

  1. Navigasi ke GitHub dan masuk.

  2. Buat repositori baru dengan memasukkan nilai berikut.

    Pengaturan Nilai
    Pemilik Pilih nama pengguna GitHub Anda.
    Nama repositori Masukkan nama untuk repositori Anda.
    Visibilitas Pilih Privat.
    Inisialisasi repositori ini dengan Pilih Tambahkan file README.

    Biarkan nilai lainnya sebagai pilihan defaultnya.

  3. Pilih Buat repositori.

  4. Di repositori baru Anda, pilih Tindakan.

  5. Cari templat alur kerja Sederhana dan pilih Konfigurasikan.

  6. Pilih Terapkan perubahan untuk menambahkan alur kerja ke repositori Anda.

Alur kerja berjalan pada runner yang dihosting ubuntu-latest GitHub dan mencetak pesan ke konsol. Kemudian, Anda mengganti runner yang dihosting GitHub dengan runner yang dihost sendiri.

Mendapatkan token akses pribadi GitHub

Untuk menjalankan runner yang dihost sendiri, Anda perlu membuat token akses pribadi (PAT) di GitHub. Setiap kali runner dimulai, PAT digunakan untuk menghasilkan token untuk mendaftarkan runner dengan GitHub. PAT juga digunakan oleh aturan skala pelari GitHub Actions untuk memantau antrean alur kerja repositori dan memulai runner sesuai kebutuhan.

Catatan

Token Akses Pribadi (PATs) memiliki tanggal kedaluwarsa. Putar token Anda secara teratur untuk memastikan token tetap valid (tidak kedaluwarsa) untuk mempertahankan layanan yang tidak terganggu.

  1. Di GitHub, pilih gambar profil Anda di sudut kanan atas dan pilih Pengaturan.

  2. Pilih Pengaturan pengembang.

  3. Di bawah Token akses pribadi, pilih Token halus.

  4. Klik Buat token baru.

  5. Di layar Token akses pribadi detail baru, masukkan nilai berikut.

    Pengaturan Nilai
    Nama token Masukkan nama untuk token Anda.
    kedaluwarsa Pilih 30 hari.
    Akses repositori Pilih Hanya pilih repositori dan pilih repositori yang Anda buat.

    Masukkan nilai berikut untuk izin Repositori.

    Pengaturan Nilai
    Tindakan Pilih Baca-saja.
    Administrasi Pilih Baca dan tulis.
    Metadata Pilih Baca-saja.
  6. Pilih Buat token.

  7. Salin nilai token.

  8. Tentukan variabel yang digunakan untuk mengonfigurasi runner dan aturan skala nanti.

    GITHUB_PAT="<GITHUB_PAT>"
    REPO_OWNER="<REPO_OWNER>"
    REPO_NAME="<REPO_NAME>"
    

    Ganti tempat penampung dengan nilai berikut:

    Placeholder Nilai
    <GITHUB_PAT> PAT GitHub yang Anda buat.
    <REPO_OWNER> Pemilik repositori yang Anda buat sebelumnya. Nilai ini biasanya merupakan nama pengguna GitHub Anda.
    <REPO_NAME> Nama repositori yang Anda buat sebelumnya. Nilai ini adalah nama yang sama dengan yang Anda masukkan di bidang Nama repositori.

Membangun gambar kontainer runner GitHub Actions

Untuk membuat runner yang dihost sendiri, Anda perlu membuat gambar kontainer yang menjalankan runner. Di bagian ini, Anda membangun gambar kontainer dan mendorongnya ke registri kontainer.

Catatan

Gambar yang Anda buat dalam tutorial ini berisi runner dasar yang dihost sendiri yang cocok untuk berjalan sebagai pekerjaan Container Apps. Anda dapat menyesuaikannya untuk menyertakan alat atau dependensi tambahan yang diperlukan alur kerja Anda.

  1. Tentukan nama untuk gambar dan registri kontainer Anda.

    CONTAINER_IMAGE_NAME="github-actions-runner:1.0"
    CONTAINER_REGISTRY_NAME="<CONTAINER_REGISTRY_NAME>"
    

    Ganti <CONTAINER_REGISTRY_NAME> dengan nama unik untuk membuat registri kontainer. Nama registri kontainer harus unik dalam Azure dan panjangnya 5 hingga 50 karakter yang berisi angka dan huruf kecil saja.

  2. Buat registri kontainer.

    az acr create \
        --name "$CONTAINER_REGISTRY_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --location "$LOCATION" \
        --sku Basic
    
  3. Registri kontainer Anda harus mengizinkan token audiens Azure Resource Manager (ARM) untuk autentikasi agar dapat menggunakan identitas terkelola untuk menarik gambar.

    Gunakan perintah berikut untuk memeriksa apakah token ARM diizinkan untuk mengakses Azure Container Registry (ACR) Anda.

    az acr config authentication-as-arm show --registry "$CONTAINER_REGISTRY_NAME"
    

    Jika token ARM diizinkan, perintah akan menghasilkan yang berikut.

    {
      "status": "enabled"
    }
    

    status Jika adalah disabled, izinkan token ARM dengan perintah berikut.

    az acr config authentication-as-arm update --registry "$CONTAINER_REGISTRY_NAME" --status enabled
    
  4. Dockerfile untuk membuat gambar runner tersedia di GitHub. Jalankan perintah berikut untuk mengkloning repositori dan membangun gambar kontainer di cloud menggunakan az acr build perintah .

    az acr build \
        --registry "$CONTAINER_REGISTRY_NAME" \
        --image "$CONTAINER_IMAGE_NAME" \
        --file "Dockerfile.github" \
        "https://github.com/Azure-Samples/container-apps-ci-cd-runner-tutorial.git"
    

    Gambar sekarang tersedia di registri kontainer.

Membuat identitas terkelola yang ditetapkan pengguna

Untuk menghindari penggunaan kredensial administratif, tarik gambar dari repositori privat di Microsoft Azure Container Registry menggunakan identitas terkelola untuk autentikasi. Jika memungkinkan, gunakan identitas terkelola yang ditetapkan pengguna untuk menarik gambar.

  1. Buat identitas terkelola yang ditetapkan pengguna. Sebelum Anda menjalankan perintah berikut, pilih nama untuk identitas terkelola \<PLACEHOLDER\> Anda dan ganti dengan nama.

    IDENTITY="<YOUR_IDENTITY_NAME>"
    
    az identity create \
        --name $IDENTITY \
        --resource-group $RESOURCE_GROUP
    
  2. Dapatkan ID sumber daya identitas.

    IDENTITY_ID=$(az identity show \
        --name $IDENTITY \
        --resource-group $RESOURCE_GROUP \
        --query id \
        --output tsv)
    

Menyebarkan runner yang dihost sendiri sebagai pekerjaan

Anda sekarang dapat membuat pekerjaan yang menggunakan untuk menggunakan gambar kontainer. Di bagian ini, Anda membuat pekerjaan yang menjalankan runner yang dihost sendiri dan mengautentikasi dengan GitHub menggunakan PAT yang Anda buat sebelumnya. Pekerjaan menggunakan github-runner aturan skala untuk membuat eksekusi pekerjaan berdasarkan jumlah eksekusi alur kerja yang tertunda.

  1. Buat pekerjaan di lingkungan Aplikasi Kontainer.

    az containerapp job create \
        --name "$JOB_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --environment "$ENVIRONMENT" \
        --trigger-type Event \
        --replica-timeout 1800 \
        --replica-retry-limit 0 \
        --replica-completion-count 1 \
        --parallelism 1 \
        --image "$CONTAINER_REGISTRY_NAME.azurecr.io/$CONTAINER_IMAGE_NAME" \
        --min-executions 0 \
        --max-executions 10 \
        --polling-interval 30 \
        --scale-rule-name "github-runner" \
        --scale-rule-type "github-runner" \
        --scale-rule-metadata "githubAPIURL=https://api.github.com" "owner=$REPO_OWNER" "runnerScope=repo" "repos=$REPO_NAME" "targetWorkflowQueueLength=1" \
        --scale-rule-auth "personalAccessToken=personal-access-token" \
        --cpu "2.0" \
        --memory "4Gi" \
        --secrets "personal-access-token=$GITHUB_PAT" \
        --env-vars "GITHUB_PAT=secretref:personal-access-token" "GH_URL=https://github.com/$REPO_OWNER/$REPO_NAME" "REGISTRATION_TOKEN_API_URL=https://api.github.com/repos/$REPO_OWNER/$REPO_NAME/actions/runners/registration-token" \
        --registry-server "$CONTAINER_REGISTRY_NAME.azurecr.io" \
        --mi-user-assigned "$IDENTITY_ID" \
        --registry-identity "$IDENTITY_ID"
    

    Tabel berikut ini menjelaskan parameter kunci yang digunakan dalam perintah .

    Parameter Deskripsi
    --replica-timeout Durasi maksimum yang dapat dijalankan replika.
    --replica-retry-limit Berapa kali untuk mencoba kembali replika yang gagal.
    --replica-completion-count Jumlah replika yang berhasil diselesaikan sebelum eksekusi pekerjaan dianggap berhasil.
    --parallelism Jumlah replika untuk memulai per eksekusi pekerjaan.
    --min-executions Jumlah minimum eksekusi pekerjaan yang akan dijalankan per interval polling.
    --max-executions Jumlah maksimum eksekusi pekerjaan yang akan dijalankan per interval polling.
    --polling-interval Interval polling untuk mengevaluasi aturan skala.
    --scale-rule-name Nama aturan skala.
    --scale-rule-type Jenis aturan skala yang akan digunakan. Untuk mempelajari selengkapnya tentang penskala runner GitHub, lihat dokumentasi KEDA.
    --scale-rule-metadata Metadata untuk aturan skala. Jika Anda menggunakan GitHub Enterprise, perbarui githubAPIURL dengan URL API-nya.
    --scale-rule-auth Autentikasi untuk aturan skala.
    --secrets Rahasia yang digunakan untuk pekerjaan tersebut.
    --env-vars Variabel lingkungan yang digunakan untuk pekerjaan tersebut.
    --registry-server Server registri kontainer yang akan digunakan untuk pekerjaan tersebut. Untuk Azure Container Registry, perintah secara otomatis mengonfigurasi autentikasi.
    --mi-user-assigned ID sumber daya identitas terkelola yang ditetapkan pengguna untuk ditetapkan ke pekerjaan.
    --registry-identity ID sumber daya identitas terkelola untuk mengautentikasi dengan server registri alih-alih menggunakan nama pengguna dan kata sandi. Jika memungkinkan, penetapan peran 'acrpull' dibuat untuk identitas secara otomatis.

    Konfigurasi aturan skala menentukan sumber peristiwa untuk dipantau. Aturan dievaluasi pada setiap interval polling untuk menentukan berapa banyak eksekusi pekerjaan yang akan dipicu. Untuk mempelajari selengkapnya, lihat Mengatur aturan penskalakan.

Pekerjaan berbasis peristiwa sekarang dibuat di lingkungan Aplikasi Kontainer.

Menjalankan alur kerja dan memverifikasi pekerjaan

Pekerjaan dikonfigurasi untuk mengevaluasi aturan skala setiap 30 detik. Selama setiap evaluasi, ini memeriksa jumlah eksekusi alur kerja yang tertunda yang memerlukan runner yang dihost sendiri dan memulai eksekusi pekerjaan baru untuk alur kerja yang tertunda, hingga maksimum 10 eksekusi yang dikonfigurasi.

Untuk memverifikasi bahwa pekerjaan dikonfigurasi dengan benar, Anda mengubah alur kerja untuk menggunakan runner yang dihost sendiri dan memicu eksekusi alur kerja. Anda kemudian dapat melihat log eksekusi pekerjaan untuk melihat alur kerja berjalan.

  1. Di repositori GitHub, navigasikan ke alur kerja yang Anda buat sebelumnya. Ini adalah file YAML di .github/workflows direktori.

  2. Pilih Edit di tempat.

  3. Perbarui properti ke runs-onself-hosted:

    runs-on: self-hosted
    
  4. Pilih Terapkan perubahan....

  5. Pilih Terapkan perubahan.

  6. Navigasi ke tab Tindakan .

    Alur kerja baru sekarang diantrekan. Dalam waktu 30 detik, eksekusi pekerjaan akan dimulai dan alur kerja akan selesai segera setelahnya.

    Tunggu hingga tindakan selesai sebelum melanjutkan langkah berikutnya.

  7. Cantumkan eksekusi pekerjaan untuk mengonfirmasi eksekusi pekerjaan dibuat dan berhasil diselesaikan.

    az containerapp job execution list \
        --name "$JOB_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --output table \
        --query '[].{Status: properties.status, Name: name, StartTime: properties.startTime}'
    

Membuat proyek dan repositori Azure DevOps

Untuk menjalankan alur, Anda memerlukan proyek dan repositori Azure DevOps.

  1. Navigasi ke Azure DevOps dan masuk ke akun Anda.

  2. Pilih organisasi yang sudah ada atau buat organisasi baru.

  3. Di halaman gambaran umum organisasi, pilih Proyek baru dan masukkan nilai berikut.

    Pengaturan Nilai
    Nama proyek Masukkan nama untuk proyek Anda.
    Visibilitas Pilih Privat.
  4. Pilih Buat.

  5. Dari navigasi samping, pilih Repos.

  6. Di bawah Inisialisasi cabang utama dengan README atau .gitignore, pilih Tambahkan README.

  7. Biarkan nilai lainnya sebagai default dan pilih Inisialisasi.

Membuat kumpulan agen baru

Buat kumpulan agen baru untuk menjalankan runner yang dihost sendiri.

  1. Di proyek Azure DevOps Anda, perluas bilah navigasi kiri dan pilih Pengaturan proyek.

    Cuplikan layar tombol pengaturan proyek Azure DevOps.

  2. Di bawah bagian Alur di menu navigasi Pengaturan proyek, pilih Kumpulan agen.

    Cuplikan layar tombol kumpulan agen Azure DevOps.

  3. Pilih Tambahkan kumpulan dan masukkan nilai berikut.

    Pengaturan Nilai
    Kumpulan untuk ditautkan Pilih baru.
    Jenis kumpulan Pilih Dihost sendiri.
    Nama Masukkan container-apps.
    Memberikan izin akses ke semua alur Centang kotak ini.
  4. Pilih Buat.

Mendapatkan token akses pribadi Azure DevOps

Untuk menjalankan runner yang dihost sendiri, Anda perlu membuat token akses pribadi (PAT) di Azure DevOps. PAT digunakan untuk mengautentikasi runner dengan Azure DevOps. Ini juga digunakan oleh aturan skala untuk menentukan jumlah eksekusi alur yang tertunda dan memicu eksekusi pekerjaan baru.

[!NOTE]

Token Akses Pribadi (PATs) memiliki tanggal kedaluwarsa. Putar token Anda secara teratur untuk memastikan token tetap valid (tidak kedaluwarsa) untuk mempertahankan layanan yang tidak terganggu.

  1. Di Azure DevOps, pilih Pengaturan pengguna di samping gambar profil Anda di sudut kanan atas.

  2. Pilih Token akses pribadi.

  3. Di halaman Token akses pribadi, pilih Token Baru dan masukkan nilai berikut.

    Pengaturan Nilai
    Nama Masukkan nama untuk token Anda.
    Organisasi Pilih organisasi yang Anda pilih atau buat sebelumnya.
    Cakupan Pilih Kustom yang ditentukan.
    Perlihatkan semua cakupan Pilih Perlihatkan semua cakupan.
    Kumpulan Agen (Baca &kelola) Pilih Kumpulan Agen (Baca &kelola).

    Biarkan semua cakupan lainnya tidak dipilih.

  4. Pilih Buat.

  5. Salin nilai token ke lokasi yang aman.

    Anda tidak dapat mengambil token setelah meninggalkan halaman.

  6. Tentukan variabel yang digunakan untuk mengonfigurasi pekerjaan Container Apps nanti.

    AZP_TOKEN="<AZP_TOKEN>"
    ORGANIZATION_URL="<ORGANIZATION_URL>"
    AZP_POOL="container-apps"
    REGISTRATION_TOKEN_API_URL="<YOUR_REGISTRATION_TOKEN_API_URL>"
    

    Ganti tempat penampung dengan nilai berikut:

    Placeholder Nilai Komentar
    <AZP_TOKEN> PAT Azure DevOps yang Anda buat.
    <ORGANIZATION_URL> URL organisasi Azure DevOps Anda. Pastikan tidak ada trailing / yang ada di akhir URL. Misalnya, https://dev.azure.com/myorg atau https://myorg.visualstudio.com.
    <YOUR_REGISTRATION_TOKEN_API_URL> URL API token pendaftaran dalam file entrypoint.sh . Misalnya, 'https://myapi.example.com/get-token'

Membangun gambar kontainer agen Azure Pipelines

Untuk membuat agen yang dihost sendiri, Anda perlu membuat gambar kontainer yang menjalankan agen. Di bagian ini, Anda membangun gambar kontainer dan mendorongnya ke registri kontainer.

Catatan

Gambar yang Anda buat dalam tutorial ini berisi agen dasar yang dihost sendiri yang cocok untuk berjalan sebagai pekerjaan Aplikasi Kontainer. Anda dapat menyesuaikannya untuk menyertakan alat atau dependensi tambahan yang diperlukan alur Anda.

  1. Kembali ke terminal Anda, tentukan nama untuk gambar kontainer dan registri Anda.

    CONTAINER_IMAGE_NAME="azure-pipelines-agent:1.0"
    CONTAINER_REGISTRY_NAME="<CONTAINER_REGISTRY_NAME>"
    

    Ganti <CONTAINER_REGISTRY_NAME> dengan nama unik untuk membuat registri kontainer.

    Nama registri kontainer harus unik dalam Azure dan panjangnya 5 hingga 50 karakter yang berisi angka dan huruf kecil saja.

  2. Buat registri kontainer.

    az acr create \
        --name "$CONTAINER_REGISTRY_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --location "$LOCATION" \
        --sku Basic \
        --admin-enabled true
    
  3. Dockerfile untuk membuat gambar runner tersedia di GitHub. Jalankan perintah berikut untuk mengkloning repositori dan membangun gambar kontainer di cloud menggunakan az acr build perintah .

    az acr build \
        --registry "$CONTAINER_REGISTRY_NAME" \
        --image "$CONTAINER_IMAGE_NAME" \
        --file "Dockerfile.azure-pipelines" \
        "https://github.com/Azure-Samples/container-apps-ci-cd-runner-tutorial.git"
    

    Gambar sekarang tersedia di registri kontainer.

Membuat agen yang dihost sendiri tempat penampung

Sebelum Anda dapat menjalankan agen yang dihost sendiri di kumpulan agen baru Anda, Anda perlu membuat agen tempat penampung. Agen tempat penampung memastikan kumpulan agen tersedia. Alur yang menggunakan kumpulan agen gagal ketika tidak ada agen tempat penampung.

Anda dapat menjalankan pekerjaan manual untuk mendaftarkan agen tempat penampung offline. Pekerjaan berjalan sekali dan dapat dihapus. Agen tempat penampung tidak menggunakan sumber daya apa pun di Azure Container Apps atau Azure DevOps.

  1. Buat pekerjaan manual di lingkungan Container Apps yang membuat agen tempat penampung.

    az containerapp job create -n "$PLACEHOLDER_JOB_NAME" -g "$RESOURCE_GROUP" --environment "$ENVIRONMENT" \
        --trigger-type Manual \
        --replica-timeout 300 \
        --replica-retry-limit 0 \
        --replica-completion-count 1 \
        --parallelism 1 \
        --image "$CONTAINER_REGISTRY_NAME.azurecr.io/$CONTAINER_IMAGE_NAME" \
        --cpu "2.0" \
        --memory "4Gi" \
        --secrets "personal-access-token=$AZP_TOKEN" "organization-url=$ORGANIZATION_URL" \
        --env-vars "AZP_TOKEN=secretref:personal-access-token" "AZP_URL=secretref:organization-url" "AZP_POOL=$AZP_POOL" "AZP_PLACEHOLDER=1" "AZP_AGENT_NAME=placeholder-agent" \
        --registry-server "$CONTAINER_REGISTRY_NAME.azurecr.io"
    

    Tabel berikut ini menjelaskan parameter kunci yang digunakan dalam perintah .

    Parameter Deskripsi
    --replica-timeout Durasi maksimum yang dapat dijalankan replika.
    --replica-retry-limit Berapa kali untuk mencoba kembali replika yang gagal.
    --replica-completion-count Jumlah replika yang berhasil diselesaikan sebelum eksekusi pekerjaan dianggap berhasil.
    --parallelism Jumlah replika untuk memulai per eksekusi pekerjaan.
    --secrets Rahasia yang digunakan untuk pekerjaan tersebut.
    --env-vars Variabel lingkungan yang digunakan untuk pekerjaan tersebut.
    --registry-server Server registri kontainer yang akan digunakan untuk pekerjaan tersebut. Untuk Azure Container Registry, perintah secara otomatis mengonfigurasi autentikasi.

    AZP_PLACEHOLDER Mengatur variabel lingkungan mengonfigurasi kontainer agen untuk mendaftar sebagai agen tempat penampung offline tanpa menjalankan pekerjaan.

  2. Jalankan pekerjaan manual untuk membuat agen tempat penampung.

    az containerapp job start -n "$PLACEHOLDER_JOB_NAME" -g "$RESOURCE_GROUP"
    
  3. Cantumkan eksekusi pekerjaan untuk mengonfirmasi eksekusi pekerjaan dibuat dan berhasil diselesaikan.

    az containerapp job execution list \
        --name "$PLACEHOLDER_JOB_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --output table \
        --query '[].{Status: properties.status, Name: name, StartTime: properties.startTime}'
    
  4. Verifikasi bahwa agen tempat penampung dibuat di Azure DevOps.

    1. Di Azure DevOps, buka proyek Anda.
    2. Pilih Pengaturan proyek>Agen mengumpulkan>Agen aplikasi>kontainer.
    3. Konfirmasikan bahwa agen tempat penampung bernama placeholder-agent tercantum dan statusnya offline.
  5. Pekerjaan tidak diperlukan lagi. Anda dapat menghapusnya.

    az containerapp job delete -n "$PLACEHOLDER_JOB_NAME" -g "$RESOURCE_GROUP"
    

Membuat agen yang dihost sendiri sebagai pekerjaan berbasis peristiwa

Sekarang setelah Anda memiliki agen tempat penampung, Anda dapat membuat agen yang dihost sendiri. Di bagian ini, Anda membuat pekerjaan berbasis peristiwa yang menjalankan agen yang dihost sendiri saat alur dipicu.

az containerapp job create -n "$JOB_NAME" -g "$RESOURCE_GROUP" --environment "$ENVIRONMENT" \
    --trigger-type Event \
    --replica-timeout 1800 \
    --replica-retry-limit 0 \
    --replica-completion-count 1 \
    --parallelism 1 \
    --image "$CONTAINER_REGISTRY_NAME.azurecr.io/$CONTAINER_IMAGE_NAME" \
    --min-executions 0 \
    --max-executions 10 \
    --polling-interval 30 \
    --scale-rule-name "azure-pipelines" \
    --scale-rule-type "azure-pipelines" \
    --scale-rule-metadata "poolName=$AZP_POOL" "targetPipelinesQueueLength=1" \
    --scale-rule-auth "personalAccessToken=personal-access-token" "organizationURL=organization-url" \
    --cpu "2.0" \
    --memory "4Gi" \
    --secrets "personal-access-token=$AZP_TOKEN" "organization-url=$ORGANIZATION_URL" \
    --env-vars "AZP_TOKEN=secretref:personal-access-token" "AZP_URL=secretref:organization-url" "AZP_POOL=$AZP_POOL" \
    --registry-server "$CONTAINER_REGISTRY_NAME.azurecr.io"

Tabel berikut ini menjelaskan parameter aturan skala yang digunakan dalam perintah .

Parameter Deskripsi
--min-executions Jumlah minimum eksekusi pekerjaan yang akan dijalankan per interval polling.
--max-executions Jumlah maksimum eksekusi pekerjaan yang akan dijalankan per interval polling.
--polling-interval Interval polling untuk mengevaluasi aturan skala.
--scale-rule-name Nama aturan skala.
--scale-rule-type Jenis aturan skala yang akan digunakan. Untuk mempelajari selengkapnya tentang penskala Azure Pipelines, lihat dokumentasi KEDA.
--scale-rule-metadata Metadata untuk aturan skala.
--scale-rule-auth Autentikasi untuk aturan skala.

Konfigurasi aturan skala menentukan sumber peristiwa untuk dipantau. Aturan dievaluasi pada setiap interval polling untuk menentukan berapa banyak eksekusi pekerjaan yang akan dipicu. Untuk mempelajari selengkapnya, lihat Mengatur aturan penskalakan.

Pekerjaan berbasis peristiwa sekarang dibuat di lingkungan Aplikasi Kontainer.

Menjalankan alur dan memverifikasi pekerjaan

Setelah pekerjaan agen yang dihost sendiri dikonfigurasi, Anda dapat menjalankan alur dan memverifikasi bahwa pekerjaan berfungsi dengan benar.

  1. Di navigasi sebelah kiri proyek Azure DevOps Anda, navigasikan ke Alur.

  2. Pilih Buat alur pipa.

  3. Pilih Azure Repos Git sebagai lokasi kode Anda.

  4. Pilih repositori yang Anda buat sebelumnya.

  5. Anda dapat memilih Alur pemula.

  6. Di YAML alur, ubah pool dari vmImage: ubuntu-latest ke name: container-apps.

    pool:
      name: container-apps
    
  7. Pilih Simpan dan jalankan.

    Alur berjalan dan menggunakan pekerjaan agen yang dihost sendiri yang Anda buat di lingkungan Container Apps.

  8. Cantumkan eksekusi pekerjaan untuk mengonfirmasi eksekusi pekerjaan dibuat dan berhasil diselesaikan.

    az containerapp job execution list \
        --name "$JOB_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --output table \
        --query '[].{Status: properties.status, Name: name, StartTime: properties.startTime}'
    

Tip

Mengalami masalah? Beri tahu kami di GitHub dengan membuka masalah di repositori Azure Container Apps.

Membersihkan sumber daya

Setelah selesai, jalankan perintah berikut untuk menghapus grup sumber daya yang berisi sumber daya Container Apps Anda.

Perhatian

Perintah berikut menghapus grup sumber daya yang ditentukan dan semua sumber daya yang terkandung di dalamnya. Jika sumber daya di luar lingkup artikel ini ada di grup sumber daya yang ditentukan, sumber daya tersebut juga akan dihapus.

az group delete \
    --resource-group $RESOURCE_GROUP

Untuk menghapus repositori GitHub Anda, lihat Menghapus repositori.

Langkah berikutnya