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í ve službě Azure Pipelines k sestavení a nasdílení image Dockeru do služby Azure Container Registry a Docker Hubu. 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í Azure Pipelines k sestavení a nasdílení image Dockeru do Docker Hubu. Kromě toho podrobně popisuje použití zabezpečeného System.AccessToken ověřování v rámci kanálu.

Naučíte se vytvořit kanál YAML pro sestavení a nasdílení image Dockeru do registru kontejneru pomocí úlohy Docker@2.

Požadavky

Produkt Požadavky
Azure DevOps – projekt Azure DevOps .
oprávnění - :
    - Chcete-li udělit přístup ke všem kanálům v projektu: Musíte být členem skupiny Project Administrators.
    - Chcete-li vytvořit připojení služby: Musíte mít roli Správce nebo Creator pro připojení služby .
– Pokud používáte agenta v místním prostředí, ujistěte se, že je nainstalovaný Docker a modul Dockeru běží se zvýšenými oprávněními. Agenti hostovaní Microsoftem mají předinstalovaný Docker.
GitHub – účet GitHubu.
– Úložiště GitHubu se souborem Dockerfile. Pokud nemáte vlastní projekt, použijte ukázkové úložiště.
připojení ke službě GitHub k autorizaci Azure Pipelines.
Azurová ( Azure) – předplatné Azure.
Azure Container Registry.
Centrum Dockeru – účet Docker Hub.
– Úložiště obrázků Docker Hub.
  • požadavky projektu : projekt Azure DevOps.
  • Oprávnění:
  • Předplatná:
    • Účet GitHubu. Pokud ho nemáte, můžete si ho zdarma vytvořit na GitHubu.
    • Účet Docker Hubu: Potřebujete účet Docker Hubu. Pokud ho nemáte, můžete si ho zdarma vytvořit v Docker Hubu.
  • úložiště : úložiště GitHub se souborem Dockerfile. Pokud ho nemáte, můžete použít ukázkové úložiště
  • Připojení ke službě: : připojení ke službě GitHub Enterprise Server. Pokud ho nemáte, můžete ho vytvořit v nastavení projektu Azure DevOps. Další informace o vytvoření připojení služby naleznete v tématu Připojení služby.
  • Container registry: A (Docker Hub úložiště kontejnerů
  • Požadavky na software: Musí být nainstalovaný Docker a modul Dockeru spuštěný se zvýšenými oprávněními na vašem agentu v místním prostředí.

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. V nastavení projektu Azure DevOps přejděte na připojení služeb a vytvořte nové připojení služby registru Dockeru.

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řte YAML pipeline pro sestavení a odeslání 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í.

Pomocí následujících kroků vytvořte 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 Pipelines.

  2. Vyberte Nové potrubí.

  3. Vyberte umístění zdrojového úložiště.

  4. Jako umístění zdrojového kódu vyberte GitHubu a vyberte úložiště.

    • Pokud jste přesměrováni na GitHub, abyste se mohli přihlásit, zadejte svoje přihlašovací údaje GitHubu.
    • Pokud jste přesměrováni na GitHub, abyste nainstalovali aplikaci Azure Pipelines, vyberte Schválit a nainstalovat.
  5. Výběrem šablony úvodního kanálu vytvořte základní konfiguraci kanálu.

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

    
     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'
    
    
  7. Upravte soubor YAML kanálu následujícím způsobem:

    • Na základě toho, jestli nasazujete aplikaci pro Linux nebo Windows, nezapomeňte vmImage nastavit buď nebo ubuntu-latestwindows-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: vlastnost, abyste zajistili, že je vybraný agent s nainstalovaným Dockerem. Příklad:

          pool:
            name: <your agent pool>
            demands: docker
      
    • Nahraďte <docker connection> názvem připojení služby Docker, které jste vytvořili dříve.

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

  8. Až budete hotovi, vyberte Uložit a spustit.

  9. 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:

    
    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'
    
    
  9. Upravte soubor YAML kanálu následujícím způsobem:

    • Nahraďte název fondu názvem fondu, který obsahuje vašeho agenta v místním prostředí, funkcí Dockeru.
    • 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>.
    • Nahraďte <docker connection> názvem připojení služby Docker, které jste vytvořili dříve.
  10. Zvolte Uložit a Spustit.

  11. 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)