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 :
- Zostań członkiem grupy Project Administrators.
- Rola administratora dla połączeń usług w projekcie usługi Azure DevOps.
-
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.
Przejdź do projektu usługi Azure DevOps i wybierz pozycję Pipelines z menu po lewej stronie.
Wybierz pozycję Nową rurę.
Wybierz lokalizację repozytorium źródłowego.
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.
Wybierz szablon Potok początkowy, aby utworzyć podstawową konfigurację potoku.
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'
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ść
vmImage
ubuntu-latest
lubwindows-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>
.
Po zakończeniu wybierz pozycję Zapisz i uruchom.
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.
Przejdź do kolekcji i utwórz projekt.
W projekcie wybierz pozycję Potoki.
Wybierz pozycję Utwórz potok.
Wybierz pozycję GitHub Enterprise Server jako lokalizację kodu źródłowego.
Jeśli jeszcze tego nie zrobiono, autoryzuj usługę Azure Pipelines do nawiązania połączenia z kontem usługi GitHub Enterprise Server.
- Wybierz pozycję Połącz z serwerem GitHub Enterprise Server.
- Wprowadź szczegóły konta, a następnie wybierz pozycję Weryfikuj i zapisz.
Wybierz repozytorium. Jeśli nastąpi przekierowanie do usługi GitHub w celu zainstalowania aplikacji Azure Pipelines, wybierz pozycję Zatwierdź i zainstaluj.
Aby skonfigurować potok, wybierz szablon Kompiluj obraz platformy Docker.
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'
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.
Wybierz pozycję Zapisz i uruchom.
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)