Bagikan melalui


Mendaftarkan API di pusat API Anda menggunakan GitHub Actions

Artikel ini memperlihatkan cara menyiapkan alur kerja GitHub Actions dasar untuk mendaftarkan API di pusat API organisasi Anda saat file spesifikasi API ditambahkan ke repositori GitHub.

Menggunakan alur kerja GitHub Actions untuk mendaftarkan API di pusat API Anda menyediakan proses CI/CD yang konsisten dan dapat diulang untuk setiap API baru atau yang diperbarui. Alur kerja dapat diperluas untuk menyertakan langkah-langkah seperti menambahkan metadata ke pendaftaran API.

Diagram berikut menunjukkan bagaimana pendaftaran API di pusat API Anda dapat diotomatisasi menggunakan alur kerja GitHub Actions.

Diagram memperlihatkan langkah-langkah untuk memicu alur kerja tindakan GitHub untuk mendaftarkan API di pusat Api Azure.

  1. Siapkan alur kerja GitHub Actions di repositori Anda yang memicu saat permintaan pull yang menambahkan file definisi API digabungkan.
  2. Buat cabang dari cabang utama di repositori GitHub Anda.
  3. Tambahkan file definisi API, terapkan perubahan, dan dorong ke cabang baru.
  4. Buat permintaan pull untuk menggabungkan cabang baru ke cabang utama.
  5. Gabungkan permintaan pull.
  6. Penggabungan memicu alur kerja GitHub Actions yang mendaftarkan API di pusat API Anda.

Prasyarat

  • Pusat API di langganan Azure Anda. Jika Anda belum membuatnya, lihat Mulai Cepat: Membuat pusat API Anda.

  • Izin untuk membuat perwakilan layanan di penyewa ID Microsoft Entra

  • Akun GitHub dan repositori GitHub tempat Anda dapat mengonfigurasi rahasia dan alur kerja GitHub Actions

  • Untuk Azure CLI:

    Catatan

    az apic perintah memerlukan apic-extension ekstensi Azure CLI. Jika Anda belum menggunakan az apic perintah, ekstensi dapat diinstal secara dinamis saat Anda menjalankan perintah pertama az apic , atau Anda dapat menginstal ekstensi secara manual. Pelajari selengkapnya tentang ekstensi Azure CLI.

    Lihat catatan rilis untuk perubahan dan pembaruan terbaru di apic-extension. Fitur tertentu mungkin memerlukan pratinjau atau versi ekstensi tertentu.

    Catatan

    Contoh perintah Azure CLI dalam artikel ini dapat berjalan di PowerShell atau shell bash. Jika diperlukan karena sintaks variabel yang berbeda, contoh perintah terpisah disediakan untuk dua shell.

Menyiapkan alur kerja GitHub Actions

Di bagian ini, Anda menyiapkan alur kerja GitHub Actions untuk skenario ini:

  • Buat perwakilan layanan yang akan digunakan untuk kredensial Azure dalam alur kerja.
  • Tambahkan kredensial sebagai rahasia di repositori GitHub Anda.
  • Konfigurasikan alur kerja GitHub Actions yang memicu saat permintaan pull yang menambahkan file definisi API digabungkan. File YAML alur kerja menyertakan langkah yang menggunakan Azure CLI untuk mendaftarkan API di pusat API Anda dari file definisi.

Menyiapkan rahasia perwakilan layanan

Dalam langkah-langkah berikut, buat perwakilan layanan ID Microsoft Entra, yang akan digunakan untuk menambahkan kredensial ke alur kerja untuk mengautentikasi dengan Azure.

Catatan

Mengonfigurasi perwakilan layanan ditampilkan untuk tujuan demonstrasi. Cara yang disarankan untuk mengautentikasi dengan Azure for GitHub Actions adalah dengan OpenID Connect, metode autentikasi yang menggunakan token berumur pendek. Menyiapkan OpenID Connect dengan GitHub Actions lebih kompleks tetapi menawarkan keamanan yang diperkuat. Pelajari lebih lanjut

Buat prinsipal layanan menggunakan perintah az ad sp create-for-rbac. Contoh berikut terlebih dahulu menggunakan perintah az apic show untuk mengambil ID sumber daya pusat API. Perwakilan layanan kemudian dibuat dengan peran Kontributor Layanan Azure API Center untuk pusat API.

