Share via


Esercitazione: Distribuire ambienti in CI/CD usando GitHub e ambienti di distribuzione di Azure

In questa esercitazione si apprenderà come integrare gli ambienti di distribuzione di Azure nella pipeline CI/CD. È possibile usare qualsiasi provider GitOps che supporta CI/CD, ad esempio GitHub Actions, Azure Arc, GitLab o Jenkins.

L'integrazione continua e il recapito continuo (CI/CD) è un approccio di sviluppo software che consente ai team di automatizzare il processo di compilazione, test e distribuzione delle modifiche software. CI/CD consente di rilasciare le modifiche software più frequentemente e con maggiore attendibilità.

Si usa un flusso di lavoro che include tre rami: main, dev e test.

  • Il ramo principale è sempre considerato di produzione.
  • I rami di funzionalità vengono creati dal ramo principale .
  • Si creano richieste pull per unire rami di funzionalità in main.

Questo flusso di lavoro è un piccolo esempio ai fini di questa esercitazione. I flussi di lavoro reali potrebbero essere più complessi.

Prima di iniziare questa esercitazione, è possibile acquisire familiarità con le risorse e i concetti degli ambienti di distribuzione esaminando i concetti chiave per gli ambienti di distribuzione di Azure.

In questa esercitazione apprenderai a:

  • Creare e configurare un dev center
  • Creare un insieme di credenziali delle chiavi
  • Creare e configurare un repository GitHub
  • Connessione il catalogo al dev center
  • Configurare le identità di distribuzione
  • Configurare gli ambienti GitHub
  • Testare la pipeline CI/CD

Prerequisiti

1. Creare e configurare un dev center

In questa sezione viene creato un dev center per gli ambienti di distribuzione di Azure e un progetto con tre tipi di ambiente: Sviluppo, Test e Prod.

  • Il tipo di ambiente Prod contiene l'ambiente di produzione singolo.
  • Viene creato un nuovo ambiente in Sviluppo per ogni ramo di funzionalità.
  • Viene creato un nuovo ambiente in Test per ogni richiesta pull.

1.1 Configurare l'interfaccia della riga di comando di Azure

Per iniziare, accedere ad Azure. Eseguire il comando seguente e seguire le istruzioni per completare il processo di autenticazione.

az login

Installare quindi l'estensione Azure devcenter per l'interfaccia della riga di comando di Azure.

az extension add --name devcenter --upgrade

Ora che l'estensione corrente è installata, registrare lo Microsoft.DevCenter spazio dei nomi.

az provider register --namespace Microsoft.DevCenter

Suggerimento

In questa esercitazione verranno salvati diversi valori come variabili di ambiente da usare in un secondo momento. È anche possibile registrare questi valori altrove per assicurarsi che siano disponibili quando necessario.

Ottenere l'ID dell'utente e impostarlo su una variabile di ambiente per un secondo momento:

MY_AZURE_ID=$(az ad signed-in-user show --query id -o tsv)

Recuperare l'ID sottoscrizione per la sottoscrizione corrente.

AZURE_SUBSCRIPTION_ID=$(az account show --query id --output tsv)

Recuperare l'ID tenant per il tenant corrente.

AZURE_TENANT_ID=$(az account show --query tenantId --output tsv)

Impostare le seguenti variabili di ambiente:

LOCATION="eastus"
AZURE_RESOURCE_GROUP=<resourceGroupName>
AZURE_DEVCENTER=<devcenterName>
AZURE_PROJECT=<projectName>
AZURE_KEYVAULT=<keyVaultName>

Nota

È necessario usare un nome univoco globale dell'insieme di credenziali delle chiavi. In caso contrario, è possibile che venga visualizzato l'errore seguente: Code: VaultAlreadyExists Message: The vault name 'mykeyvaultname' is already in use. Vault names are globally unique so it is possible that the name is already taken.

1.2 Creare un dev center

Un dev center è una raccolta di progetti e ambienti con impostazioni simili. I dev center forniscono l'accesso a un catalogo di modelli e artefatti che possono essere usati per creare ambienti. I centri di sviluppo offrono anche un modo per gestire l'accesso agli ambienti e ai progetti.

Crea un gruppo di risorse.

az group create \
  --name $AZURE_RESOURCE_GROUP \
  --location $LOCATION

