Udostępnij za pośrednictwem


Tworzenie i wypychanie obrazów kontenerów do rejestrów za pomocą usługi Azure Pipelines

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

Ten artykuł przeprowadzi Cię przez proces konfiguracji i ustawień w usłudze Azure Pipelines w celu budowania i publikowania obrazu platformy Docker do usługi Azure Container Registry oraz Docker Hub. Ponadto szczegółowe informacje na temat System.AccessToken użycia elementu do bezpiecznego uwierzytelniania w potoku.

Ten artykuł przeprowadzi Cię przez proces konfigurowania i konfigurowania używania usługi Azure Pipelines do kompilowania i wypychania obrazu platformy Docker do usługi Docker Hub. Ponadto szczegółowe informacje na temat System.AccessToken użycia elementu do bezpiecznego uwierzytelniania w potoku.

Dowiesz się, jak utworzyć potok YAML w celu zbudowania i wypchnięcia obrazu Docker do rejestru kontenerów przy użyciu zadania Docker@2.

Wymagania wstępne

produkt Wymagania
Usługi Azure DevOps projekt usługi Azure DevOps.
Uprawnienia: -
    - Aby udzielić dostępu do wszystkich linii w projekcie: musisz być członkiem Grupy Administratorzy Projektu .
    — Aby utworzyć połączenia usług: musisz mieć rolę Administrator lub Twórca dla połączeń usług .
