Cvičení – sestavení image aplikace
V této lekci vytvoříte pracovní kanál GitHub Actions tak, že sestavíte image aplikace a nasdílíte ji do služby Azure Container Registry.
Na následujícím obrázku je kanál CI/CD, který jste navrhli:
V tomto cvičení vytvoříte přípravný kanál provedením následujících kroků:
- Vytvořte pracovní postup GitHub Actions.
on push
Vytvořte trigger.- Sestavte a odešlete image aplikace.
- Nastavte tajné kódy.
- Spusťte tuto úlohu.
Vytvoření pracovního postupu GitHub Actions
Pracovní postupy GitHubu jsou rozdělené na úlohy a úlohy se dělí do kroků. Každý krok může mít více příkazů a ke spuštění použít více akcí.
Pokud chcete začít vytvářet kanál, přejděte na fork ukázkového úložiště na webu GitHub.
Vyberte kartu Akce.
Vyberte odkaz pro nastavení pracovního postupu sami.
V tomto okamžiku je kanál jen prázdný soubor v adresáři .github/workflows ve vašem úložišti. GitHub nabízí předem připravené komponenty, které potřebujete k sestavení většiny kanálů. Začněte tím, že zkopírujete a vložíte následující kód do podokna Upravit nový soubor :
# This is a basic workflow to help you get started with Actions name: CI # Controls when the action will run. Triggers the workflow on push or pull request # events but only for the main branch on: push: branches: [ main ] pull_request: branches: [ main ] # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" build: # The type of runner that the job will run on runs-on: ubuntu-latest # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v2 # Runs a single command using the runners shell - name: Run a one-line script run: echo Hello, world! # Runs a set of commands using the runners shell - name: Run a multi-line script run: | echo Add other actions to build, echo test, and deploy your project.
Nad podoknem Edit new file (Upravit nový soubor) přejmenujte soubor main.yml na build-staging.yml.
name
Změňte klíč zCI
naBuild and push the latest build to staging
.# This is a basic workflow to help you get started with Actions name: Build and push the latest build to staging
Úprava triggeru zapnuto
Základní šablona pracovního postupu se dodává se dvěma triggery:
- Jakékoli nasdílení změn do hlavní větve
- Jakákoli žádost o přijetí změn v hlavní větvi
Kanál nemusíte spouštět na žádosti o přijetí změn, takže ho upravte tak, aby se zachovala jenom aktivační událost nabízená oznámení změnou triggerů v klíči on
. Odeberte druhý trigger a ponechte pouze značky push
.
name: Build and push the latest build to staging
on:
push:
branches: [ main ]
Konfigurace kroku rezervace
Dále začněte pracovat na krocích úlohy. V tomto procesu implementujete úlohy sestavení i úlohy nasazení v diagramu návrhu kanálu.
V části
jobs
Přejmenujtebuild
klíč nabuild_push_image
.Chcete, aby tento pracovní postup běžel na Ubuntu 20.04, takže změňte
runs-on
klíč zubuntu-latest
naubuntu-20.04
.Odstraňte poslední dva příkazy v klíči
steps
, což jsou jenom příklady šablony.Soubor bez komentářů by měl vypadat jako v tomto příkladu:
name: Build and push the latest build to staging on: push: branches: [ main ] jobs: build_push_image: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2
Teď máte krok, který tuto checkout
akci používá. Tato akce naklonuje úložiště do prostředí úloh. Tento krok odpovídá první akci klonování úložiště v diagramu návrhu kanálu.
Přidání kroků Dockeru
Dále přidejte akce pro sestavení image Dockeru. Využití těchto akcí můžete upravit. V tomto příkladu se používá jenom několik dostupných parametrů. Další informace najdete v dokumentaci build-push-action na GitHubu.
Na kartě Marketplace na pravém panelu vyhledejte přihlášení dockeru a vyberte první výsledek publikovaný dockerem.
Poznámka:
Akce Dockeru před verzí 2 měly integrovaný tok přihlášení, ale ve verzích 2 a novějších jsou tyto akce oddělené, takže pro správné nastavení pracovního postupu potřebujete dvě akce.
V části Instalace vyberte ikonu kopírování a zkopírujte YAML využití.
Vložte zkopírovaný YAML pod
actions/checkout@v2
akci.Důležité
Při použití YAML buďte opatrní při použití odsazení. Klíč
name
musí být zarovnaný s předchozím klíčemuses
.Do objektu
registry
,username
apassword
klíčů přidejte následující hodnoty:registry
:${{ secrets.ACR_NAME }}
username
:${{ secrets.ACR_LOGIN }}
password
:${{ secrets.ACR_PASSWORD }}
Odstraňte ostatní klíče, protože se v tomto cvičení nepoužívají.
Na pravém panelu pod Marketplace vyhledejte image dockeru a nasdílejte je a vyberte první výsledek publikovaný dockerem.
V části Instalace vyberte ikonu kopírování a zkopírujte YAML využití.
Vložte zkopírovaný YAML pod poslední klíč z dříve zkopírované
docker-login
akce.name
Přejmenujte klíč zBuild and push Docker images
naBuild and push staging images
.Do objektu
context
,push
atags
klíčů přidejte následující hodnoty:context
:.
push
:true
tags
:${{secrets.ACR_NAME}}/contoso-website:latest
Odstraňte ostatní klíče, protože se v tomto cvičení nepoužívají.
Přidejte další akci volanou
docker/setup-buildx-action
mezi akci rezervace a přihlašovací akci a nastavte modul sestavení pro Docker, který se má použít. Zkopírujte následující fragment kódu a vložte ho mezi akcemicheckout
.login
- name: Set up Buildx uses: docker/setup-buildx-action@v3.0.0
Konečný soubor bez komentářů by měl vypadat jako v následujícím příkladu:
name: Build and push the latest build to staging on: push: branches: [ main ] jobs: build_push_image: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - name: Set up Buildx uses: docker/setup-buildx-action@v3.0.0 - name: Docker Login uses: docker/login-action@v3.0.0 with: registry: ${{ secrets.ACR_NAME }} username: ${{ secrets.ACR_LOGIN }} password: ${{ secrets.ACR_PASSWORD }} - name: Build and push staging images uses: docker/build-push-action@v5.0.0 with: context: . push: true tags: ${{secrets.ACR_NAME}}/contoso-website:latest
Potvrzení změn
Pokud chcete změny potvrdit, vyberte tlačítko Potvrdit změny v pravém horním rohu. Na obrazovce Potvrdit změny zadejte popis potvrzení a pak vyberte Potvrdit změny.
Výběrem možnosti Potvrdit změny se aktivuje nové sestavení, ale toto sestavení selže, protože jste ještě nenastavili tajné kódy.
Nastavení tajných kódů
Pokud chcete nastavit tajné kódy, vyberte na stránce úložiště GitHub kartu Nastavení a pak v nabídce vlevo vyberte Akce tajných kódů a proměnných>. Definujte následující tajné kódy, které váš pracovní postup používá:
ACR_NAME
ACR_Name
: Hodnota vrácená instalačním skriptemACR_LOGIN
ACR Login Username
: Hodnota vrácená instalačním skriptemACR_PASSWORD
ACR Login Password
: Hodnota vrácená instalačním skriptemRESOURCE_GROUP
Resource Group Name
: Hodnota vrácená instalačním skriptemCLUSTER_NAME
: contoso-video
Definování jednotlivých tajných kódů:
- Vyberte Nový tajný klíč úložiště.
- Do pole Název zadejte název tajného kódu z předchozího seznamu.
- Jako tajný klíč zadejte hodnotu, kterou jste uložili z instalačního skriptu, nebo spusťte dotaz Cloud Shellu, abyste získali hodnotu.
- Vyberte Add secret (Přidat tajný kód).
Spuštění volitelných dotazů pro získání hodnot tajných kódů
Pokud nemáte vrácené hodnoty instalačního skriptu, můžete v Azure Cloud Shellu spustit následující příkazy, abyste získali tyto informace:
ACR_NAME
:az acr list --query "[?contains(resourceGroup, 'mslearn-gh-pipelines')].loginServer" -o table
ACR_LOGIN
:az acr credential show --name <ACR_NAME> --query "username" -o table
ACR_PASSWORD
:az acr credential show --name <ACR_NAME> --query "passwords[0].value" -o table
RESOURCE_GROUP
:az aks list -o tsv --query "[?name=='contoso-video'].resourceGroup"
Spuštění úlohy
Vyberte kartu Akce.
Vyberte v seznamu pouze spuštění, neúspěšnou build-staging.yml úlohu.
V pravém horním rohu vyberte Znovu spustit všechny úlohy> a na obrazovce Znovu spustit všechny úlohy vyberte Znovu spustit úlohy.
Po dokončení sestavení spusťte
az acr repository list --name <ACR_NAME> -o table
v Cloud Shellucontoso-website
, abyste potvrdili, že se ve výsledcích zobrazí úložiště Container Registry.
Pokračujte k další lekci a sestavte produkční pracovní postup.