Creare un nuovo dev center.

az devcenter admin devcenter create \
  --name $AZURE_DEVCENTER \
  --identity-type SystemAssigned \
  --resource-group $AZURE_RESOURCE_GROUP \
  --location $LOCATION

Il comando precedente restituisce JSON. Salvare i valori per id e identity.principalId come variabili di ambiente da usare in un secondo momento.

AZURE_DEVCENTER_ID=<id>
AZURE_DEVCENTER_PRINCIPAL_ID=<identity.principalId>

1.3 Assegnare il ruolo di proprietario dell'identità di Dev Center nella sottoscrizione

Un dev center necessita delle autorizzazioni per assegnare ruoli alle sottoscrizioni associate ai tipi di ambiente.

Per ridurre la complessità non necessaria, in questa esercitazione si usa una singola sottoscrizione per il dev center e tutti i tipi di ambiente. In pratica, le sottoscrizioni di dev center e di distribuzione di destinazione saranno probabilmente sottoscrizioni separate con criteri diversi applicati.

az role assignment create \
  --scope /subscriptions/$AZURE_SUBSCRIPTION_ID \
  --role Owner \
  --assignee-object-id $AZURE_DEVCENTER_PRINCIPAL_ID \
  --assignee-principal-type ServicePrincipal

1.4 Creare i tipi di ambiente

A livello di dev center, i tipi di ambiente definiscono gli ambienti che i team di sviluppo possono creare, ad esempio sviluppo, test, sandbox, preproduzione o produzione.

Creare tre nuovi tipi di ambiente: Sviluppo, Test e Prod.

az devcenter admin environment-type create \
  --name Dev \
  --resource-group $AZURE_RESOURCE_GROUP \
  --dev-center $AZURE_DEVCENTER
az devcenter admin environment-type create \
  --name Test \
  --resource-group $AZURE_RESOURCE_GROUP \
  --dev-center $AZURE_DEVCENTER
az devcenter admin environment-type create \
  --name Prod \
  --resource-group $AZURE_RESOURCE_GROUP \
  --dev-center $AZURE_DEVCENTER

1.5 Creare un progetto

Un progetto è il punto di accesso per il team di sviluppo. Ogni progetto è associato a un dev center.

Creare un nuovo progetto.

az devcenter admin project create \
  --name $AZURE_PROJECT \
  --resource-group $AZURE_RESOURCE_GROUP \
  --location $LOCATION \
  --dev-center-id $AZURE_DEVCENTER_ID

Il comando precedente restituisce JSON. Salvare il id valore come variabile di ambiente da usare in un secondo momento.

AZURE_PROJECT_ID=<id>

Assegnare a se stessi il ruolo di Amministrazione progetto DevCenter nel progetto.

az role assignment create \
  --scope "$AZURE_PROJECT_ID" \
  --role "DevCenter Project Admin" \
  --assignee-object-id $MY_AZURE_ID \
  --assignee-principal-type User

1.6 Creare tipi di ambiente di progetto

A livello di progetto, i tecnici della piattaforma specificano i tipi di ambiente appropriati per il team di sviluppo.

Creare un nuovo tipo di ambiente di progetto per ognuno dei tipi di ambiente creati nel dev center.

az devcenter admin project-environment-type create \
  --name Dev \
  --roles "{\"b24988ac-6180-42a0-ab88-20f7382dd24c\":{}}" \
  --deployment-target-id /subscriptions/$AZURE_SUBSCRIPTION_ID \
  --resource-group $AZURE_RESOURCE_GROUP \
  --location $LOCATION \
  --project $AZURE_PROJECT \
  --identity-type SystemAssigned \
  --status Enabled
az devcenter admin project-environment-type create \
  --name Test \
  --roles "{\"b24988ac-6180-42a0-ab88-20f7382dd24c\":{}}" \
  --deployment-target-id /subscriptions/$AZURE_SUBSCRIPTION_ID \
  --resource-group $AZURE_RESOURCE_GROUP \
  --location $LOCATION \
  --project $AZURE_PROJECT \
  --identity-type SystemAssigned \
  --status Enabled
