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
- Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
- Konto usługi GitHub. Jeśli nie masz takiego konta, zarejestruj się bezpłatnie.
- Repozytorium GitHub do przechowywania plików Bicep i plików przepływu pracy. Aby go utworzyć, zobacz Tworzenie nowego repozytorium.
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 podobne do poniższych danych wyjściowych.
{
"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
, subscriptionId
i tenantId
. Upewnij się, tenantId
że nie masz dodatkowego przecinka na końcu ostatniego wiersza, na przykład wiersza w poprzednim przykładzie lub w wyniku nieprawidłowego pliku JSON. Podczas wdrażania występuje 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 są używane w sekcji Tworzenie przepływu pracy .
W usłudze GitHub przejdź do repozytorium.
Wybierz pozycję Ustawienia > Wpisy tajne i zmienne > Akcje > Nowy wpis tajny repozytorium.
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
.Utwórz kolejny wpis tajny o nazwie
AZURE_RG
. Dodaj nazwę grupy zasobów do pola wartości wpisu tajnego (exampleRG
).Utwórz kolejny wpis tajny o nazwie
AZURE_SUBSCRIPTION
. Dodaj identyfikator subskrypcji do pola wartości wpisu tajnego (na przykład:aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
).
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@2023-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:
W repozytorium GitHub wybierz pozycję Akcje z górnego menu.
Wybierz pozycję Nowy przepływ pracy.
Wybierz opcję Skonfiguruj przepływ pracy samodzielnie.
Zmień nazwę pliku przepływu pracy, jeśli wolisz inną nazwę niż main.yml. Na przykład: deployBicepFile.yml.
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.
Wybierz pozycję Zatwierdź zmiany.
Wybierz pozycję Zatwierdź bezpośrednio w gałęzi głównej.
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
- Wybierz kartę Akcje . Zostanie wyświetlony przepływ pracy Tworzenie deployBicepFile.yml . Uruchomienie przepływu pracy trwa od 1 do 2 minut.
- Wybierz przepływ pracy, aby go otworzyć, a następnie sprawdź, czy element
Status
toSuccess
.
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