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 pracovní postup automatizovat a nasadit vlastní kontejnery do služby App Service pomocí GitHub Actions.
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 Aplikace Azure 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ření účtu zdarma
- Úč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 Aplikace Azure 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.
Generování přihlašovacích údajů pro nasazení
Doporučený způsob ověřování pomocí služby Aplikace Azure Services pro GitHub Actions je s profilem 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 v rámci pracovního postupu se dostanete.
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.
Na stránce Přehled vyberte Získat profil publikování.
Poznámka:
Od října 2020 budou webové aplikace pro Linux potřebovat nastavení
WEBSITE_WEBDEPLOY_USE_SCM
aplikace nastavené natrue
před stažením souboru. Tento požadavek bude v budoucnu odebrán. Informace o konfiguraci běžných nastavení webové aplikace najdete v tématu 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í > tajných kódů zabezpečení > a proměnných > 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í 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 dokumentu 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
.
Sestavení image kontejneru
Následující příklad ukazuje část pracovního postupu, která sestaví image Node.js Dockeru. K přihlášení k privátnímu registru kontejneru použijte Docker 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 }}
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: 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 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í |
---|---|
název aplikace | (Povinné) Název aplikace App Service |
publish-profile | (Volitelné) Platí pro Web Apps (Windows a Linux) a Web App Containers(linux). Scénář s více kontejnery se nepodporuje. Obsah souboru profilu publikování (*.publishsettings) s tajnými kódy nasazení webu |
název slotu | (Volitelné) Zadejte jiný než produkční slot. |
balíček | (Volitelné) Platí jenom pro webovou aplikaci: Cesta k balíčku nebo složce. *.zip, *.war, *.jar nebo složku pro nasazení |
obrazy | (Povinné) Platí jenom pro Web App Containers: Zadejte plně kvalifikovaný název imagí kontejnerů. Například myregistry.azurecr.io/nginx:latest nebo python:3.7.2-alpine/. Pro vícekontenerovou aplikaci je možné zadat více názvů imagí kontejneru (oddělených více řádků). |
konfigurační soubor | (Volitelné) Platí jenom pro Web App Containers: 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ř. 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.