az devcenter admin project-environment-type create \
  --name Prod \
  --roles "{\"b24988ac-6180-42a0-ab88-20f7382dd24c\":{}}" \
  --deployment-target-id /subscriptions/$AZURE_SUBSCRIPTION_ID \
  --resource-group $AZURE_RESOURCE_GROUP \
  --location $LOCATION \
  --project $AZURE_PROJECT \
  --identity-type SystemAssigned \
  --status Enabled

2. Creare un insieme di credenziali delle chiavi

In questa sezione viene creato un nuovo insieme di credenziali delle chiavi. Questo insieme di credenziali delle chiavi verrà usato più avanti nell'esercitazione per salvare un token di accesso personale da GitHub.

az keyvault create \
  --name $AZURE_KEYVAULT \
  --resource-group $AZURE_RESOURCE_GROUP \
  --location $LOCATION \
  --enable-rbac-authorization true

Anche in questo caso, salvare l'oggetto id dall'output JSON del comando precedente come variabile di ambiente.

AZURE_KEYVAULT_ID=<id>

Assegnare a se stessi il ruolo Amministrazione istrator dell'insieme di credenziali delle chiavi nel nuovo insieme di credenziali delle chiavi.

az role assignment create \
  --scope $AZURE_KEYVAULT_ID \
  --role "Key Vault Administrator" \
  --assignee-object-id $MY_AZURE_ID \
  --assignee-principal-type User

Assegnare l'identità di Dev Center il ruolo dell'utente dei segreti di Key Vault.

az role assignment create \
  --scope $AZURE_KEYVAULT_ID \
  --role "Key Vault Secrets User" \
  --assignee-object-id $AZURE_DEVCENTER_PRINCIPAL_ID \
  --assignee-principal-type ServicePrincipal

3. Creare e configurare un repository GitHub

In questa sezione viene creato un nuovo repository GitHub per archiviare un catalogo. Gli ambienti di distribuzione di Azure supportano sia GitHub che i repository Azure DevOps. In questa esercitazione si usa GitHub.

3.1 Creare un nuovo repository GitHub

In questo passaggio si crea un nuovo repository nell'account GitHub con una struttura di directory, rami e file predefiniti. Questi elementi vengono generati da un repository di modelli di esempio.

  1. Usare questo collegamento per generare un nuovo repository GitHub dal modello di esempio.

    Screenshot showing the GitHub create repository from template page.

  2. Se non si ha un account GitHub a pagamento, impostare il repository su Pubblico.

  3. Selezionare Create repository from template (Crea repository da modello).

  4. Nella scheda Azioni si noti che l'azione Crea ambiente ha esito negativo. Questo comportamento è previsto, è possibile procedere con il passaggio successivo.

3.2 Proteggere il ramo principale del repository

È possibile proteggere rami importanti impostando le regole di protezione dei rami. Le regole di protezione definiscono se i collaboratori possono eliminare o forzare il push nel ramo. Impostano anche i requisiti per qualsiasi push nel ramo, ad esempio il passaggio di controlli di stato o una cronologia di commit lineare.

Nota

I rami protetti sono disponibili nei repository pubblici con GitHub Free e GitHub Free per le organizzazioni e nei repository pubblici e privati con GitHub Pro, GitHub Team, GitHub Enterprise Cloud e GitHub Enterprise Server. Per altre informazioni, vedere Prodotti GitHub.

  1. Se non è già aperto, passare alla pagina principale del repository.

  2. Sotto il nome del repository selezionare Settings. Se non è possibile visualizzare la scheda Impostazioni, selezionare il menu a discesa ... e quindi selezionare Impostazioni.

    Screenshot showing the GitHub repository page with settings highlighted.

  3. Nella sezione Codice e automazione della barra laterale selezionare Rami.

    Screenshot showing the settings page, with branches highlighted.

  4. In Regole di protezione ramo selezionare Aggiungi regola di protezione ramo.

    Screenshot showing the branch protection rule page, with Add branch protection rule highlighted.

  5. In Modello nome ramo immettere main.

    Screenshot showing the branch name pattern text box, with main highlighted.

  6. In Proteggi rami corrispondenti selezionare Richiedi una richiesta pull prima dell'unione.

    Screenshot showing protect matching branches with Require a pull request before merging selected and highlighted.

  7. Facoltativamente, è possibile abilitare altre regole di protezione.

  8. Seleziona Crea.

