Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra come configurare un flusso di lavoro Di base di GitHub Actions per registrare un'API nel centro API dell'organizzazione. La registrazione si verifica quando un file di specifica dell'API viene aggiunto a un repository GitHub.
L'uso di un flusso di lavoro di GitHub Actions per registrare le API nel centro API offre un processo CI/CD coerente e ripetibile per ogni API nuova o aggiornata. Il flusso di lavoro può essere esteso per includere passaggi come l'aggiunta di metadati alla registrazione dell'API.
Il diagramma seguente illustra come la registrazione API nel centro API può essere automatizzata con un flusso di lavoro di GitHub Actions.
Il processo include i passaggi seguenti:
- Configurare un flusso di lavoro di GitHub Actions nel repository che viene attivato quando viene unita una richiesta pull che aggiunge un file di definizione API.
- Creare un ramo dal ramo principale nel repository GitHub.
- Aggiungere un file di definizione dell'API, eseguire il commit delle modifiche ed eseguire il push nel nuovo ramo.
- Creare una richiesta pull per unire il nuovo ramo nel ramo principale.
- Unire la richiesta pull.
- L'unione attiva un flusso di lavoro di GitHub Actions che registra l'API nel centro API.
Nota
Gli esempi di comandi dell'interfaccia della riga di comando di Azure riportati in questo articolo possono essere eseguiti in PowerShell o in una shell bash. Se necessario, a causa di una sintassi di variabile diversa, vengono forniti esempi di comandi separati per le due shell.
Prerequisiti
Un centro API nella sottoscrizione di Azure. È possibile creare un centro API seguendo la procedura descritta in Avvio rapido: Creare il centro API (portale di Azure).
Autorizzazioni per creare un'entità servizio nel tenant di Microsoft Entra ID.
Un account GitHub e un repository GitHub in cui è possibile configurare i segreti e i flussi di lavoro di GitHub Actions.
Per la CLI di Azure:
Usare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Introduzione ad Azure Cloud Shell.
Se si preferisce, per eseguire localmente i comandi di riferimento CLI, installare l'interfaccia della riga di comando di Azure per eseguire i relativi comandi di riferimento. Per l'esecuzione in Windows o macOS, è consigliabile eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker. Per altre informazioni, vedere Come eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker.
Se si usa un'installazione locale, accedere all'interfaccia della riga di comando di Azure con il comando az login. Per completare il processo di autenticazione, seguire la procedura visualizzata nel terminale. Per altre opzioni di accesso, vedere Eseguire l'autenticazione ad Azure con l'interfaccia della riga di comando di Azure.
Installare l'estensione CLI di Azure al primo utilizzo quando richiesto. Per altre informazioni sulle estensioni, vedere Usare e gestire le estensioni con l'interfaccia della riga di comando di Azure.
Eseguire az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, eseguire az upgrade.
Nota
I comandi
az apicrichiedono l'estensione Azure CLIapic-extension. L'estensione può essere installata in modo dinamico quando si esegue il primoaz apiccomando oppure è possibile installare l'estensione manualmente. Per altre informazioni, vedere Gestire le estensioni dell'interfaccia della riga di comando di Azure: Installare, aggiornare e rimuovere.Per le modifiche e gli aggiornamenti più recenti in
apic-extension, vedere le note sulla versione. Alcune funzionalità potrebbero richiedere un'anteprima o una versione specifica dell'estensione.
Configurare un flusso di lavoro di GitHub Actions
In questa sezione viene configurato il flusso di lavoro di GitHub Actions per questo scenario:
- Creare un'entità servizio da usare per le credenziali di Azure nel flusso di lavoro.
- Aggiungere le credenziali come segreto nel repository GitHub.
- Configurare un flusso di lavoro di GitHub Actions che viene attivato quando viene unita una richiesta pull che aggiunge un file di definizione API. Il file YAML del flusso di lavoro include un passaggio che usa l'interfaccia della riga di comando di Azure per registrare l'API nel centro API dal file di definizione.
Impostare un segreto dell'entità servizio
I passaggi seguenti creano un principale del servizio Microsoft Entra ID, usato per aggiungere credenziali al flusso di lavoro per autenticarsi con Azure.
Nota
La configurazione di un principale del servizio viene illustrata a scopo dimostrativo. Il modo consigliato per eseguire l'autenticazione con Azure per GitHub Actions è OpenID Connect, un metodo di autenticazione che usa token di breve durata. La configurazione di OpenID Connect con GitHub Actions è più complessa, ma offre sicurezza avanzata. Per altre informazioni, vedere Distribuire nel servizio app di Azure usando GitHub Actions - Generare le credenziali di distribuzione per OpenID Connect.
Creare un'entità servizio usando il comando az ad sp create-for-rbac. Nell'esempio seguente viene prima usato il comando az apic show per recuperare l'ID risorsa del centro API. L'entità servizio viene quindi creata con il ruolo Collaboratore al servizio del Centro API di Azure per il centro 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
Copiare l'output JSON, simile all'esempio seguente:
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
"activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
"resourceManagerEndpointUrl": "https://management.azure.com/",
[...other endpoints...]
}
Aggiungere l'entità servizio come segreto GitHub
Dopo aver ottenuto l'entità servizio, aggiungerla come segreto GitHub.
In GitHub esplorare il repository e selezionare Impostazioni nella barra dei menu in alto.
Nel riquadro di spostamento a sinistra in Sicurezza selezionare Segreti e variabili>Azioni
Seleziona Nuovo segreto del repository.
Nel campo Segreto, incolla l'intero output JSON dal comando CLI di Azure. Per Nome immettere
AZURE_CREDENTIALS. Selezionare Aggiungi segreto.Il segreto è elencato in i segreti del repository.
Quando si configura il file del workflow di GitHub in seguito, si utilizza il segreto per l'input creds dell'azione di Azure/login. Ad esempio:
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
Aggiungere il file del flusso di lavoro al repository GitHub
Un flusso di lavoro di GitHub Actions viene specificato in un file di definizione YAML (.yml). Questa definizione contiene i vari passaggi e i parametri che costituiscono il flusso di lavoro. Per altre informazioni, vedere Sintassi del flusso di lavoro per GitHub Actions.
Nell'esempio seguente viene fornito un file di flusso di lavoro di base che è possibile usare o modificare.
Il flusso di lavoro viene attivato quando una richiesta pull che aggiunge una definizione JSON nel
APIspercorso viene chiusa nel ramo principale.Il percorso della definizione viene estratto dalla richiesta pull usando uno script GitHub, autenticato con il token GitHub predefinito.
Le credenziali di Azure salvate nel repository vengono usate per accedere ad Azure.
Il comando az apic register registra l'API nel centro API specificato nelle variabili di ambiente.
Seguire questa procedura per configurare il file del flusso di lavoro:
Copiare e salvare il file con un nome, ad esempio
register-api.yml.Confermare o aggiornare il nome della cartella del repository (
APIs) in cui si prevede di aggiungere il file di definizione dell'API.Aggiungere questo file del flusso di lavoro nel percorso
/.github/workflows/nel repository GitHub.Impostare le variabili di Azioni
SERVICE_NAMEeRESOURCE_GROUPnel repository per il nome del centro API e il nome del gruppo di risorse in Azure.
Suggerimento
Usando l'estensione Visual Studio Code per Centro API di Azure, è possibile generare un file del flusso di lavoro iniziale eseguendo un comando di estensione. Nel riquadro comandi (CTRL+MAIUSC+P) immettere Centro API di Azure: Registra API e selezionare CI/CD>GitHub. È quindi possibile modificare o estendere il file per lo scenario in uso.
Ecco il file del flusso di lavoro di esempio:
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 }}
Aggiungere il file di definizione dell'API al repository
Testare il flusso di lavoro aggiungendo un file di definizione API al repository. Seguire questi passaggi generali, che sono tipici di un flusso di lavoro di sviluppo. Per informazioni dettagliate sull'uso dei rami GitHub, vedere Informazioni sui modelli di sviluppo collaborativi nella documentazione di GitHub.
Creare un nuovo ramo di lavoro dal ramo principale nel repository.
Aggiungere il file di definizione dell'API al repository nel percorso
APIs. Ad esempio:APIs/catfacts-api/07-15-2024.json.Eseguire il commit delle modifiche ed effettuarne il push sul ramo di lavoro.
Creare una richiesta pull per unire il ramo di lavoro nel ramo principale.
Dopo la revisione, unire la richiesta pull. L'unione attiva il flusso di lavoro di GitHub Actions che registra l'API nel centro API.
Verificare la registrazione dell'API
Verificare che l'API sia registrata nel centro API.
Nel portale di Azure passare al centro API.
Nel riquadro di spostamento a sinistra espandere la sezione Inventario e selezionare Asset.
Verificare che l'API appena registrata venga visualizzata nell'elenco.
Aggiungere una nuova versione dell'API
È possibile aggiungere una nuova versione a un'API esistente nel centro API seguendo la stessa procedura con una leggera modifica.
Passare allo stesso ramo di lavoro nel repository o creare un nuovo ramo di lavoro.
Aggiungere un nuovo file di definizione API al repository nel percorso
APIs, nella cartella per un'API esistente. Ad esempio, se in precedenza è stata aggiunta una definizione dell'API Cat Facts, aggiungere una nuova versione, ad esempioAPIs/catfacts-api/07-22-2024.json.Eseguire il commit delle modifiche ed effettuarne il push sul ramo di lavoro.
Creare una richiesta pull per unire il ramo di lavoro nel ramo principale.
Dopo la revisione, unire la richiesta pull. L'unione attiva il flusso di lavoro di GitHub Actions che registra la nuova versione dell'API nel centro API.
Nel portale di Azure passare al centro API e verificare che la nuova versione per l'API sia registrata.
Estendere lo scenario
È possibile estendere il flusso di lavoro di GitHub Actions per includere altri passaggi, ad esempio l'aggiunta di metadati per la registrazione dell'API. Ad esempio:
Usando lo schema dei metadati nel centro API, creare un file JSON di metadati per applicare i valori dei metadati alla registrazione API.
Ad esempio, se lo schema dei metadati include proprietà come
approver,teamecost center, un file JSON di metadati potrebbe essere simile al seguente:{ "approver": "admin-user@contoso.com", "team": "Store API dev team", "costCenter": "12345" }Caricare un file JSON di metadati nella cartella per ogni API nel repository.
Aggiungere un passaggio del flusso di lavoro per applicare i metadati alla registrazione dell'API usando il comando az apic api update . Nell'esempio seguente l'ID API e il file di metadati vengono passati nelle variabili di ambiente, che verranno impostate altrove nel file del flusso di lavoro.
[...] - 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 }}