Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Pomocí GitHub Actions můžete vytvořit automatizovaný pracovní postup vývoje softwaru. Pomocí akce Nasazení webu Azure můžete automatizovat pracovní postup a nasadit vlastní kontejnery do služby Azure App Service.
Pracovní postup je definován souborem YAML (.yml) v /.github/workflows/ cestě v úložišti. Tato definice obsahuje různé kroky a parametry, které jsou v pracovním postupu.
Pro pracovní postup kontejneru služby App Service má soubor tři části:
| Sekce | Úlohy |
|---|---|
| Authentication | 1. Načtení instančního objektu nebo profilu publikování 2. Vytvořte tajný kód GitHubu. |
| Sestavit | 1. Vytvořte prostředí. 2. Sestavte image kontejneru. |
| Nasazení | 1. Nasaďte image kontejneru. |
Požadavky
- Účet Azure s aktivním předplatným. Vytvořte si bezplatný účet.
- Účet GitHub. Pokud ho nemáte, zdarma se zaregistrujte. Abyste mohli nasadit službu Aplikace Azure Service, musíte mít kód v úložišti GitHub.
- Funkční registr kontejnerů a aplikace služby Aplikace Azure Service pro kontejnery. V tomto příkladu se používá Azure Container Registry. Nezapomeňte dokončit úplné nasazení do služby Azure App Service pro kontejnery. Na rozdíl od běžných webových aplikací nemají webové aplikace pro kontejnery výchozí cílovou stránku. Publikujte kontejner tak, aby měl funkční příklad.
- Proveďte tyto úlohy: Zjistěte, jak vytvořit kontejnerizovanou Node.js aplikaci pomocí Dockeru, odeslat image kontejneru do registru a pak ji nasadit do služby Azure App Service.
Generování přihlašovacích údajů pro nasazení
Doporučujeme ověřit se pomocí Azure App Services pro GitHub Actions pomocí OpenID Connect. Můžete se také ověřit pomocí principálu služby nebo publikačního profilu.
Chcete-li provést ověření pomocí Azure, uložte přihlašovací údaje profilu publikování nebo service principalu jako tajný klíč GitHubu. K tajnému kódu v rámci pracovního postupu přistupujete.
Profil publikování je přihlašovací údaje na úrovni aplikace. Nastavte svůj profil publikování jako tajný klíč GitHubu.
Na webu Azure Portal přejděte do služby App Service.
V podokně Přehled vyberte Získat profil publikování.
Poznámka:
Od října 2020 musí uživatelé před
WEBSITE_WEBDEPLOY_USE_SCMnastavit nastavení aplikace pro webové aplikacetruepro Linux. Informace o konfiguraci běžných nastavení webové aplikace najdete v části Konfigurace aplikace App Service na webu Azure Portal.Uložte stažený soubor. Obsah souboru použijete k vytvoření tajného kódu GitHubu.
Konfigurace tajného kódu GitHubu pro ověřování
Na GitHubu přejděte do úložiště. Vyberte Nastavení>Zabezpečení>Tajné informace a proměnné>Akce>Nové tajemství úložiště.
Pokud chcete použít přihlašovací údaje na úrovni aplikace, vložte obsah staženého souboru profilu publikování do pole hodnoty tajného kódu. Pojmenujte tajný kód AZURE_WEBAPP_PUBLISH_PROFILE.
Při konfiguraci pracovního postupu GitHubu AZURE_WEBAPP_PUBLISH_PROFILE použijte tajný kód v akci nasazení Azure Web Appu. Příklad:
- uses: azure/webapps-deploy@v2
with:
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
Konfigurace tajných kódů GitHubu pro váš registr
Definujte tajné kódy, které se mají použít s akcí Přihlášení k Dockeru. Příklad v tomto článku používá pro registr kontejneru službu Azure Container Registry.
Přejděte do kontejneru na webu Azure Portal nebo Dockeru a zkopírujte uživatelské jméno a heslo. Uživatelské jméno a heslo služby Azure Container Registry najdete na webu Azure Portal v části Přístupové klíče nastavení>pro váš registr.
Definujte nový tajný kód pro uživatelské jméno registru s názvem
REGISTRY_USERNAME.Definujte nový tajný klíč pro heslo registru s názvem
REGISTRY_PASSWORD.
Sestavit obraz kontejneru
Následující příklad ukazuje část pracovního postupu, která vytvoří image Node.js Dockeru. Přihlaste se k privátnímu registru kontejneru pomocí dockeru Login . Tento příklad používá Službu Azure Container Registry, ale stejná akce funguje i pro ostatní registry.
name: Linux Container Node Workflow
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
K přihlášení k několika registrům kontejnerů můžete použít také přihlášení Dockeru najednou. Tento příklad obsahuje dva nové tajné kódy GitHubu pro ověřování pomocí docker.io. Příklad předpokládá, že existuje soubor Dockerfile na kořenové úrovni registru.
name: Linux Container Node Workflow
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- uses: azure/docker-login@v1
with:
login-server: index.docker.io
username: ${{ secrets.DOCKERIO_USERNAME }}
password: ${{ secrets.DOCKERIO_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
Následující příklad ukazuje část pracovního postupu, který sestaví image Dockeru pro Windows. Přihlaste se k privátnímu registru kontejneru pomocí dockeru Login . Tento příklad používá Službu Azure Container Registry, ale stejná akce funguje i pro ostatní registry.
name: Windows Container Workflow
on: [push]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
Přihlášení k Dockeru můžete použít také k přihlášení k více registrům kontejnerů najednou. Tento příklad obsahuje dva nové tajné kódy GitHubu pro ověřování pomocí docker.io. Příklad předpokládá, že existuje soubor Dockerfile na kořenové úrovni registru.
name: Windows Container Workflow
on: [push]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- uses: azure/docker-login@v1
with:
login-server: index.docker.io
username: ${{ secrets.DOCKERIO_USERNAME }}
password: ${{ secrets.DOCKERIO_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
Nasazení do kontejneru služby App Service
Pokud chcete nasadit image do vlastního kontejneru ve službě App Service, použijte azure/webapps-deploy@v2 tuto akci. Tato akce má sedm parametrů:
| Parametr | Vysvětlení |
|---|---|
app-name |
(Povinné) Název aplikace App Service |
publish-profile |
(Volitelné) Používá se s webovými aplikacemi (Windows a Linux) a kontejnery webových aplikací (Linux). Scénář s více kontejnery se nepodporuje. Publikujte obsah souboru profilu \*.publishsettings s tajnými klíči Web Deploy. |
slot-name |
(Optional) Zadejte existující slot jiný než produkční slot. |
package |
(Volitelné) Používá se jenom u webových aplikací: Cesta k balíčku nebo složce.
\*.zip, \*.war, \*.jar nebo složku, která se má nasadit. |
images |
(Povinné) Používá se jenom s kontejnery webových aplikací: Zadejte plně kvalifikovaný název image kontejneru. Například myregistry.azurecr.io/nginx:latest nebo python:3.12.12-alpine/. Pro vícekontenerovou aplikaci lze zadat více názvů obrazů kontejnerů (oddělené víceřádkově). |
configuration-file |
(Volitelné) Používá se jenom s kontejnery webových aplikací: Cesta k souboru Docker Compose. Měla by být plně kvalifikovaná cesta nebo relativní vzhledem k výchozímu pracovnímu adresáři. Vyžaduje se pro vícekontenerové aplikace. |
startup-command |
(Volitelné) Zadejte spouštěcí příkaz. Například: dotnet run nebo dotnet filename.dll. |
name: Linux Container Node Workflow
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
- uses: azure/webapps-deploy@v2
with:
app-name: 'myapp'
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
images: 'mycontainer.azurecr.io/myapp:${{ github.sha }}'
name: Windows_Container_Workflow
on: [push]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- uses: azure/docker-login@v1
with:
login-server: mycontainer.azurecr.io
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
- run: |
docker build . -t mycontainer.azurecr.io/myapp:${{ github.sha }}
docker push mycontainer.azurecr.io/myapp:${{ github.sha }}
- uses: azure/webapps-deploy@v2
with:
app-name: 'myapp'
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
images: 'mycontainer.azurecr.io/myapp:${{ github.sha }}'
Související obsah
Naši sadu akcí seskupených do různých úložišť najdete na GitHubu. Každé úložiště obsahuje dokumentaci a příklady, které vám pomůžou používat GitHub pro CI/CD a nasazovat aplikace do Azure.