3.3 Configurare le variabili del repository

Nota

Le variabili di configurazione per GitHub Actions sono in versione beta e soggette a modifiche.

  1. Nella sezione Sicurezza della barra laterale selezionare Segreti e variabili, quindi selezionare Azioni.

    Screenshot showing the Security section of the sidebar with Actions highlighted.

  2. Seleziona la scheda Variabili.

  3. Per ogni elemento della tabella:

    1. Selezionare Nuova variabile del repository.
    2. Nel campo Nome immettere il nome della variabile.
    3. Nel campo Valore immettere il valore descritto nella tabella.
    4. Selezionare Aggiungi variabile.
    Nome variabile Valore variabile
    AZURE_DEVCENTER Nome del dev center
    AZURE_PROJECT Nome del progetto
    AZURE_CATALOG Impostare su "Ambienti"
    AZURE_CATALOG_ITEM Impostare su "FunctionApp"
    AZURE_SUBSCRIPTION_ID L'ID sottoscrizione di Azure
    AZURE_TENANT_ID ID tenant di Azure

    Screenshot showing the variables page with the variables table.

3.4 Creare un token di accesso personale GitHub

Creare quindi un token di accesso personale con granularità fine per consentire al dev center ambienti di distribuzione di Azure di connettersi al repository e usare il catalogo dell'ambiente.

Nota

Il token di accesso personale con granularità fine è attualmente in versione beta e soggetto a modifiche. Per lasciare commenti e suggerimenti, vedere la discussione sui commenti e suggerimenti.

  1. Nell'angolo superiore destro di qualsiasi pagina in GitHub.com selezionare la foto del profilo e quindi selezionare Impostazioni.

  2. Nella barra laterale sinistra selezionare Impostazioni sviluppatore.

  3. Nella barra laterale sinistra, in Token di accesso personali selezionare Token con granularità fine e quindi selezionare Genera nuovo token.

    Screenshot showing the GitHub personal access token options, with Fine-grained tokens and Generate new token highlighted.

  4. Nella pagina Nuovo token di accesso personale con granularità fine immettere un nome per il token in Nome token.

  5. In Scadenza selezionare una scadenza per il token.

  6. Selezionare l'utente GitHub in Proprietario risorsa.

  7. In Accesso al repository selezionare Solo repository e quindi nell'elenco a discesa Repository selezionati cercare e selezionare il repository creato.

    Screenshot showing GitHub repository access options, with Only select repositories highlighted.

  8. In Autorizzazioni selezionare Autorizzazioni repository e modificare Contenuto in Sola lettura.

    Screenshot showing GitHub repository permissions with Contents highlighted.

  9. Selezionare Genera token.

  10. Copiare e salvare il token di accesso personale. Non è possibile visualizzarlo di nuovo.

3.5 Salvare il token di accesso personale nell'insieme di credenziali delle chiavi

Salvare quindi il token di accesso personale come segreto dell'insieme di credenziali delle chiavi denominato pat.

az keyvault secret set \
    --name pat \
    --vault-name $AZURE_KEYVAULT \
    --value <personalAccessToken>

4. Connessione il catalogo al dev center

In Ambienti di distribuzione di Azure un catalogo è un repository che contiene un set di definizioni di ambiente. Gli elementi del catalogo sono costituiti da un modello di infrastruttura come codice (IaC) e da un file di ambiente che funge da manifesto. Il modello definisce l'ambiente e il file di ambiente fornisce metadati sul modello. I team di sviluppo usano definizioni di ambiente dal catalogo per creare ambienti.

Il modello usato per creare il repository GitHub contiene un catalogo nella cartella Ambienti .

Aggiungere il catalogo al dev center

Nel comando seguente sostituire < Organization/Repository > con l'organizzazione GitHub e il nome del repository.

az devcenter admin catalog create \
    --name Environments \
    --resource-group $AZURE_RESOURCE_GROUP \
    --dev-center $AZURE_DEVCENTER \
    --git-hub path="/Environments" branch="main" secret-identifier="https://$AZURE_KEYVAULT.vault.azure.net/secrets/pat" uri="https://github.com/< Organization/Repository >.git"

5. Configurare le identità di distribuzione

