Cvičení – sestavení image aplikace

Dokončeno

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:

Diagram that shows the procession from triggers, through three build steps, to the deploy steps in a pipeline.

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.

  1. Vyberte kartu Akce.

  2. Vyberte odkaz pro nastavení pracovního postupu sami.

    Screenshot that shows the Get started with GitHub Actions page on the GitHub website.

    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.
    
  3. Nad podoknem Edit new file (Upravit nový soubor) přejmenujte soubor main.yml na build-staging.yml.

    Screenshot that shows an example file being edited in the Edit new file pane on the GitHub website.

  4. name Změňte klíč z CI na Build 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.

  1. V části jobsPřejmenujte build klíč na build_push_image.

  2. Chcete, aby tento pracovní postup běžel na Ubuntu 20.04, takže změňte runs-on klíč z ubuntu-latest na ubuntu-20.04.

  3. 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.

  1. Na kartě Marketplace na pravém panelu vyhledejte přihlášení dockeru a vyberte první výsledek publikovaný dockerem.

    Screenshot showing the search results listing Docker Login.

    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.

  2. V části Instalace vyberte ikonu kopírování a zkopírujte YAML využití.

    Screenshot showing the copy function and selecting the Docker Login task.

  3. 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íčem uses.

  4. Do objektu registry, usernamea password klíčů přidejte následující hodnoty:

    • registry: ${{ secrets.ACR_NAME }}
    • username: ${{ secrets.ACR_LOGIN }}
    • password: ${{ secrets.ACR_PASSWORD }}
  5. Odstraňte ostatní klíče, protože se v tomto cvičení nepoužívají.

  6. Na pravém panelu pod Marketplace vyhledejte image dockeru a nasdílejte je a vyberte první výsledek publikovaný dockerem.

    Screenshot that shows the search results that list Build and push Docker images.

  7. V části Instalace vyberte ikonu kopírování a zkopírujte YAML využití.

  8. Vložte zkopírovaný YAML pod poslední klíč z dříve zkopírované docker-login akce.

  9. name Přejmenujte klíč z Build and push Docker images na Build and push staging images.

  10. Do objektu context, pusha tags klíčů přidejte následující hodnoty:

    • context: .
    • push: true
    • tags: ${{secrets.ACR_NAME}}/contoso-website:latest
  11. Odstraňte ostatní klíče, protože se v tomto cvičení nepoužívají.

  12. 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.

Screenshot that shows the Commit changes button in the Commit changes pane.

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_NAMEACR_Name: Hodnota vrácená instalačním skriptem
  • ACR_LOGINACR Login Username: Hodnota vrácená instalačním skriptem
  • ACR_PASSWORDACR Login Password: Hodnota vrácená instalačním skriptem
  • RESOURCE_GROUPResource Group Name: Hodnota vrácená instalačním skriptem
  • CLUSTER_NAME: contoso-video

Definování jednotlivých tajných kódů:

  1. Vyberte Nový tajný klíč úložiště.
  2. Do pole Název zadejte název tajného kódu z předchozího seznamu.
  3. Jako tajný klíč zadejte hodnotu, kterou jste uložili z instalačního skriptu, nebo spusťte dotaz Cloud Shellu, abyste získali hodnotu.
  4. 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

  1. Vyberte kartu Akce.

  2. Vyberte v seznamu pouze spuštění, neúspěšnou build-staging.yml úlohu.

  3. V pravém horním rohu vyberte Znovu spustit všechny úlohy> a na obrazovce Znovu spustit všechny úlohy vyberte Znovu spustit úlohy.

    Screenshot that shows the Re-run jobs and Re-run all jobs buttons.

  4. 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.