#! /bin/bash
apiCenter=<api-center-name>
resourceGroup=<resource-group-name>
spName=<service-principal-name>

apicResourceId=$(az apic show --name $apiCenter --resource-group $resourceGroup --query "id" --output tsv)

az ad sp create-for-rbac --name $spName --role "Azure API Center Service Contributor" --scopes $apicResourceId --json-auth

Salin output JSON, yang akan terlihat mirip dengan yang berikut ini:

{
  "clientId": "<GUID>",
  "clientSecret": "<GUID>",
  "subscriptionId": "<GUID>",
  "tenantId": "<GUID>",
  "activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
  "resourceManagerEndpointUrl": "https://management.azure.com/",
  [...other endpoints...]
}

Menambahkan perwakilan layanan sebagai rahasia GitHub

  1. Di GitHub, telusuri repositori Anda. Pilih pengaturan.

  2. Di bawah Keamanan, pilih Tindakan Rahasia dan variabel>

  3. Pilih Rahasia repositori baru.

  4. Tempelkan seluruh output JSON dari perintah CLI Azure ke bidang nilai rahasia. Beri nama rahasia AZURE_CREDENTIALS. Pilih Tambahkan rahasia.

    Rahasia ini tercantum di bawah Rahasia repositori.

    Cuplikan layar rahasia untuk Tindakan di repositori GitHub.

Saat Mengonfigurasi file alur kerja GitHub nanti, Anda menggunakan rahasia untuk input credstindakan Azure/login . Contohnya:

- uses: azure/login@v1
  with:
    creds: ${{ secrets.AZURE_CREDENTIALS }}

Menambahkan file alur kerja ke repositori GitHub Anda

Alur kerja GitHub Actions diwakili oleh file definisi YAML (.yml). Definisi ini berisi berbagai langkah dan parameter yang membentuk alur kerja. Pelajari lebih lanjut

Berikut ini adalah file alur kerja dasar untuk contoh ini yang dapat Anda gunakan atau ubah.

Dalam contoh ini:

  • Alur kerja dipicu ketika permintaan pull yang menambahkan definisi JSON di APIs jalur ditutup pada cabang utama.
  • Lokasi definisi diekstrak dari permintaan pull menggunakan skrip GitHub, yang diautentikasi dengan token GitHub default.
  • Kredensial Azure yang disimpan di repositori Anda digunakan untuk masuk ke Azure.
  • Perintah az apic register mendaftarkan API di pusat API yang ditentukan dalam variabel lingkungan.

Untuk mengonfigurasi file alur kerja:

  1. Salin dan simpan file dengan nama seperti register-api.yml.
  2. Konfirmasi atau perbarui nama folder repositori (APIs) tempat Anda akan menambahkan file definisi API.
  3. Tambahkan file alur kerja ini di /.github/workflows/ jalur di repositori GitHub Anda.
  4. Atur variabelSERVICE_NAME Tindakan dan RESOURCE_GROUP di repositori Anda untuk nama pusat API dan nama grup sumber daya Anda di Azure.

Tip

Dengan menggunakan ekstensi Visual Studio Code untuk Azure API Center, Anda dapat membuat file alur kerja awal dengan menjalankan perintah ekstensi. Di Palet Perintah, pilih Azure API Center: Daftarkan API. Pilih CI/CD>GitHub. Anda kemudian dapat mengubah atau memperluas file untuk skenario Anda.

name: Register API Definition to Azure API Center
on:
  pull_request:
    types: [ closed ]
    branches:
      - [ "main" ]
    paths:
      - "APIs/**/*.json"
permissions:
  contents: read
  pull-requests: read
jobs:
  register:
    runs-on: ubuntu-latest
    environment: production
    steps:
      - uses: actions/checkout@v2
      
      - name: Get specification file path in the PR
        id: get-file-location
        uses: actions/github-script@v5
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          script: |
            const pull_number = context.payload.pull_request.number;
            const owner = context.repo.owner;
            const repo = context.repo.repo;
            const files = await github.rest.pulls.listFiles({
              owner,
              repo,
              pull_number
            });
            if (files.data.length === 1) {
              const filename = files.data[0].filename;
              core.exportVariable('API_FILE_LOCATION', filename);
              console.log(`API_FILE_LOCATION: ${{ env.API_FILE_LOCATION }}`);
            }
            else {
              console.log('The PR does not add exactly one specification file.');
            }

      - name: Azure login
        uses: azure/login@v1
        with:
          creds: ${{ secrets.AZURE_CREDENTIALS }}

      - name: Register to API Center
        uses: azure/CLI@v2
        with:
          azcliversion: latest
          inlineScript: |
            az apic api register -g ${{ vars.RESOURCE_GROUP }} -n ${{ vars.SERVICE_NAME }} --api-location ${{ env.API_FILE_LOCATION }}