OpenID Connessione con GitHub Actions è un metodo di autenticazione che usa token di breve durata per offrire sicurezza avanzata. È il modo consigliato per autenticare GitHub Actions in Azure.

È anche possibile autenticare un'entità servizio direttamente usando un segreto, ma non rientra nell'ambito di questa esercitazione.

5.1 Generare identità di distribuzione

  1. Registrare le applicazioni Microsoft Entra e le entità servizio per ognuno dei tre tipi di ambiente.

    Creare l'applicazione Microsoft Entra per dev.

    az ad app create --display-name "$AZURE_PROJECT-Dev"
    

    Questo comando restituisce JSON con un oggetto id che viene usato durante la creazione di credenziali federate con l'API Graph e un appId (detto anche ID client).

    Impostare le seguenti variabili di ambiente:

    DEV_AZURE_CLIENT_ID=<appId>
    DEV_APPLICATION_ID=<id>
    

    Ripetere per Test.

    az ad app create --display-name "$AZURE_PROJECT-Test"
    
    TEST_AZURE_CLIENT_ID=<appId>
    TEST_APPLICATION_ID=<id>
    

    E per Prod.

    az ad app create --display-name "$AZURE_PROJECT-Prod"
    
    PROD_AZURE_CLIENT_ID=<appId>
    PROD_APPLICATION_ID=<id>
    
  2. Creare un'entità servizio per ogni applicazione.

    Eseguire il comando seguente per creare una nuova entità servizio per Dev.

     az ad sp create --id $DEV_AZURE_CLIENT_ID
    

    Questo comando genera un output JSON diverso id e verrà usato nel passaggio successivo.

    Impostare le seguenti variabili di ambiente:

    DEV_SERVICE_PRINCIPAL_ID=<id>
    

    Ripetere per Test.

     az ad sp create --id $TEST_AZURE_CLIENT_ID
    
    TEST_SERVICE_PRINCIPAL_ID=<id>
    

    E per Prod.

     az ad sp create --id $PROD_AZURE_CLIENT_ID
    
    PROD_SERVICE_PRINCIPAL_ID=<id>
    
  3. Eseguire i comandi seguenti per creare una nuova credenziali di identità federata per ogni applicazione active directory.

    In ognuno dei tre comandi seguenti sostituire < Organization/Repository > con l'organizzazione GitHub e il nome del repository.

    Creare le credenziali di identità federate per Dev.

    az rest --method POST \
        --uri "https://graph.microsoft.com/beta/applications/$DEV_APPLICATION_ID/federatedIdentityCredentials" \
        --body '{"name":"ADEDev","issuer":"https://token.actions.githubusercontent.com","subject":"repo:< Organization/Repository >:environment:Dev","description":"Dev","audiences":["api://AzureADTokenExchange"]}'
    

    Per Test.

    az rest --method POST \
        --uri "https://graph.microsoft.com/beta/applications/$TEST_APPLICATION_ID/federatedIdentityCredentials" \
        --body '{"name":"ADETest","issuer":"https://token.actions.githubusercontent.com","subject":"repo:< Organization/Repository >:environment:Test","description":"Test","audiences":["api://AzureADTokenExchange"]}'
    

    E per Prod.

    az rest --method POST \
        --uri "https://graph.microsoft.com/beta/applications/$PROD_APPLICATION_ID/federatedIdentityCredentials" \
        --body '{"name":"ADEProd","issuer":"https://token.actions.githubusercontent.com","subject":"repo:< Organization/Repository >:environment:Prod","description":"Prod","audiences":["api://AzureADTokenExchange"]}'
    

