Wdrażanie szablonów usługi ARM przy użyciu funkcji GitHub Actions

Funkcja GitHub Actions to pakiet funkcji w usłudze GitHub do automatyzowania przepływów pracy tworzenia oprogramowania w tym samym miejscu, w którym przechowujesz kod i współpracujesz nad żądaniami ściągnięcia i problemami.

Użyj akcji Wdrażanie szablonu usługi Azure Resource Manager, aby zautomatyzować wdrażanie szablonu usługi Azure Resource Manager (szablon usługi ARM) na platformie Azure.

Wymagania wstępne

Omówienie pliku przepływu pracy

Przepływ pracy jest definiowany przez plik YAML (.yml) w /.github/workflows/ ścieżce w repozytorium. Ta definicja zawiera różne kroki i parametry tworzące przepływ pracy.

Plik zawiera dwie sekcje:

Sekcja Zadania
Authentication 1. Generowanie poświadczeń wdrożenia.
Wdrażanie 1. Wdróż szablon usługi Resource Manager.

Generowanie poświadczeń wdrożenia

Utwórz jednostkę usługi za pomocą polecenia az ad sp create-for-rbac w interfejsie wiersza polecenia platformy Azure. Uruchom to polecenie za pomocą usługi Azure Cloud Shell w witrynie Azure Portal lub wybierając przycisk Wypróbuj .

az ad sp create-for-rbac --name "myML" --role contributor \
                            --scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
                            --json-auth

Parametr --json-auth jest dostępny w wersjach >interfejsu wiersza polecenia platformy Azure = 2.51.0. Wersje przed tym użyciem --sdk-auth z ostrzeżeniem o wycofaniu.

W powyższym przykładzie zastąp symbole zastępcze identyfikatorem subskrypcji, nazwą grupy zasobów i nazwą aplikacji. Dane wyjściowe to obiekt JSON z poświadczeniami przypisania roli, które zapewniają dostęp do aplikacji usługi App Service podobnej do poniższej. Skopiuj ten obiekt JSON do późniejszego użycia.

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

Konfigurowanie wpisów tajnych usługi GitHub

  1. W usłudze GitHub przejdź do repozytorium.

  2. Przejdź do Ustawienia w menu nawigacji.

  3. Wybierz pozycję Wpisy tajne zabezpieczeń > i zmienne > Akcje.

    Screenshot of adding a secret

  4. Wybierz pozycję Nowy wpis tajny repozytorium.

  5. Wklej całe dane wyjściowe JSON z polecenia interfejsu wiersza polecenia platformy Azure do pola wartości wpisu tajnego. Nadaj wpisowi tajnym nazwę AZURE_CREDENTIALS.

  6. Wybierz przycisk Add secret (Dodaj wpis tajny).

Dodawanie szablonu usługi Resource Manager

Dodaj szablon usługi Resource Manager do repozytorium GitHub. Ten szablon tworzy konto magazynu.

https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json

Plik można umieścić w dowolnym miejscu w repozytorium. Przykładowy przepływ pracy w następnej sekcji zakłada, że plik szablonu nosi nazwę azuredeploy.json i jest przechowywany w katalogu głównym repozytorium.

Tworzenie przepływu pracy

Plik przepływu pracy musi być przechowywany w folderze .github/workflows w katalogu głównym repozytorium. Rozszerzenie pliku przepływu pracy może być .yml lub yaml.

  1. W repozytorium GitHub wybierz pozycję Akcje z górnego menu.
  2. Wybierz pozycję Nowy przepływ pracy.
  3. Wybierz opcję Skonfiguruj przepływ pracy samodzielnie.
  4. Zmień nazwę pliku przepływu pracy, jeśli wolisz inną nazwę niż main.yml. Na przykład: deployStorageAccount.yml.
  5. Zastąp zawartość tego pliku yml następującym kodem:
  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 ARM template
      - name: Run ARM deploy
        uses: azure/arm-deploy@v1
        with:
          subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }}
          resourceGroupName: ${{ secrets.AZURE_RG }}
          template: ./azuredeploy.json
          parameters: storageAccountType=Standard_LRS

        # output containerName variable from template
      - run: echo ${{ steps.deploy.outputs.containerName }}

Uwaga

Możesz określić plik parametrów formatu JSON zamiast tego w akcji Wdrażanie usługi ARM (na przykład: .azuredeploy.parameters.json).

Pierwsza sekcja pliku przepływu pracy obejmuje:

  • name: nazwa przepływu pracy.
  • on: nazwa zdarzeń usługi GitHub, które wyzwala przepływ pracy. Przepływ pracy jest wyzwalany, gdy w gałęzi głównej występuje zdarzenie wypychania, które modyfikuje co najmniej jeden z dwóch określonych plików. Dwa pliki to plik przepływu pracy i plik szablonu.
  1. Wybierz pozycję Start commit (Rozpocznij zatwierdzanie).
  2. Wybierz pozycję Zatwierdź bezpośrednio w gałęzi głównej.
  3. Wybierz pozycję Zatwierdź nowy plik (lub Zatwierdź zmiany).

Ponieważ przepływ pracy jest skonfigurowany do wyzwalania przez plik przepływu pracy lub aktualizowany plik szablonu, przepływ pracy jest uruchamiany bezpośrednio po zatwierdzeniu zmian.

Sprawdzanie stanu przepływu pracy

  1. Wybierz kartę Akcje . Zostanie wyświetlony przepływ pracy Tworzenie deployStorageAccount.yml . Uruchomienie przepływu pracy trwa od 1 do 2 minut.
  2. Wybierz przepływ pracy, aby go otworzyć.
  3. Wybierz pozycję Uruchom wdrożenie usługi ARM z menu, aby zweryfikować wdrożenie.

Czyszczenie zasobów

Gdy grupa zasobów i repozytorium nie są już potrzebne, wyczyść wdrożone zasoby, usuwając grupę zasobów i repozytorium GitHub.

Następne kroki