Sdílet prostřednictvím


Použití Azure Pipelines k vytváření a nabízení imagí kontejnerů do registrů

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

Tento článek vás provede nastavením a konfigurací pro použití Služby Azure Pipelines k sestavení a nasdílení image Dockeru do služby Azure Container Registry, Docker Hubu a služby Google Artifact Registry. Kromě toho podrobně popisuje použití zabezpečeného System.AccessToken ověřování v rámci kanálu.

Tento článek vás provede nastavením a konfigurací pro použití Služby Azure Pipelines k sestavení a nasdílení image Dockeru do Centra Dockeru a registru artefaktů Google. Kromě toho podrobně popisuje použití zabezpečeného System.AccessToken ověřování v rámci kanálu.

Dozvíte se, jak vytvořit kanál YAML pro sestavení a nasdílení image Dockeru do registru kontejneru. Úloha Docker@2 slouží k sestavení a nasdílení image do registru kontejneru.

Požadavky

  • Projekt Azure DevOps.
  • Registr kontejneru (Docker Hub, Google Artifact Registry nebo Azure Container Registry).
  • Úložiště GitHub se souborem Dockerfile. Pokud ho nemáte, můžete použít ukázkové úložiště v prohlížeči, přejít do ukázkového úložiště a pak ho forkovat do účtu GitHubu.
  • Docker. Pokud používáte agenta v místním prostředí, ujistěte se, že je nainstalovaný Docker a že je spuštěný modul Docker se zvýšenými oprávněními. Agenti hostovaní Microsoftem mají předinstalovaný Docker.
  • Projekt Azure DevOps.
  • Registr kontejneru (Docker Hub nebo Google Artifact Registry).
  • Úložiště GitHub se souborem Dockerfile. Pokud ho nemáte, můžete použít ukázkové úložiště v prohlížeči, přejít do ukázkového úložiště a pak ho forkovat do účtu GitHubu.
  • Docker. Pokud používáte agenta v místním prostředí, ujistěte se, že je nainstalovaný Docker a že je spuštěný modul Docker se zvýšenými oprávněními. Agenti hostovaní Microsoftem mají předinstalovaný Docker.

Vytvoření připojení služby Dockeru

Před nasdílením imagí kontejneru do registru je potřeba vytvořit připojení služby v Azure DevOps. Toto připojení služby ukládá přihlašovací údaje potřebné k bezpečnému ověření v registru kontejneru. Přejděte na stránku Připojení služby v projektu Azure DevOps a vytvořte nové připojení služby a vyberte typ připojení registru Dockeru.

Existují různé procesy pro vytvoření připojení služby pro Docker Hub a Registr artefaktů Google.

V části Připojení služby registru Dockeru zvolte možnost Docker Hub a zadejte uživatelské jméno a heslo, abyste vytvořili připojení služby Dockeru.

Vytvoření kanálu Azure pro sestavení a nasdílení image Dockeru

Úloha Docker@2 je navržená tak, aby zjednodušila proces sestavování, nabízení a správy imagí Dockeru v rámci azure Pipelines. Tato úloha podporuje širokou škálu příkazů Dockeru, včetně sestavení, nasdílení změn, přihlášení, odhlášení, spuštění, zastavení a spuštění.

Následující kroky popisují, jak vytvořit kanál YAML, který používá úlohu Docker@2 k sestavení a nasdílení image.

  1. Přejděte do projektu Azure DevOps a v nabídce vlevo vyberte Kanály .

  2. Vyberte Nový kanál a vytvořte nový kanál.

  3. Jako umístění zdrojového kódu vyberte GitHub nebo GitHub Enterprise Server .

  4. Pokud jste to ještě neudělali, povolte Azure Pipelines připojení k vašemu účtu GitHub Enterprise Serveru.

    1. Vyberte Připojit k Serveru GitHub Enterprise.
    2. Zadejte podrobnosti o svém účtu a pak vyberte Ověřit a uložit.
  5. Vyberte úložiště. Pokud jste přesměrováni na GitHub

  6. Výběrem šablony úvodního kanálu vytvořte základní konfiguraci kanálu.

  7. Obsah azure-pipelines.yml nahraďte následujícím kódem.

  8. Na základě toho, jestli nasazujete aplikaci pro Linux nebo Windows, nezapomeňte vmImage nastavit buď nebo ubuntu-latest windows-latest. Pokud používáte agenta v místním prostředí, nastavte vmImage název fondu, který obsahuje agenta v místním prostředí s funkcí Dockeru. Můžete přidat demands: docker vlastnost, abyste zajistili, že je vybraný agent s nainstalovaným Dockerem.

  9. Nahraďte <docker connection> názvem připojení služby Docker, které jste vytvořili dříve.

  10. Nahraďte <target repository name> názvem úložiště v registru kontejneru, do kterého chcete vložit image. Například <your-docker-hub-username>/<repository-name>.

    
     trigger:
     - main
    
     pool:
     vmImage: 'ubuntu-latest' 
    
     variables:
     repositoryName: '<target repository name>'
    
     steps:
     - task: Docker@2
     inputs:
     containerRegistry: '<docker connection>'
     repository: $(repositoryName)
     command: 'buildAndPush'
     Dockerfile: '**/Dockerfile'
    
    
  11. Až budete hotovi, vyberte Uložit a spustit.

  12. Když soubor azure-pipelines.yml uložíte do úložiště, zobrazí se výzva k přidání potvrzovací zprávy. Zadejte zprávu a pak vyberte Uložit a spustit.