— Jeśli używasz własnego agenta, upewnij się, że Docker jest zainstalowany, a silnik Docker jest uruchomiony z podwyższonym poziomem uprawnień. Agenci hostowani przez firmę Microsoft mają wstępnie zainstalowaną platformę Docker.
GitHub — Konto GitHub .
— Repozytorium GitHub z plikiem Dockerfile. Jeśli nie masz własnego projektu, użyj przykładowego repozytorium .
Połączenie usługi GitHub do autoryzowania usługi Azure Pipelines.
Błękit - Subskrypcja platformy Azure .
— Jeden z rejestrów kontenerów Azure.
Docker Hub — Konto usługi Docker Hub.
— Repozytorium obrazów Docker Hub.
  • wymagania dotyczące projektu : projekt usługi Azure DevOps .
  • Uprawnienia :
  • Subskrypcje:
    • Konto usługi GitHub. Jeśli go nie masz, możesz go utworzyć bezpłatnie w witrynie GitHub.
    • Konto usługi Docker Hub: potrzebujesz konta usługi Docker Hub. Jeśli go nie masz, możesz go utworzyć bezpłatnie na stronie Docker Hub.
  • Repository: repozytorium GitHub zawierające plik Dockerfile. Jeśli go nie masz, możesz użyć przykładowego repozytorium
  • połączenie usługi : połączenie usługi GitHub Enterprise Server. Jeśli go nie masz, możesz go utworzyć w ustawieniach projektu usługi Azure DevOps. Aby uzyskać więcej informacji na temat tworzenia połączenia z usługą, zobacz Service connections.
  • rejestr kontenerów : A (Rejestr kontenerów usługi Docker Hub
  • Wymagania dotyczące oprogramowania: Docker musi być zainstalowany, a silnik Docker powinien działać z podwyższonymi uprawnieniami na waszym własnym agencie.

Tworzenie połączenia usługi Platformy Docker

Przed wypychaniem obrazów kontenerów do rejestru należy utworzyć połączenie usługi w usłudze Azure DevOps. To połączenie z usługą przechowuje poświadczenia wymagane do bezpiecznego uwierzytelniania w rejestrze kontenerów. Przejdź do Połączenia usługi w ustawieniach projektu Azure DevOps, aby utworzyć nowe połączenie usługi Docker Registry.

Wybierz opcję Docker Hub w obszarze Połączenie usługi rejestru platformy Docker i podaj nazwę użytkownika i hasło, aby utworzyć połączenie z usługą platformy Docker.

Utwórz potok YAML, aby kompilować i wypychać obraz Docker.

Zadanie Docker@2 zostało zaprojektowane w celu usprawnienia procesu tworzenia, wypychania i zarządzania obrazami platformy Docker w usłudze Azure Pipelines. To zadanie obsługuje szeroką gamę poleceń platformy Docker, w tym kompilowanie, wypychanie, logowanie, wylogowywanie, uruchamianie, zatrzymywanie i uruchamianie.

Wykonaj poniższe kroki, aby utworzyć potok YAML, który używa zadania Docker@2 do skompilowania i wypchnięcia obrazu.

  1. Przejdź do projektu usługi Azure DevOps i wybierz pozycję Pipelines z menu po lewej stronie.

  2. Wybierz pozycję Nową rurę.

  3. Wybierz lokalizację repozytorium źródłowego.

  4. Wybierz GitHub jako lokalizację kodu źródłowego i wybierz repozytorium.

    • Jeśli nastąpi przekierowanie do usługi GitHub w celu zalogowania się, wprowadź swoje poświadczenia usługi GitHub.
    • Jeśli nastąpi przekierowanie do usługi GitHub w celu zainstalowania aplikacji Azure Pipelines, wybierz pozycję Zatwierdź i zainstaluj.
  5. Wybierz szablon Potok początkowy, aby utworzyć podstawową konfigurację potoku.

  6. Zastąp zawartość azure-pipelines.yml następującym kodem:

    
     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. Edytuj plik YAML potoku w następujący sposób:

    • Na podstawie tego, czy wdrażasz aplikację systemu Linux, czy Windows, upewnij się, że ustawiono odpowiednio wartość vmImageubuntu-latest lub windows-latest.

      Jeśli używasz własnego agenta, ustaw vmImage nazwę puli, która zawiera własnego agenta z funkcją platformy Docker. Możesz dodać właściwość, demands: aby upewnić się, że wybrano agenta z zainstalowaną platformą Docker. Na przykład:

          pool:
            name: <your agent pool>
            demands: docker
      
    • Zastąp <docker connection> ciąg nazwą utworzonego wcześniej połączenia usługi Platformy Docker.

    • Zastąp <target repository name> ciąg nazwą repozytorium w rejestrze kontenerów, w którym chcesz wypchnąć obraz. Na przykład <your-docker-hub-username>/<repository-name>.

  8. Po zakończeniu wybierz pozycję Zapisz i uruchom.

  9. Po zapisaniu pliku azure-pipelines.yml w repozytorium zostanie wyświetlony monit o dodanie komunikatu zatwierdzenia. Wprowadź komunikat, a następnie wybierz pozycję Zapisz i uruchom.

W przypadku korzystania z własnych agentów upewnij się, że platforma Docker jest zainstalowana na hoście agenta, a aparat/demon platformy Docker jest uruchomiony z podwyższonym poziomem uprawnień.

Aby skompilować obraz, platforma Docker musi być zainstalowana na hoście agenta, a aparat/demon platformy Docker musi być uruchomiony z podwyższonym poziomem uprawnień.

Wykonaj poniższe kroki, aby utworzyć potok przy użyciu edytora potoku YAML.

  1. Przejdź do kolekcji i utwórz projekt.

  2. W projekcie wybierz pozycję Potoki.

  3. Wybierz pozycję Utwórz potok.

  4. Wybierz pozycję GitHub Enterprise Server jako lokalizację kodu źródłowego.

  5. Jeśli jeszcze tego nie zrobiono, autoryzuj usługę Azure Pipelines do nawiązania połączenia z kontem usługi GitHub Enterprise Server.

    1. Wybierz pozycję Połącz z serwerem GitHub Enterprise Server.
    2. Wprowadź szczegóły konta, a następnie wybierz pozycję Weryfikuj i zapisz.
  6. Wybierz repozytorium. Jeśli nastąpi przekierowanie do usługi GitHub w celu zainstalowania aplikacji Azure Pipelines, wybierz pozycję Zatwierdź i zainstaluj.

  7. Aby skonfigurować potok, wybierz szablon Kompiluj obraz platformy Docker.

  8. W edytorze potoków YAML zastąp zawartość pliku YAML następującym kodem:

    
    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. Edytuj plik YAML dla potoku w następujący sposób:

    • Zastąp nazwę puli nazwą puli, która zawiera własnego agenta, przy użyciu funkcji platformy Docker.
    • Zastąp <target repository name> ciąg nazwą repozytorium w rejestrze kontenerów, w którym chcesz wypchnąć obraz. Na przykład <your-docker-hub-username>/<repository-name>.
    • Zastąp <docker connection> ciąg nazwą utworzonego wcześniej połączenia usługi Platformy Docker.
  10. Wybierz pozycję Zapisz i uruchom.

  11. Na stronie Zapisywanie i uruchamianie wybierz pozycję Zapisz i uruchom ponownie.

Możesz obejrzeć uruchomienie potoku i wyświetlić dzienniki, aby zobaczyć skompilowany i wypchnięty obraz platformy Docker do rejestru kontenerów.

Używanie elementu System.AccessToken do uwierzytelniania w Docker@2 zadanie

Możesz uwierzytelnić się za pomocą rejestru kontenerów przy użyciu System.AccessToken usługi Azure DevOps. Ten token umożliwia bezpieczny dostęp do zasobów w potoku bez ujawniania poufnych poświadczeń.

W poniższym przykładzie potoku YAML zadanie Docker@2 służy do logowania się do rejestru kontenerów i wypychania obrazu platformy Docker. Parametr System.AccessToken jest ustawiany jako zmienna środowiskowa do uwierzytelniania poleceń platformy Docker.

Zastąp <docker connection> ciąg nazwą połączenia usługi rejestru platformy Docker. Zastąp <your repository> ciąg nazwą repozytorium platformy Docker.

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)