Nasazení vlastního kontejneru do App Service pomocí funkce GitHub Actions
GitHub Actions poskytuje flexibilitu při vytváření automatizovaného pracovního postupu vývoje softwaru. Pomocí akce Nasazení webu Azure můžete automatizovat pracovní postup nasazení vlastních kontejnerů do App Service pomocí GitHub Actions.
Pracovní postup je definován souborem YAML (.yml) v cestě /.github/workflows/
ve vašem úložišti. Tato definice obsahuje různé kroky a parametry, které jsou v pracovním postupu.
Pro pracovní postup Azure App Service kontejneru má soubor tři oddíly:
Sekce | Úlohy |
---|---|
Authentication | 1. Načtení instančního objektu nebo profilu publikování 2. Vytvořte tajný kód GitHubu. |
Sestavení | 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. Bezplatné vytvoření účtu
- Účet GitHub. Pokud ho nemáte, zaregistrujte se zdarma. K nasazení do Azure App Service potřebujete kód v úložišti GitHub.
- Funkční registr kontejneru a Azure App Service aplikace pro kontejnery. Tento příklad používá Azure Container Registry. Nezapomeňte dokončit úplné nasazení do 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, abyste měli funkční příklad.
Vygenerování přihlašovacích údajů pro nasazení
Doporučeným způsobem ověřování pomocí služby Aplikace Azure Services pro GitHub Actions je profil publikování. Můžete se také ověřit pomocí instančního objektu nebo Open ID Connect, ale proces vyžaduje další kroky.
Uložte přihlašovací údaje profilu publikování nebo instanční objekt jako tajný klíč GitHubu pro ověření v Azure. K tajnému kódu budete přistupovat v rámci pracovního postupu.
Profil publikování je přihlašovací údaje na úrovni aplikace. Nastavte profil publikování jako tajný kód GitHubu.
Přejděte do služby App Service v Azure Portal.
Na stránce Přehled vyberte Získat profil publikování.
Poznámka
Od října 2020 budou webové aplikace pro Linux před stažením souboru potřebovat nastavení
WEBSITE_WEBDEPLOY_USE_SCM
aplikace nastavené natrue
hodnotu . Tento požadavek bude v budoucnu odebrán. Informace o konfiguraci běžných nastavení webové aplikace najdete v tématu Konfigurace App Service aplikace v Azure Portal.Stažený soubor uložte. Obsah souboru použijete k vytvoření tajného kódu GitHubu.
Konfigurace tajného klíče GitHubu pro ověřování
V GitHubu procházejte úložiště. Vyberte Nastavení > Tajné klíče zabezpečení > a proměnné > Akce > Nový tajný klíč ú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žijete akci nasazení webové aplikace Azure. Příklad:
- uses: azure/webapps-deploy@v2
with:
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
Konfigurace tajných kódů GitHubu pro registr
Definujte tajné kódy, které se mají použít s akcí Přihlášení k Dockeru. Příklad v tomto dokumentu používá Azure Container Registry pro registr kontejneru.
Přejděte do kontejneru v Azure Portal nebo Dockeru a zkopírujte uživatelské jméno a heslo. Uživatelské jméno a heslo Azure Container Registry najdete v Azure Portal v části Nastavení>Přístupové klíče pro váš registr.
Definujte nový tajný klíč pro uživatelské jméno registru s názvem
REGISTRY_USERNAME
.Definujte nový tajný klíč pro heslo registru s názvem
REGISTRY_PASSWORD
.
Sestavení image kontejneru
Následující příklad ukazuje část pracovního postupu, který sestaví Node.JS image Dockeru. Přihlaste se k privátnímu registru kontejneru pomocí Přihlášení Dockeru . Tento příklad používá 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 }}
Přihlášení do 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. V příkladu se předpokládá, že na kořenové úrovni registru existuje soubor Dockerfile.
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 }}
Nasazení do kontejneru App Service
Pokud chcete nasadit image do vlastního kontejneru v App Service, použijte azure/webapps-deploy@v2
akci . Tato akce má sedm parametrů:
Parametr | Vysvětlení |
---|---|
název aplikace | (Povinné) Název aplikace App Service |
publikování profilu | (Volitelné) Platí pro Web Apps (Windows a Linux) a Web App Containers(linux). Scénář s více kontejnery se nepodporuje. Publikování obsahu souboru profilu (*.publishsettings) s tajnými kódy nasazení webu |
název slotu | (Volitelné) Zadejte existující slot kromě produkčního slotu. |
Balíček | (Volitelné) Platí jenom pro webovou aplikaci: Cesta k balíčku nebo složce. *.zip, *.war, *.jar nebo složku pro nasazení |
Obrázky | (Povinné) Platí jenom pro službu Web App Containers: Zadejte plně kvalifikované názvy imagí kontejneru. Například "myregistry.azurecr.io/nginx:latest" nebo "python:3.7.2-alpine/". U vícekontejnerových aplikací je možné zadat více názvů imagí kontejneru (oddělené více řádky). |
konfigurační soubor | (Volitelné) Platí pouze pro službu Web App Containers: Cesta k souboru Docker-Compose. Měla by jít o plně kvalifikovanou cestu nebo relativní k výchozímu pracovnímu adresáři. Vyžaduje se pro vícekontejnerové aplikace. |
příkaz 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 }}'
Další kroky
Naši sadu akcí seskupených do různých úložišť najdete na GitHubu. Každá z nich obsahuje dokumentaci a příklady, které vám pomůžou používat GitHub pro CI/CD a nasazovat aplikace do Azure.