Rychlý start: Nasazení souborů Bicep pomocí GitHub Actions
GitHub Actions je sada funkcí v GitHubu pro automatizaci pracovních postupů vývoje softwaru. V tomto rychlém startu použijete nasazení GitHub Actions pro Azure Resource Manager k automatizaci nasazení souboru Bicep do Azure.
Poskytuje krátký úvod k akcím GitHubu a souborům Bicep. Pokud chcete podrobnější kroky k nastavení akcí a projektu GitHubu, přečtěte si téma Nasazení prostředků Azure pomocí Bicep a GitHub Actions.
Požadavky
- Účet Azure s aktivním předplatným. Vytvoření účtu zdarma
- Účet GitHub. Pokud ho nemáte, zdarma se zaregistrujte.
- Úložiště GitHub pro ukládání souborů Bicep a souborů pracovního postupu. Pokud ho chcete vytvořit, přečtěte si téma Vytvoření nového úložiště.
Vytvořit skupinu zdrojů
Vytvořte skupinu prostředků. Později v tomto rychlém startu nasadíte soubor Bicep do této skupiny prostředků.
az group create -n exampleRG -l westus
Generování přihlašovacích údajů pro nasazení
GitHub Actions běží pod identitou. Pomocí příkazu az ad sp create-for-rbac vytvořte instanční objekt pro identitu. Udělte instančnímu objektu roli přispěvatele pro skupinu prostředků vytvořenou v předchozí relaci, aby akce GitHubu s identitou vytvořila prostředky v této skupině prostředků. Doporučuje se udělit minimální požadovaný přístup.
az ad sp create-for-rbac --name {app-name} --role contributor --scopes /subscriptions/{subscription-id}/resourceGroups/exampleRG --json-auth
Zástupný symbol {app-name}
nahraďte názvem vaší aplikace. Nahraďte {subscription-id}
ID předplatného.
Výstupem je objekt JSON s přihlašovacími údaji pro přiřazení role, které poskytují přístup k vaší aplikaci App Service podobně jako v následujícím výstupu.
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
...
}
Zkopírujte tento objekt JSON pro pozdější použití. Budete potřebovat jenom oddíly s clientId
hodnotou , clientSecret
subscriptionId
a tenantId
hodnotami. Ujistěte se, že na konci posledního řádku nemáte čárku navíc, tenantId
například řádek v předchozím příkladu, jinak výsledkem bude neplatný soubor JSON. Během nasazení se zobrazí chyba s informací, že přihlášení selhalo s chybou: Obsah není platný objekt JSON. Pečlivě zkontrolujte, jestli je správný typ ověřování.
Konfigurace tajných kódů GitHubu
Vytvořte tajné kódy pro přihlašovací údaje Azure, skupinu prostředků a předplatná. Tyto tajné kódy použijete v části Vytvořit pracovní postup .
Na GitHubu přejděte do svého úložiště.
Vyberte Nastavení > tajných kódů a proměnných > Akce > Nový tajný klíč úložiště.
Celý výstup JSON z příkazu Azure CLI vložte do pole hodnoty tajného kódu. Pojmenujte tajný kód
AZURE_CREDENTIALS
.Vytvořte další tajný kód s názvem
AZURE_RG
. Přidejte název skupiny prostředků do pole hodnoty tajného kódu (exampleRG
).Vytvořte další tajný kód s názvem
AZURE_SUBSCRIPTION
. Přidejte ID předplatného do pole hodnoty tajného kódu (příklad:aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
).
Přidání souboru Bicep
Přidejte soubor Bicep do úložiště GitHub. Následující soubor Bicep vytvoří účet úložiště:
@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
Soubor Bicep vyžaduje jeden parametr s názvem storagePrefix se 3 až 11 znaky.
Soubor můžete umístit kamkoli do úložiště. Ukázka pracovního postupu v další části předpokládá, že soubor Bicep má název main.bicep a je uložený v kořenovém adresáři vašeho úložiště.
Vytvoření pracovního postupu
Pracovní postup definuje kroky, které se mají provést při aktivaci. Jedná se o soubor YAML (.yml) v cestě k vašemu úložišti .github/workflows/ . Přípona souboru pracovního postupu může být buď .yml nebo .yaml.
Pokud chcete vytvořit pracovní postup, proveďte následující kroky:
V úložišti GitHub vyberte v horní nabídce akce .
Vyberte Nový pracovní postup.
Vyberte nastavení pracovního postupu sami.
Pokud dáváte přednost jinému názvu než main.yml, přejmenujte soubor pracovního postupu. Příklad: deployBicepFile.yml.
Obsah souboru yml nahraďte následujícím kódem:
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
Nahraďte
mystore
předponou názvu vlastního účtu úložiště.Poznámka:
Soubor parametrů formátu JSON můžete místo toho zadat v akci nasazení ARM (příklad:
.azuredeploy.parameters.json
).První část souboru pracovního postupu obsahuje:
- name: Název pracovního postupu.
- on: Název událostí GitHubu, které aktivují pracovní postup. Pracovní postup se aktivuje, když v hlavní větvi dojde k události push.
Vyberte Potvrdit změny.
Vyberte Potvrdit přímo do hlavní větve.
Vyberte Potvrdit nový soubor (nebo Potvrdit změny).
Aktualizace souboru pracovního postupu nebo souboru Bicep aktivuje pracovní postup. Pracovní postup se spustí hned po potvrzení změn.
Kontrola stavu pracovního postupu
- Vyberte kartu Akce. Zobrazí se seznam pracovních postupů vytvoření deployBicepFile.yml. Spuštění pracovního postupu trvá 1 až 2 minuty.
- Vyberte pracovní postup, který chcete otevřít, a ověřte, zda je
Success
.Status
Vyčištění prostředků
Pokud už skupinu prostředků a úložiště nepotřebujete, vyčistěte prostředky, které jste nasadili, odstraněním skupiny prostředků a úložiště GitHub.
az group delete --name exampleRG