Při použití agentů v místním prostředí se ujistěte, že je Docker nainstalovaný na hostiteli agenta a že modul/démon Dockeru běží se zvýšenými oprávněními.

Aby bylo možné sestavit image, musí být Docker nainstalovaný na hostiteli agenta a modul/proces démon Dockeru musí být spuštěn se zvýšenými oprávněními. Pomocí následujících kroků vytvořte kanál pomocí editoru kanálů YAML.

  1. Přejděte do kolekce a vytvořte projekt.

  2. V projektu vyberte Kanály.

  3. Vyberte Vytvořit kanál.

  4. Jako umístění zdrojového kódu vyberte GitHub Enterprise Server .

  5. Pokud jste to ještě neudělali, povolte Azure Pipelines připojení k vašemu účtu GitHub Enterprise Serveru.

    1. Vyberte Připojit k Serveru GitHub Enterprise.
    2. Zadejte podrobnosti o svém účtu a pak vyberte Ověřit a uložit.
  6. Vyberte úložiště. Pokud jste přesměrováni na GitHub, abyste nainstalovali aplikaci Azure Pipelines, vyberte Schválit a nainstalovat.

  7. Pokud chcete nakonfigurovat kanál, vyberte šablonu sestavení image Dockeru.

  8. V editoru kanálů YAML nahraďte obsah souboru YAML následujícím kódem. Nahraďte název fondu názvem fondu, který obsahuje vašeho agenta v místním prostředí, funkcí Dockeru.

  9. Na základě toho, jestli nasazujete aplikaci pro Linux nebo Windows, nezapomeňte vmImage nastavit buď nebo ubuntu-latest windows-latest.

  10. Nahraďte <target repository name> názvem úložiště v registru kontejneru, do kterého chcete vložit image. Například <your-docker-hub-username>/<repository-name>.

  11. Nahraďte <docker connection> názvem připojení služby Docker, které jste vytvořili dříve.

    
    trigger:
    - main
    
    pool:
    name: default
    demands: docker
    
    variables:
    repositoryName: '<target repository name>'
    
    steps:
    - task: Docker@2
    inputs:
    containerRegistry: '<docker connection>'
    repository: $(repositoryName)
    command: 'buildAndPush'
    Dockerfile: '**/Dockerfile'
    
    
  12. Zvolte Uložit a Spustit.

  13. Na stránce Uložit a spustit vyberte Uložit a spustit znovu.

Můžete sledovat spuštění kanálu a zobrazit protokoly, abyste viděli, jak se image Dockeru sestavuje a odesílá do registru kontejneru.

Použití System.AccessTokenu pro ověřování v úloze Docker@2

Pomocí registru kontejneru, který poskytuje Azure DevOps, můžete provést ověření pomocí registru kontejneru System.AccessToken . Tento token umožňuje zabezpečený přístup k prostředkům v rámci kanálu bez vystavení citlivých přihlašovacích údajů.

V následujícím příkladu kanálu YAML se úloha Docker@2 používá k přihlášení do registru kontejneru a nasdílení image Dockeru. Nastaví System.AccessToken se jako proměnná prostředí pro ověření příkazů Dockeru.

Nahraďte <docker connection> názvem připojení služby registru Dockeru. Nahraďte <your repository> názvem vašeho úložiště Dockeru.

trigger:
- main

pool:
  vmImage: 'ubuntu-latest'

variables:
  SYSTEM_ACCESSTOKEN: $(System.AccessToken)

steps:
- task: Docker@2
  inputs:
    command: login
    containerRegistry: '<docker connection>'
  env:
    SYSTEM_ACCESSTOKEN: $(System.AccessToken)

- task: Docker@2
  inputs:
    command: buildAndPush
    repository: '<your repository>'
    dockerfile: '**/Dockerfile'
    tags: |
      $(Build.BuildId)
  env:
    SYSTEM_ACCESSTOKEN: $(System.AccessToken)