5.2 Assegnare ruoli alle identità di distribuzione

  1. Assegnare a ogni identità di distribuzione il ruolo Lettore nel progetto.

    az role assignment create \
        --scope "$AZURE_PROJECT_ID" \
        --role Reader \
        --assignee-object-id $DEV_SERVICE_PRINCIPAL_ID \
        --assignee-principal-type ServicePrincipal
    
    az role assignment create \
        --scope "$AZURE_PROJECT_ID" \
        --role Reader \
        --assignee-object-id $TEST_SERVICE_PRINCIPAL_ID \
        --assignee-principal-type ServicePrincipal
    
    az role assignment create \
        --scope "$AZURE_PROJECT_ID" \
        --role Reader \
        --assignee-object-id $PROD_SERVICE_PRINCIPAL_ID \
        --assignee-principal-type ServicePrincipal
    
  2. Assegnare a ogni identità di distribuzione il ruolo utente Ambienti di distribuzione al tipo di ambiente corrispondente.

    az role assignment create \
        --scope "$AZURE_PROJECT_ID/environmentTypes/Dev" \
        --role "Deployment Environments User" \
        --assignee-object-id $DEV_SERVICE_PRINCIPAL_ID \
        --assignee-principal-type ServicePrincipal
    
    az role assignment create \
        --scope "$AZURE_PROJECT_ID/environmentTypes/Test" \
        --role "Deployment Environments User" \
        --assignee-object-id $TEST_SERVICE_PRINCIPAL_ID \
        --assignee-principal-type ServicePrincipal
    
    az role assignment create \
        --scope "$AZURE_PROJECT_ID/environmentTypes/Prod" \
        --role "Deployment Environments User" \
        --assignee-object-id $PROD_SERVICE_PRINCIPAL_ID \
        --assignee-principal-type ServicePrincipal
    

6. Configurare gli ambienti GitHub

Con gli ambienti GitHub è possibile configurare gli ambienti con regole di protezione e segreti. Un processo del flusso di lavoro che fa riferimento a un ambiente deve seguire qualsiasi regola di protezione per l'ambiente prima di eseguire o accedere ai segreti dell'ambiente.

Creare ambienti di sviluppo, test e produzione che eseguono il mapping ai tipi di ambiente nel progetto Ambienti di distribuzione di Azure.

Nota

Gli ambienti, i segreti dell'ambiente e le regole di protezione dell'ambiente sono disponibili nei repository pubblici per tutti i prodotti. Per accedere a ambienti, segreti dell'ambiente e rami di distribuzione in repository privati o interni , è necessario usare GitHub Pro, GitHub Team o GitHub Enterprise. Per accedere ad altre regole di protezione dell'ambiente in repository privati o interni , è necessario usare GitHub Enterprise. Per altre informazioni, vedere Prodotti GitHub.

6.1 Creare l'ambiente di sviluppo

  1. In GitHub passare alla pagina principale del repository.

  2. Sotto il nome del repository selezionare Settings. Se non è possibile visualizzare la scheda Impostazioni, selezionare il menu a discesa ... e quindi selezionare Impostazioni.

  3. Nella barra laterale sinistra selezionare Ambienti.

  4. Selezionare Nuovo ambiente e immettere Sviluppo per il nome dell'ambiente e quindi selezionare Configura ambiente.

    Screenshot showing the Environments Add pane, with the environment name Dev, and Configure Environment highlighted.

  5. In Segreti dell'ambiente selezionare Aggiungi segreto e immettere AZURE_CLIENT_ID per Nome.

    Screenshot showing the Environment Configure Dev pane, with Add secret highlighted.

  6. In Valore immettere l'ID client (appId) per l'app *Dev**Microsoft Entra creata in precedenza (salvata come $DEV_AZURE_CLIENT_ID variabile di ambiente).

    Screenshot of the Add secret box with the name AZURE CLIENT ID, the value set to an ID number, and add secret highlighted.

  7. Selezionare Aggiungi segreto.

6.2 Creare l'ambiente di test

Tornare alla pagina ambienti principali selezionando Ambienti nella barra laterale sinistra.

  1. Selezionare Nuovo ambiente e immettere Test per il nome dell'ambiente e quindi selezionare Configura ambiente.

  2. In Segreti dell'ambiente selezionare Aggiungi segreto e immettere AZURE_CLIENT_ID per Nome.

  3. In Valore immettere l'ID client (appId) per l'app Test Microsoft Entra creata in precedenza (salvata come $TEST_AZURE_CLIENT_ID variabile di ambiente).

  4. Selezionare Aggiungi segreto.

6.3 Creare l'ambiente Prod

Ancora una volta, tornare alla pagina degli ambienti principali selezionando Ambienti nella barra laterale sinistra

  1. Selezionare Nuovo ambiente e immettere Prod come nome dell'ambiente e quindi selezionare Configura ambiente.

  2. In Segreti dell'ambiente selezionare Aggiungi segreto e immettere AZURE_CLIENT_ID per Nome.

  3. In Valore immettere l'ID client (appId) per l'app Prod Microsoft Entra creata in precedenza (salvata come $PROD_AZURE_CLIENT_ID variabile di ambiente).

  4. Selezionare Aggiungi segreto.

