Principy kompletních nasazení
Pracovní postupy GitHub Actions jsou flexibilní nástroje, které můžete nakonfigurovat mnoha různými způsoby tak, aby vyhovovaly vašim potřebám. V této lekci se dozvíte, jak pomocí pracovních postupů nasadit celé řešení, včetně konfigurace infrastruktury Azure a provádět další operace nasazení.
Kolik pracovních postupů?
V některých organizacích se tým, který spravuje prostředí Azure, liší od týmu, který vyvíjí kód, který běží v prostředí. V těchto situacích je často lákavé vytvořit více pracovních postupů, které vlastní tým, který je zodpovědný za konkrétní oblast. Můžete například vytvořit jeden pracovní postup pro nasazení kódu Bicep, který nasadí prostředky Azure vašeho webu, a další pracovní postup, který nasadí webovou aplikaci.
I když vám tento přístup může poskytnout určitou flexibilitu při správě pracovních postupů, může být obtížné udržovat všechno synchronizované. Předpokládejme například, že váš tým webu potřebuje nové nastavení v aplikaci Aplikace Azure Service, aby bylo možné povolit funkci, kterou sestavuje. Pracovní postup nasazení aplikace nejde spustit, dokud se pracovní postup nasazení infrastruktury úspěšně nedokončí. Může se také komplikovat odesílání dat, jako jsou názvy prostředků Azure vytvořené pracovním postupem infrastruktury mezi pracovními postupy.
Místo toho je často lepší vytvořit jeden pracovní postup, který nasadí všechno potřebné pro vaše řešení, i když jednotlivé týmy nebo různí lidé spravují komponenty. Ke koordinaci práce můžete použít nástroje, jako je Git a GitHub. Po přidání nové funkce můžete pomocí větve provést potřebné změny v souboru Bicep. Jakmile je změna připravená k integraci a vydání, jeden pracovní postup provede všechny kroky potřebné k sestavení a nasazení řešení, což snižuje pravděpodobnost, že dojde k výpadku synchronizace.
Tip
Když vytváříte kód pro vaše řešení, budete ho pravděpodobně muset nasadit často, abyste mohli otestovat, jak funguje. Možná zjistíte, že nasazení infrastruktury společně s kódem aplikace zpomalí a inhibuje průběh pracovního postupu.
Pokud jste na této pozici, můžete zvážit zakázání nasazení infrastruktury pro vaše vývojové prostředí. K dosažení tohoto cíle můžete použít filtry cest, opakovaně použitelné pracovní postupy a podmínky. Pro ostatní prostředí byste ale měli nechat úplnou posloupnost nasazení nedotčenou.
Řídicí rovina a rovina dat
Mnoho prostředků Azure poskytuje pro přístup dvě různé roviny . Řídicí rovina nasadí a nakonfiguruje prostředek. Rovina dat umožňuje přístup k funkcím prostředku.
Při vytváření a nasazování souborů Bicep komunikujete s řídicí rovinou. Řídicí rovina v Azure je Azure Resource Manager. Pomocí Resource Manageru můžete definovat konfiguraci jednotlivých prostředků.
Pracovní postup ale často potřebuje udělat víc než jen interakci s řídicí rovinou. Můžete například potřebovat:
- Nahrajte objekt blob do účtu úložiště.
- Upravte schéma databáze.
- Volání rozhraní API do služby třetí strany
- Aktivace aktualizace modelu strojového učení
- Nasaďte web do aplikace Aplikace Azure Service.
- Nasaďte software na virtuální počítač.
- Zaregistrujte položku DNS u jiného poskytovatele.
Při zvažování komplexního pracovního postupu obvykle potřebujete nasadit prostředky Azure a pak provádět řadu operací s rovinami dat těchto prostředků. Někdy se tyto operace nazývají poslední míle nasazení, protože většinu nasazení provádíte pomocí řídicí roviny a zbývá jen malá část konfigurace.
Poznámka:
Některé prostředky nemají jasné rozdělení mezi řídicí rovinou a rovinou dat. Patří sem Azure Data Factory a Azure API Management. Obě služby podporují plně automatizovaná nasazení pomocí Bicep, ale vyžadují zvláštní aspekty. Odkazy na další informace najdete na stránce Souhrn na konci modulu.
Provádění operací roviny dat
Když vytvoříte pracovní postup nasazení, který komunikuje s rovinou dat vašich prostředků, můžete použít některý ze tří běžných přístupů:
- Skripty nasazení Resource Manageru
- Skripty pracovního postupu
- Akce workflowu
Skripty nasazení Resource Manageru se definují v souboru Bicep. Spouští skripty Bash nebo PowerShellu a můžou pracovat s příkazy Azure CLI a rutinami Azure PowerShellu. Vytvoříte spravovanou identitu pro skript nasazení, který se použije k ověření v Azure, a Azure automaticky zřídí a spravuje ostatní prostředky, které potřebuje ke spuštění skriptu nasazení.
Skripty nasazení jsou vhodné, když potřebujete spustit základní skript v rámci procesu nasazení, ale neposkytnou vám snadný přístup k dalším prvkům pracovního postupu.
Můžete také spustit vlastní logiku z pracovního postupu nasazení. GitHub Actions poskytuje bohatý ekosystém akcí pro běžné věci, které potřebujete udělat. Pokud nemůžete najít akci, která vyhovuje vašim potřebám, můžete ke spuštění vlastního kódu Bash nebo PowerShellu použít skript . Akce a skripty pracovního postupu se spouštějí z spouštěče pracovního postupu. Často potřebujete ověřit akci nebo skript v rovině dat služby, kterou používáte, a způsob, jakým to uděláte, závisí na službě.
Akce a skripty pracovního postupu poskytují flexibilitu a řízení. Umožňují také přístup k artefaktům pracovního postupu, o kterých se brzy dozvíte. V tomto modulu se zaměříme na akce pracovního postupu. Na stránce Souhrn na konci modulu odkazujeme na další informace o skriptech nasazení Resource Manageru.
Výstupy
Pracovní postup obvykle vytváří a konfiguruje prostředky Azure nasazením souboru Bicep. Následující části pracovního postupu pak pracují s rovinou dat těchto prostředků. Aby bylo možné s prostředky pracovat, vyžadují akce pracovního postupu a kroky informace o vytvořeném prostředku Azure.
Předpokládejme například, že máte soubor Bicep, který nasadí účet úložiště. Chcete, aby váš pracovní postup nasadil účet úložiště a pak nahrál některé objekty blob do kontejneru objektů blob v účtu úložiště. Krok pracovního postupu, který nahraje objekty blob, musí znát název účtu úložiště, ke kterému se má připojit, a název kontejneru objektů blob pro nahrání souboru.
Doporučujeme, aby se soubor Bicep rozhodl o názvech vašich prostředků Azure. K vytvoření názvů účtu úložiště a kontejneru objektů blob může použít parametry, proměnné nebo výrazy. Soubor Bicep pak může zveřejnit výstup, který poskytuje název jednotlivých prostředků. Pozdější kroky v pracovním postupu můžou číst výstupní hodnotu. Díky tomu nemusí definice pracovního postupu pevně zakódovat žádné názvy ani jiné informace, které by se mohly měnit mezi prostředími nebo být založené na pravidlech definovaných v souboru Bicep.
Pomocí GitHub Actions můžete rozšířit hodnoty výstupů pomocí proměnných pracovního postupu. Akce azure/arm-deploy
automaticky vytvoří proměnné pro každý výstup nasazení Bicep. Proměnné pracovního postupu můžete také vytvářet ručně ve skriptech. Odkazy na další informace najdete na stránce Souhrn na konci tohoto modulu.
Když přistupujete k proměnným vytvořeným v jiné úloze, musíte proměnnou publikovat, aby byla přístupná pro úlohu, která ji čte. Předpokládejme například, že vytvoříte úlohu, která nasadí soubor Bicep a potřebujete rozšířit appServiceAppName
výstup do pracovního postupu. Pomocí klíčového outputs
slova určíte, že appServiceAppName
proměnná pracovního postupu by měla být nastavena na hodnotu appServiceAppName
výstupní proměnné vytvořené v deploy
kroku:
job1:
runs-on: ubuntu-latest
outputs:
appServiceAppName: ${{ steps.deploy.outputs.appServiceAppName }}
steps:
- uses: actions/checkout@v3
- uses: azure/login@v1
name: Sign in to Azure
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- uses: azure/arm-deploy@v1
id: deploy
name: Deploy Bicep file
with:
failOnStdErr: false
deploymentName: ${{ github.run_number }}
resourceGroupName: Playground1
template: ./deploy/main.bicep
Potom v pozdější úloze vytvoříte explicitní závislost na úloze, která proměnnou vytvořila zahrnutím needs
klíčového slova, a odkazujete na proměnnou pomocí názvu publikované proměnné:
job2:
needs: job1
runs-on: ubuntu-latest
steps:
- run: |
echo "${{needs.job1.outputs.appServiceAppName}}"
Pomocí výstupů Bicep a proměnných pracovního postupu můžete vytvořit pracovní postup, který nasadí kód Bicep a pak provede různé akce s prostředky v rámci nasazení.