Szybki start: wdrażanie plików Bicep przy użyciu funkcji GitHub Actions

Funkcja GitHub Actions to zestaw funkcji w usłudze GitHub do automatyzowania przepływów pracy tworzenia oprogramowania. W tym przewodniku Szybki start użyjesz funkcji GitHub Actions dla wdrożenia usługi Azure Resource Manager, aby zautomatyzować wdrażanie pliku Bicep na platformie Azure.

Zawiera krótkie wprowadzenie do funkcji GitHub actions i plików Bicep. Jeśli chcesz uzyskać bardziej szczegółowe instrukcje dotyczące konfigurowania akcji i projektu usługi GitHub, zobacz Wdrażanie zasobów platformy Azure przy użyciu funkcji Bicep i GitHub Actions.

Wymagania wstępne

Utwórz grupę zasobów

Utwórz grupę zasobów. W dalszej części tego przewodnika Szybki start wdrożysz plik Bicep w tej grupie zasobów.

az group create -n exampleRG -l westus

Generowanie poświadczeń wdrożenia

Funkcja GitHub Actions jest uruchamiana w ramach tożsamości. Użyj polecenia az ad sp create-for-rbac, aby utworzyć jednostkę usługi dla tożsamości. Udziel jednostce usługi roli współautora dla grupy zasobów utworzonej w poprzedniej sesji, aby akcja usługi GitHub z tożsamością mogła tworzyć zasoby w tej grupie zasobów. Zaleca się przyznanie minimalnego wymaganego dostępu.

az ad sp create-for-rbac --name {app-name} --role contributor --scopes /subscriptions/{subscription-id}/resourceGroups/exampleRG --json-auth

Zastąp symbol zastępczy {app-name} nazwą aplikacji. Zastąp {subscription-id} ciąg identyfikatorem subskrypcji.

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.

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

Skopiuj ten obiekt JSON do późniejszego użycia. Będziesz potrzebować tylko sekcji z wartościami clientId, clientSecret, subscriptionIdi tenantId . Upewnij się, tenantId że nie masz dodatkowego przecinka na końcu ostatniego wiersza, na przykład wiersza w poprzednim przykładzie lub spowoduje to nieprawidłowy plik JSON. Podczas wdrażania zostanie wyświetlony błąd z komunikatem "Logowanie nie powiodło się z powodu błędu: zawartość nie jest prawidłowym obiektem JSON. Sprawdź dokładnie, czy typ uwierzytelniania jest poprawny".

Konfigurowanie wpisów tajnych usługi GitHub

Utwórz wpisy tajne dla poświadczeń platformy Azure, grupy zasobów i subskrypcji. Te wpisy tajne będą używane w sekcji Tworzenie przepływu pracy .

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

  2. Wybierz pozycję Ustawienia > Wpisy tajne i zmienne > Akcje > Nowy wpis tajny repozytorium.

  3. 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.

  4. Utwórz kolejny wpis tajny o nazwie AZURE_RG. Dodaj nazwę grupy zasobów do pola wartości wpisu tajnego (exampleRG).

  5. Utwórz kolejny wpis tajny o nazwie AZURE_SUBSCRIPTION. Dodaj identyfikator subskrypcji do pola wartości wpisu tajnego (na przykład: 90fd3f9d-4c61-432d-99ba-1273f236afa2).

Dodawanie pliku Bicep

Dodaj plik Bicep do repozytorium GitHub. Następujący plik Bicep tworzy konto magazynu:

@minLength(3)
@maxLength(11)
param storagePrefix string

@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_RAGRS'
  'Standard_ZRS'
  'Premium_LRS'
  'Premium_ZRS'
  'Standard_GZRS'
  'Standard_RAGZRS'
])
param storageSKU string = 'Standard_LRS'

param location string = resourceGroup().location

var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'

resource stg 'Microsoft.Storage/storageAccounts@2021-04-01' = {
  name: uniqueStorageName
  location: location
  sku: {
    name: storageSKU
  }
  kind: 'StorageV2'
  properties: {
    supportsHttpsTrafficOnly: true
  }
}

output storageEndpoint object = stg.properties.primaryEndpoints

Plik Bicep wymaga jednego parametru o nazwie storagePrefix z 3 do 11 znaków.

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

Tworzenie przepływu pracy

Przepływ pracy definiuje kroki do wykonania po wyzwoleniu. Jest to plik YAML (.yml) w ścieżce .github/workflows/ repozytorium. Rozszerzenie pliku przepływu pracy może być .yml lub yaml.

Aby utworzyć przepływ pracy, wykonaj następujące kroki:

  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: deployBicepFile.yml.

  5. Zastąp zawartość pliku yml następującym kodem:

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

    Zastąp mystore ciąg własnym prefiksem nazwy konta magazynu.

    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 po wystąpieniu zdarzenia wypychania w gałęzi głównej.
  6. Wybierz pozycję Zatwierdź zmiany.

  7. Wybierz pozycję Zatwierdź bezpośrednio w gałęzi głównej.

  8. Wybierz pozycję Zatwierdź nowy plik (lub Zatwierdź zmiany).

Aktualizowanie pliku przepływu pracy lub pliku Bicep wyzwala przepływ pracy. Przepływ pracy rozpoczyna się bezpośrednio po zatwierdzeniu zmian.

Sprawdzanie stanu przepływu pracy

  1. Wybierz kartę Akcje . Zostanie wyświetlony przepływ pracy Tworzenie deployBicepFile.yml . Uruchomienie przepływu pracy trwa od 1 do 2 minut.
  2. Wybierz przepływ pracy, aby go otworzyć, a następnie sprawdź, czy element Status to Success.

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.

az group delete --name exampleRG

Następne kroki