Verwenden von Azure Pipelines zum Erstellen und Pushen von Containerimages in Registrierungen
Azure DevOps Services
Dieser Artikel führt Sie durch die Erstellung einer Pipeline, um ein Docker Image zu erstellen und an eine Azure Container Registry oder einen Docker Hub zu pushen.
Voraussetzungen
Produkt | Voraussetzungen |
---|---|
Azure DevOps | - Ein Azure DevOps-Projekt. - Berechtigungen: - Um Zugriff auf alle Pipelines im Projekt zu gewähren: Sie müssen Mitglied der Gruppe Projektadministratoren sein. - Um Dienst-Verbindungen zu erstellen: Sie müssen die Rolle Administrator oder Creator für Dienstverbindungen haben. – Wenn Sie einen selbst gehosteten Agent verwenden, stellen Sie sicher, dass Docker installiert ist und das Docker-Modul mit erhöhten Rechten ausgeführt wird. Von Microsoft gehostete Agents haben Docker vorinstalliert. |
GitHub | - Ein GitHub--Konto. - Ein GitHub-Repository mit einer Dockerdatei. Verwenden Sie das Beispiel-Repository, wenn Sie kein eigenes Projekt haben. - Eine GitHub-Dienstverbindung zur Autorisierung von Azure Pipelines. |
Azure | - Ein Azure-Abonnement. - Eine Azure Container Registry. |
Produkt | Voraussetzungen |
---|---|
Azure DevOps | - Ein Azure DevOps-Projekt. - Berechtigungen: - Um Zugriff auf alle Pipelines im Projekt zu gewähren: Sie müssen Mitglied der Projektadministratoren-Gruppe sein. - Um Dienst-Verbindungen zu erstellen: Sie müssen die Rolle Administrator oder Creator für Dienstverbindungen haben. – Wenn Sie einen selbst gehosteten Agent verwenden, stellen Sie sicher, dass Docker installiert ist und das Docker-Modul mit erhöhten Rechten ausgeführt wird. Von Microsoft gehostete Agents haben Docker vorinstalliert. |
GitHub | - Ein GitHub--Konto. - Ein GitHub-Repository mit einer Dockerfile. Verwenden Sie das Beispiel-Repository, wenn Sie kein eigenes Projekt haben. - Eine GitHub-Dienstverbindung zur Autorisierung von Azure Pipelines. |
Docker Hub | - Ein Docker Hub-Konto. - Ein Docker Hub-IMAGE-Repository. |
Erstellen einer Docker-Registrierungsdienstverbindung
Bevor Sie Containerimages in eine Registrierung übertragen, müssen Sie eine Dienstverbindung in Azure DevOps erstellen. Diese Dienstverbindung speichert die Anmeldeinformationen, die für die sichere Authentifizierung bei der Containerregistrierung erforderlich sind. Weitere Informationen finden Sie unter Docker Registry-Dienstverbindungen.
Wählen Sie in Ihrem Azure DevOps-Projekt Projekteinstellungen>Dienstverbindungen.
Screenshot der Auswahl der Projekteinstellungen.
Wählen Sie Neue Dienstverbindung und Docker-Registry.
Wählen Sie Docker Hub aus, und geben Sie die folgenden Informationen ein:
Feld Beschreibung Docker-ID Geben Sie Ihre Docker-ID ein. Docker-Kennwort Geben Sie Ihr Docker-Kennwort ein. Dienstverbindungsname Geben Sie einen Namen für die Dienstverbindung ein. Zugriffserlaubnis für alle Pipelines gewähren Wählen Sie diese Option aus, um zugriff auf alle Pipelines zu gewähren. Klicken Sie auf Verify and save.
Erstellen Sie eine Pipeline zum Erstellen und Pushen eines Docker Images
Die Docker@2 Aufgabe wird verwendet, um das Image in die Containerregistrierung zu erstellen und zu übertragen. Die Docker@2 Aufgabe wurde entwickelt, um den Prozess des Erstellens, Pushens und Verwaltens von Docker-Images in Ihren Azure-Pipelines zu optimieren. Diese Aufgabe unterstützt eine vielzahl von Docker-Befehlen, einschließlich Build, Push, Anmeldung, Abmelden, Start, Beenden und Ausführen.
Führen Sie die folgenden Schritte aus, um eine YAML-Pipeline zu erstellen, die die Docker@2 Aufgabe verwendet, um das Image zu erstellen und zu übertragen.
Wählen Sie in Ihrem Azure DevOps Projekt Pipelines und Neue Pipeline.
Wählen Sie GitHub- als Speicherort Ihres Quellcodes aus, und wählen Sie Ihr Repository aus.
- Wenn Sie zu GitHub umgeleitet werden, um sich anzumelden, geben Sie Ihre GitHub-Anmeldeinformationen ein.
- Wenn Sie zu GitHub umgeleitet werden, um die Azure Pipelines-App zu installieren, wählen Sie Zustimmen und installieren aus.
Wählen Sie Ihr Repository aus.
Wählen Sie die Startpipelinevorlage aus, um eine grundlegende Pipelinekonfiguration zu erstellen.
Ersetzen Sie den Inhalt von azure-pipelines.yml durch den folgenden Code:
trigger: - main pool: vmImage: 'ubuntu-latest' variables: repositoryName: '<target repository name>' steps: - task: Docker@2 inputs: containerRegistry: '<docker registry service connection>' repository: $(repositoryName) command: 'buildAndPush' Dockerfile: '**/Dockerfile'
Bearbeiten Sie die YaML-Pipelinedatei wie folgt:
- Ersetzen Sie ihn
<target repository name>
durch den Namen des Repositorys in der Containerregistrierung, in dem Sie das Image übertragen möchten. - Ersetzen Sie
<docker registry service connection>
durch den Namen der zuvor erstellten Docker-Registrierungsdienstverbindung.
- Ersetzen Sie ihn
Wenn Sie fertig sind, wählen Sie Speichern und ausführen>Speichern und ausführen.
Wählen Sie Job, um die Protokolle anzuzeigen und zu überprüfen, ob die Pipeline erfolgreich ausgeführt wurde.
Wechseln Sie zu Ihrem Azure DevOps-Projekt, und wählen Sie im linken Menü Pipelines aus.
Wählen Sie Neue Pipeline aus.
Wählen Sie GitHub- als Speicherort Ihres Quellcodes aus, und wählen Sie Ihr Repository aus.
- Wenn Sie zu GitHub umgeleitet werden, um sich anzumelden, geben Sie Ihre GitHub-Anmeldeinformationen ein.
- Wenn Sie zu GitHub umgeleitet werden, um die Azure Pipelines-App zu installieren, wählen Sie Zustimmen und installieren aus.
Wählen Sie die Vorlage Docker – Build and push an image to Azure Container Registry.
Wählen Sie Ihr Azure Abonnement und Fortfahren.
Wählen Sie Ihre Container Registry aus und wählen Sie dann Validieren und konfigurieren.
Beispiel für eine YAML-Pipeline:
# Docker # Build and push an image to Azure Container Registry # https://docs.microsoft.com/azure/devops/pipelines/languages/docker trigger: - main resources: - repo: self variables: # Container registry service connection established during pipeline creation dockerRegistryServiceConnection: '7f9dc28e-5551-43ee-891f-33bf61a995de' imageRepository: 'usernamepipelinesjavascriptdocker' containerRegistry: 'repoistoryname.azurecr.io' dockerfilePath: '$(Build.SourcesDirectory)/app/Dockerfile' tag: '$(Build.BuildId)' # Agent VM image name vmImageName: 'ubuntu-latest' stages: - stage: Build displayName: Build and push stage jobs: - job: Build displayName: Build pool: vmImage: $(vmImageName) steps: - task: Docker@2 displayName: Build and push an image to container registry inputs: command: buildAndPush repository: $(imageRepository) dockerfile: $(dockerfilePath) containerRegistry: $(dockerRegistryServiceConnection) tags: | $(tag)
Wählen Sie erneut Speichern und ausführen und Speichern und ausführen.
Wählen Sie Job, um die Protokolle anzuzeigen und zu überprüfen, ob die Pipeline erfolgreich ausgeführt wurde.
Die Docker-Vorlage erstellt die Dienstverbindung zu Ihrer Azure Container Registry und verwendet die Docker@2-Aufgabe, um das Docker-Image zu erstellen und an die Registrierung zu pushen.
Die Docker@2 Aufgabe wurde entwickelt, um den Prozess des Erstellens, Pushens und Verwaltens von Docker-Images in Ihren Azure-Pipelines zu optimieren. Diese Aufgabe unterstützt eine vielzahl von Docker-Befehlen, einschließlich Build, Push, Anmeldung, Abmelden, Start, Beenden und Ausführen.
Achten Sie bei der Verwendung von selbstgehosteten Agents darauf, dass Docker auf dem Host des Agents installiert ist und die Docker-Engine/der Docker-Daemon mit erhöhten Rechten ausgeführt wird.