Udostępnij za pośrednictwem


Rejestrowanie interfejsów API w centrum interfejsu API przy użyciu funkcji GitHub Actions

W tym artykule pokazano, jak skonfigurować podstawowy przepływ pracy funkcji GitHub Actions w celu zarejestrowania interfejsu API w centrum interfejsu API organizacji po dodaniu pliku specyfikacji interfejsu API do repozytorium GitHub.

Używanie przepływu pracy funkcji GitHub Actions do rejestrowania interfejsów API w centrum interfejsu API zapewnia spójny i powtarzalny proces ciągłej integracji/ciągłego wdrażania dla każdego nowego lub zaktualizowanego interfejsu API. Przepływ pracy można rozszerzyć, aby uwzględnić kroki, takie jak dodawanie metadanych do rejestracji interfejsu API.

Na poniższym diagramie pokazano, jak można zautomatyzować rejestrację interfejsu API w centrum interfejsu API przy użyciu przepływu pracy funkcji GitHub Actions.

Diagram przedstawiający kroki wyzwalania przepływu pracy akcji usługi GitHub w celu zarejestrowania interfejsu API w centrum interfejsu API platformy Azure.

  1. Skonfiguruj przepływ pracy funkcji GitHub Actions w repozytorium, który jest wyzwalany po scaleniu żądania ściągnięcia, które dodaje plik definicji interfejsu API.
  2. Utwórz gałąź z gałęzi głównej w repozytorium GitHub.
  3. Dodaj plik definicji interfejsu API, zatwierdź zmiany i wypchnij je do nowej gałęzi.
  4. Utwórz żądanie ściągnięcia, aby scalić nową gałąź z gałęzią główną.
  5. Scal żądanie ściągnięcia.
  6. Scalanie wyzwala przepływ pracy funkcji GitHub Actions, który rejestruje interfejs API w centrum interfejsu API.

Wymagania wstępne

  • Centrum interfejsu API w ramach subskrypcji platformy Azure. Jeśli jeszcze go nie utworzono, zobacz Szybki start: tworzenie centrum interfejsu API.

  • Uprawnienia do tworzenia jednostki usługi w dzierżawie microsoft Entra ID

  • Konto usługi GitHub i repozytorium GitHub, w którym można skonfigurować wpisy tajne i przepływy pracy funkcji GitHub Actions

  • W przypadku interfejsu wiersza polecenia platformy Azure:

    Uwaga

    az apic Polecenia wymagają rozszerzenia interfejsu wiersza polecenia platformy apic-extension Azure. Jeśli nie użyto az apic poleceń, rozszerzenie można zainstalować dynamicznie po uruchomieniu pierwszego az apic polecenia lub zainstalować rozszerzenie ręcznie. Dowiedz się więcej o rozszerzeniach interfejsu wiersza polecenia platformy Azure.

    Zapoznaj się z informacjami o wersji, aby uzyskać najnowsze zmiany i aktualizacje w pliku apic-extension.

    Uwaga

    Przykłady poleceń interfejsu wiersza polecenia platformy Azure w tym artykule mogą być uruchamiane w programie PowerShell lub powłoce bash. W razie potrzeby ze względu na różne składnie zmiennych podano oddzielne przykłady poleceń dla dwóch powłok.

Konfigurowanie przepływu pracy funkcji GitHub Actions

W tej sekcji skonfigurujesz przepływ pracy funkcji GitHub Actions dla tego scenariusza:

  • Utwórz jednostkę usługi do użycia dla poświadczeń platformy Azure w przepływie pracy.
  • Dodaj poświadczenia jako wpis tajny w repozytorium GitHub.
  • Skonfiguruj przepływ pracy funkcji GitHub Actions, który jest wyzwalany po scaleniu żądania ściągnięcia, które dodaje plik definicji interfejsu API. Plik YAML przepływu pracy zawiera krok, który używa interfejsu wiersza polecenia platformy Azure do zarejestrowania interfejsu API w centrum interfejsu API z pliku definicji.

Konfigurowanie wpisu tajnego jednostki usługi

W poniższych krokach utwórz jednostkę usługi Microsoft Entra ID, która będzie używana do dodawania poświadczeń do przepływu pracy w celu uwierzytelniania za pomocą platformy Azure.

Uwaga

