Oefening: Een Bicep-bestand implementeren vanuit GitHub-werkstromen

Voltooid

GitHub Actions zijn vergelijkbaar met Azure Pipelines in de natuur. Ze bieden een manier om softwareontwikkeling en -implementaties te automatiseren. In deze oefening leert u hoe u een Bicep-bestand implementeert met behulp van een GitHub Action.

Vereisten

  • U hebt hier een GitHub-account nodig dat u gratis kunt maken.
  • Er is ook een GitHub-opslagplaats vereist voor het opslaan van uw Bicep-bestand en werkstromen die eerder in de oefening zijn gemaakt: Bicep-sjablonen maken. Nadat u uw GitHub-opslagplaats hebt gemaakt, pusht u het Bicep-bestand ernaartoe.
  • Voor implementatie in Azure is toegang tot een Azure-abonnement nodig, dat hier gratis kan worden gemaakt.

Een service-principal maken in Azure

Als u uw resources wilt implementeren in Azure, moet u een service-principal maken die GitHub kan gebruiken. Open dus een terminal of gebruik Cloud Shell in Azure Portal en typ de volgende opdrachten:

az login
az ad sp create-for-rbac --name myApp --role contributor --scopes /subscriptions/{subscription-id}/resourceGroups/Bicep --sdk-auth

Notitie

Vergeet niet om de abonnements-id te vervangen door die van u.

Wanneer de bewerking is voltooid, moet er een JSON-object worden uitgevoerd dat uw tenantId, subscriptionId, clientId, en clientSecretnog enkele eigenschappen bevat, zoals het volgende.

{
    "clientId": "<GUID>",
    "clientSecret": "<GUID>",
    "subscriptionId": "<GUID>",
    "tenantId": "<GUID>",
    (...)
}

Let op dit object, omdat u het moet toevoegen aan uw GitHub-geheimen.

Een GitHub-geheim maken

Navigeer in uw GitHub-opslagplaats naar Instellingen> Secrets>Actions. Maak een nieuw geheim met de naam en plak het hele JSON-object dat u hebt gekregen AZURE_CREDENTIALS uit de vorige stap.

Maak een ander geheim voor de naam van de resourcegroep met een naam zoals AZURE_RG en een voor het abonnement.

Screenshot of GitHub secrets creation and manage page.

Een GitHub-actie maken

  1. Navigeer eerst naar uw opslagplaats en selecteer het menu Acties. Stel vervolgens een werkstroom in om een lege werkstroom in uw opslagplaats te maken. U kunt desgewenst de naam van het bestand wijzigen in een andere naam.

    Screenshot of GitHub new file creation, edit and preview.

  2. Vervang de inhoud van het bestand door het volgende codefragment:

    on: [push]
    name: Azure ARM
    jobs:
        build-and-deploy:
            runs-on: ubuntu-latest
            steps:
                # Checkout code
                - uses: actions/checkout@main
    
                  # Log into Azure
                - uses: azure/login@v1
                  with:
                      creds: ${{ secrets.AZURE_CREDENTIALS }}
    
                  # Deploy Bicep file
                - name: deploy
                  uses: azure/arm-deploy@v1
                  with:
                      subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }}
                      resourceGroupName: ${{ secrets.AZURE_RG }}
                      template: ./main.bicep
                      parameters: storagePrefix=stg
                      failOnStdErr: false
    

    U kunt het voorvoegsel van het opslagaccount vervangen door uw eigen account.

    Notitie

    Het eerste deel van de werkstroom definieert de trigger en de naam ervan. De rest definieert een taak en gebruikt een paar taken om de code te bekijken, u aan te melden bij Azure en het Bicep-bestand te implementeren.

  3. Selecteer Doorvoeren starten en voer een titel en een beschrijving in het pop-updialoogvenster in. Selecteer Vervolgens Rechtstreeks doorvoeren naar de hoofdbranch, gevolgd door Een nieuw bestand doorvoeren.

    Screenshot of GitHub commits a new file to the main branch.

  4. Ga naar het tabblad Acties en selecteer de zojuist gemaakte actie die moet worden uitgevoerd.

    Screenshot of GitHub action running and deploying.

  5. Controleer de status en wanneer de taak is voltooid de Azure-portal om te zien of het opslagaccount wordt gemaakt.

    Screenshot of GitHub action successful executed job.