Menambahkan file definisi API ke repositori

Uji alur kerja dengan menambahkan file definisi API ke repositori. Ikuti langkah-langkah tingkat tinggi ini, yang khas dari alur kerja pengembangan. Untuk detail tentang bekerja dengan cabang GitHub, lihat dokumentasi GitHub.

  1. Buat cabang kerja baru dari cabang utama di repositori Anda.

  2. Tambahkan file definisi API ke repositori di APIs jalur . Contohnya,APIs/catfacts-api/07-15-2024.json.

  3. Terapkan perubahan dan dorong ke cabang kerja.

  4. Buat permintaan pull untuk menggabungkan cabang kerja ke cabang utama.

  5. Setelah ditinjau, gabungkan permintaan pull. Penggabungan memicu alur kerja GitHub Actions yang mendaftarkan API di pusat API Anda.

    Cuplikan layar memperlihatkan alur kerja yang berhasil dijalankan di GitHub.

Memverifikasi pendaftaran API

Verifikasi bahwa API terdaftar di pusat API Anda.

  1. Di portal Azure, navigasikan ke pusat API Anda.
  2. Di menu sebelah kiri, di bawah Aset, pilih API.
  3. Verifikasi bahwa API yang baru terdaftar muncul dalam daftar API.

Cuplikan layar API yang terdaftar di API Center setelah alur kerja.

Menambahkan versi API baru

Untuk menambahkan versi baru ke API yang ada di pusat API Anda, ikuti langkah-langkah sebelumnya, dengan sedikit modifikasi:

  1. Ubah ke cabang kerja yang sama di repositori Anda, atau buat cabang kerja baru.
  2. Tambahkan file definisi API baru ke repositori di APIs jalur, di folder untuk API yang ada. Misalnya, jika sebelumnya Anda menambahkan definisi CAT Facts API, tambahkan versi baru seperti APIs/catfacts-api/07-22-2024.json.
  3. Terapkan perubahan dan dorong ke cabang kerja.
  4. Buat permintaan pull untuk menggabungkan cabang kerja ke cabang utama.
  5. Setelah ditinjau, gabungkan permintaan pull. Penggabungan memicu alur kerja GitHub Actions yang mendaftarkan versi API baru di pusat API Anda.
  6. Di portal Azure, navigasikan ke pusat API Anda dan konfirmasikan bahwa versi baru terdaftar.

Memperluas skenario

Anda dapat memperluas alur kerja GitHub Actions untuk menyertakan langkah-langkah lain, seperti menambahkan metadata untuk pendaftaran API. Contohnya:

  1. Dengan menggunakan skema metadata di pusat API Anda, buat file JSON metadata untuk menerapkan nilai metadata ke pendaftaran API Anda.

    Misalnya, jika skema metadata menyertakan properti seperti approver, , teamdan cost center, file JSON metadata mungkin terlihat seperti ini:

    {
      "approver": "diego@contoso.com",
      "team": "Store API dev team",
      "costCenter": "12345"  
    }
    
  2. Unggah file JSON metadata di folder untuk setiap API di repositori.

  3. Tambahkan langkah alur kerja untuk menerapkan metadata ke pendaftaran API menggunakan perintah az apic api update . Dalam contoh berikut, ID API dan file metadata diteruskan dalam variabel lingkungan, yang akan diatur di tempat lain dalam file alur kerja.

    [...]
    - name: Apply metadata to API in API Center
        uses: azure/CLI@v2
        with:
          azcliversion: latest
          inlineScript: |
            az apic api update -g ${{ vars.RESOURCE_GROUP }} -n ${{ vars.SERVICE_NAME }} --api-id {{ env.API_ID }} --custom-properties {{ env.METADATA_FILE }}