Konfigurowanie jednostki usługi jest wyświetlane w celach demonstracyjnych. Zalecanym sposobem uwierzytelniania za pomocą funkcji Azure for GitHub Actions jest użycie narzędzia OpenID Connect, czyli metody uwierzytelniania, która używa tokenów krótkotrwałych. Konfigurowanie programu OpenID Connect za pomocą funkcji GitHub Actions jest bardziej złożone, ale oferuje zabezpieczenia ze wzmocnionymi zabezpieczeniami. Dowiedz się więcej

Utwórz jednostkę usługi za pomocą polecenia az ad sp create-for-rbac. W poniższym przykładzie najpierw użyto polecenia az apic show w celu pobrania identyfikatora zasobu centrum interfejsu API. Jednostka usługi jest następnie tworzona przy użyciu roli Współautor usługi Centrum interfejsu API platformy Azure dla centrum interfejsu 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

Skopiuj dane wyjściowe JSON, które powinny wyglądać podobnie do następujących:

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

Dodawanie jednostki usługi jako wpisu tajnego usługi GitHub

  1. W usłudze GitHub przejrzyj repozytorium. Wybierz Ustawienia.

  2. W obszarze Zabezpieczenia wybierz pozycję Wpisy tajne i zmienne>Akcje

  3. Wybierz pozycję Nowy wpis tajny repozytorium.

  4. Wklej całe dane wyjściowe JSON z polecenia interfejsu wiersza polecenia platformy Azure do pola wartości wpisu tajnego. Nadaj kluczowi nazwę wpisu tajnego AZURE_CREDENTIALS. Wybierz przycisk Add secret (Dodaj wpis tajny).

    Wpis tajny znajduje się w obszarze Wpisy tajne repozytorium.

    Zrzut ekranu przedstawiający wpisy tajne dla akcji w repozytorium GitHub.

Podczas późniejszego konfigurowania pliku przepływu pracy usługi GitHub należy użyć wpisu tajnego dla akcji Azurecreds/login. Na przykład:

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

Dodawanie pliku przepływu pracy do repozytorium GitHub

Przepływ pracy funkcji GitHub Actions jest reprezentowany przez plik definicji YAML (.yml). Ta definicja zawiera różne kroki i parametry tworzące przepływ pracy. Dowiedz się więcej

Poniżej przedstawiono podstawowy plik przepływu pracy dla tego przykładu, którego można użyć lub zmodyfikować.

W tym przykładzie:

  • Przepływ pracy jest wyzwalany, gdy żądanie ściągnięcia, które dodaje definicję JSON w APIs ścieżce, jest zamykane w gałęzi głównej.
  • Lokalizacja definicji jest wyodrębniana z żądania ściągnięcia przy użyciu skryptu usługi GitHub, który jest uwierzytelniany przy użyciu domyślnego tokenu usługi GitHub.
  • Poświadczenia platformy Azure zapisane w repozytorium są używane do logowania się na platformie Azure.
  • Polecenie az apic register rejestruje interfejs API w centrum interfejsu API określonym w zmiennych środowiskowych.

Aby skonfigurować plik przepływu pracy:

  1. Skopiuj i zapisz plik pod nazwą, taką jak register-api.yml.
  2. Zaktualizuj wartości zmiennych środowiskowych, aby odpowiadały centrum interfejsu API na platformie Azure.
  3. Potwierdź lub zaktualizuj nazwę folderu repozytorium (APIs), w którym zostanie dodany plik definicji interfejsu API.
  4. Dodaj ten plik przepływu pracy w ścieżce /.github/workflows/ w repozytorium GitHub.

Napiwek

Za pomocą rozszerzenia programu Visual Studio Code dla centrum interfejsu API platformy Azure możesz wygenerować początkowy plik przepływu pracy, uruchamiając polecenie rozszerzenia. W palecie poleceń wybierz pozycję Centrum interfejsów API platformy Azure: Zarejestruj interfejsy API. Wybierz pozycję Ciągła integracja/ciągłe wdrażanie>w usłudze GitHub. Następnie możesz zmodyfikować plik dla danego scenariusza.

name: Register API Definition to Azure API Center
on:
  pull_request:
    types: [closed]
    branches:
      - main
    paths:
      - "APIs/**/*.json"
permissions:
  contents: read
  pull-requests: read