Impostare quindi se stessi come revisore necessario per questo ambiente. Quando si tenta di eseguire la distribuzione in Prod, GitHub Actions attende un'approvazione prima dell'avvio. Mentre un processo è in attesa di approvazione, ha lo stato In attesa. Se un processo non viene approvato entro 30 giorni, l'operazione ha esito negativo automaticamente.

Per altre informazioni sugli ambienti e le approvazioni necessarie, vedere Uso degli ambienti per la distribuzione.

  1. Selezionare Revisori obbligatori.

  2. Cercare e selezionare l'utente GitHub. È possibile immettere fino a sei persone o team. Solo uno dei revisori necessari deve approvare il processo per procedere.

  3. Selezionare Salva regole di protezione.

Configurare main infine come ramo di distribuzione:

  1. Nell'elenco a discesa Rami di distribuzione scegliere Rami selezionati.

  2. Selezionare Aggiungi regola del ramo di distribuzione e immettere main per il modello nome ramo.

  3. Seleziona Aggiungi regola.

7. Testare la pipeline CI/CD

In questa sezione vengono apportate alcune modifiche al repository e viene testata la pipeline CI/CD.

7.1 Clonare il repository

  1. Nel terminale, cd in una cartella in cui si vuole clonare il repository in locale.

  2. Clonare il repository. Assicurarsi di sostituire < Organization/Repository > nel comando seguente con l'organizzazione GitHub e il nome del repository.

    git clone https://github.com/< Organization/Repository >.git
    
  3. Passare alla directory clonata.

    cd <repository>
    
  4. Creare quindi un nuovo ramo e pubblicarlo in remoto.

    git checkout -b feature1
    
    git push -u origin feature1
    

    Viene creato un nuovo ambiente in Azure specifico di questo ramo.

  5. In GitHub passare alla pagina principale del repository appena creato.

  6. Sotto il nome del repository selezionare Azioni.

    Verrà visualizzato un nuovo flusso di lavoro Crea ambiente in esecuzione.

7.2 Apportare una modifica al codice

  1. Aprire il repository clonato in locale in VS Code.

  2. Nell'ambiente del servizio app . Cartella dell'esercitazione , apportare una modifica a un file.

  3. Salvare la modifica.

7.3 Eseguire il push delle modifiche per aggiornare l'ambiente

  1. Preparare le modifiche ed eseguire il push nel feature1 ramo.

    git add .
    git commit -m '<commit message>'
    git push
    
  2. Nella pagina Azioni del repository viene visualizzato un nuovo flusso di lavoro Update Environment in esecuzione.

7.4 Creare una richiesta pull

  1. Creare una richiesta main <- feature1pull di GitHub.

  2. Nella pagina Azioni del repository viene visualizzato un nuovo flusso di lavoro avviato per creare un ambiente specifico per la richiesta pull usando il tipo di ambiente test.

7.5 Unire la richiesta pull

  1. In GitHub passare alla richiesta pull creata.

  2. Unire la richiesta pull.

    Le modifiche vengono pubblicate nell'ambiente di produzione e gli ambienti di richiesta pull e ramo vengono eliminati.

Pulire le risorse

Se non si prevede di usare alcuna delle risorse create, eliminarle in modo da non comportare ulteriori addebiti. Se l'applicazione di esempio è stata distribuita in un gruppo di risorse diverso, è possibile ripetere i passaggi seguenti.

Per eliminare le risorse usando il portale di Azure:

  1. Selezionare il pulsante del menu nell'angolo superiore sinistro e quindi selezionare Gruppi di risorse.

  2. Nell'elenco selezionare il gruppo di risorse creato.

  3. Selezionare Elimina gruppo di risorse.

  4. Immettere il nome del gruppo di risorse. Quindi seleziona Elimina.

Per eliminare le risorse usando l'interfaccia della riga di comando di Azure, immettere il comando seguente:

az group delete --name <my-dev-center-rg>

Tenere presente che l'eliminazione del gruppo di risorse comporta l'eliminazione di tutte le risorse al suo interno.