env:
  # set this to your Azure API Center resource group name
  RESOURCE_GROUP: <YOUR_RESOURCE_GROUP>
  # set this to your Azure API Center service name
  SERVICE_NAME: <YOUR_API_CENTER>
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', hfilename);
              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 ${{ env.RESOURCE_GROUP }} -n ${{ env.SERVICE_NAME }} --api-location ${{ env.API_FILE_LOCATION }}

Dodawanie pliku definicji interfejsu API do repozytorium

Przetestuj przepływ pracy, dodając plik definicji interfejsu API do repozytorium. Wykonaj te ogólne kroki, które są typowe dla przepływu pracy programowania. Aby uzyskać szczegółowe informacje na temat pracy z gałęziami usługi GitHub, zobacz dokumentację usługi GitHub.

  1. Utwórz nową gałąź roboczą z gałęzi głównej w repozytorium.

  2. Dodaj plik definicji interfejsu API do repozytorium w ścieżce APIs . Na przykład APIs/catfacts-api/07-15-2024.json.

  3. Zatwierdź zmiany i wypchnij je do gałęzi roboczej.

  4. Utwórz żądanie ściągnięcia, aby scalić gałąź roboczą z gałęzią główną.

  5. Po przejrzeniu scal żądanie ściągnięcia. Scalanie wyzwala przepływ pracy funkcji GitHub Actions, który rejestruje interfejs API w centrum interfejsu API.

    Zrzut ekranu przedstawiający pomyślne uruchomienie przepływu pracy w usłudze GitHub.

Weryfikowanie rejestracji interfejsu API

Sprawdź, czy interfejs API jest zarejestrowany w Centrum interfejsu API.

  1. W witrynie Azure Portal przejdź do centrum interfejsu API.
  2. W menu po lewej stronie w obszarze Zasoby wybierz pozycję Interfejsy API.
  3. Sprawdź, czy nowo zarejestrowany interfejs API znajduje się na liście interfejsów API.

Zrzut ekranu przedstawiający interfejs API zarejestrowany w centrum interfejsu API po przepływie pracy.

Dodawanie nowej wersji interfejsu API

Aby dodać nową wersję do istniejącego interfejsu API w centrum interfejsu API, wykonaj poprzednie kroki z niewielkimi modyfikacjami:

  1. Przejdź do tej samej gałęzi roboczej w repozytorium lub utwórz nową gałąź roboczą.
  2. Dodaj nowy plik definicji interfejsu API do repozytorium w APIs ścieżce w folderze dla istniejącego interfejsu API. Jeśli na przykład wcześniej dodano definicję interfejsu API Cat Facts, dodaj nową wersję, taką jak APIs/catfacts-api/07-22-2024.json.
  3. Zatwierdź zmiany i wypchnij je do gałęzi roboczej.
  4. Utwórz żądanie ściągnięcia, aby scalić gałąź roboczą z gałęzią główną.
  5. Po przejrzeniu scal żądanie ściągnięcia. Scalanie wyzwala przepływ pracy funkcji GitHub Actions, który rejestruje nową wersję interfejsu API w centrum interfejsu API.
  6. W witrynie Azure Portal przejdź do centrum interfejsu API i upewnij się, że nowa wersja jest zarejestrowana.

Rozszerzanie scenariusza

Możesz rozszerzyć przepływ pracy funkcji GitHub Actions, aby uwzględnić inne kroki, takie jak dodawanie metadanych na potrzeby rejestracji interfejsu API. Na przykład:

  1. Korzystając ze schematu metadanych w centrum interfejsu API, utwórz plik JSON metadanych, aby zastosować wartości metadanych do rejestracji interfejsu API.

    Jeśli na przykład schemat metadanych zawiera właściwości, takie jak approver, teami cost center, plik JSON metadanych może wyglądać następująco:

    {
      "approver": "diego@contoso.com",
      "team": "Store API dev team",
      "costCenter": "12345"  
    }
    
  2. Przekaż plik JSON metadanych w folderze dla każdego interfejsu API w repozytorium.

  3. Dodaj krok przepływu pracy, aby zastosować metadane do rejestracji interfejsu API przy użyciu polecenia az apic api update . W poniższym przykładzie identyfikator interfejsu API i plik metadanych są przekazywane w zmiennych środowiskowych, które zostaną ustawione w innym miejscu w pliku przepływu pracy.

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