Azure Pipelines gebruiken om containerinstallatiekopieën te bouwen en te pushen naar registers
Azure DevOps Services-
In dit artikel wordt u begeleid bij het maken van een pijplijn om een Docker-image te bouwen en te pushen naar een Azure Container Registry of Docker Hub.
Vereisten
Product | vereisten |
---|---|
Azure DevOps | - Een Azure DevOps-project. - machtigingen: - Als u toegang wilt verlenen tot alle pijplijnen in het project: u moet lid zijn van de groep Projectbeheerders. - Als u serviceverbindingen wilt maken: u moet de Administrator- of Creator- rol hebben voor serviceverbindingen. - Als u een zelf-hostende agent gebruikt, controleert u of Docker is geïnstalleerd en of de Docker-engine wordt uitgevoerd met verhoogde bevoegdheden. Door Microsoft gehoste agents hebben Docker vooraf geïnstalleerd. |
GitHub- | - Een GitHub-account. - Een GitHub-opslagplaats met een Dockerfile. Gebruik de voorbeeldopslagplaats als u geen eigen project hebt. - Een GitHub-serviceverbinding om Azure Pipelines te autoriseren. |
Azure | - Een Azure-abonnement. - Een Azure Container Registry-. |
Product | vereisten |
---|---|
Azure DevOps | - Een Azure DevOps-project. - machtigingen: - Als u toegang wilt verlenen tot alle pijplijnen in het project: u moet lid zijn van de groep Projectbeheerders. - Als u serviceverbindingen wilt maken: u moet de Administrator- of Creator- rol hebben voor serviceverbindingen. - Als u een zelf-hostende agent gebruikt, controleert u of Docker is geïnstalleerd en of de Docker-engine wordt uitgevoerd met verhoogde bevoegdheden. Door Microsoft gehoste agents hebben Docker vooraf geïnstalleerd. |
GitHub- | - Een GitHub-account. - Een GitHub-opslagplaats met een Dockerfile. Gebruik de voorbeeldopslagplaats als u geen eigen project hebt. - Een GitHub-serviceverbinding om Azure Pipelines te autoriseren. |
Docker Hub | - Een Docker Hub-account. - Een Docker Hub afbeeldingsrepository. |
Een Docker-registerserviceverbinding maken
Voordat u containerinstallatiekopieën naar een register pusht, moet u een serviceverbinding maken in Azure DevOps. Met deze serviceverbinding worden de referenties opgeslagen die vereist zijn om veilig te verifiëren met het containerregister. Zie Docker Registry-serviceverbindingenvoor meer informatie.
Selecteer in uw Azure DevOps-project Project-instellingen>Service-verbindingen.
Selecteer nieuwe serviceverbinding en Docker Registry-.
Selecteer Docker Hub en voer de volgende gegevens in:
Veld Beschrijving Docker-id Voer uw Docker-id in. Docker-wachtwoord Voer uw Docker-wachtwoord in. serviceverbindingsnaam Voer een naam in voor de serviceverbinding. Toegang verlenen aan alle pijplijnen Selecteer deze optie om toegang te verlenen tot alle pijplijnen. Selecteer Controleren en opslaan.
Maak een pijplijn om een Docker-image te bouwen en pushen.
De Docker@2 taak wordt gebruikt om de installatiekopieën te bouwen en naar het containerregister te pushen. De Docker@2 taak is ontworpen om het proces van het bouwen, pushen en beheren van Docker-installatiekopieën binnen uw Azure Pipelines te stroomlijnen. Deze taak ondersteunt een breed scala aan Docker-opdrachten, waaronder bouwen, pushen, aanmelden, afmelden, starten, stoppen en uitvoeren.
Gebruik de volgende stappen om een YAML-pijplijn te maken die de Docker@2-taak gebruikt om de image te bouwen en te pushen.
Selecteer in uw Azure DevOps-project Pipelines en Nieuwe pijplijn.
Selecteer GitHub- als de locatie van uw broncode en selecteer uw opslagplaats.
- Als u wordt omgeleid naar GitHub om u aan te melden, voert u uw GitHub-referenties in.
- Als u wordt omgeleid naar GitHub om de Azure Pipelines-app te installeren, selecteert u Goedkeuren en installeren.
Selecteer uw opslagplaats.
Selecteer de Starter-pijplijnsjabloon om een basispijplijnconfiguratie te maken.
Vervang de inhoud van azure-pipelines.yml door de volgende 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'
Bewerk het YAML-pijplijnbestand als volgt:
- Vervang
<target repository name>
door de naam van de opslagplaats in het containerregister waar u de installatiekopieën wilt pushen. - Vervang
<docker registry service connection>
door de naam van de Docker-registerserviceverbinding die u eerder hebt gemaakt.
- Vervang
Wanneer u klaar bent, selecteert u Opslaan en uitvoeren>enOpslaan en uitvoeren.
Selecteer Job om de logboeken weer te geven en te controleren of de pipeline is uitgevoerd.
Ga naar uw Azure DevOps-project en selecteer Pipelines in het menu aan de linkerkant.
Selecteer nieuwe pijplijn.
Selecteer GitHub- als de locatie van uw broncode en selecteer uw opslagplaats.
- Als u wordt omgeleid naar GitHub om u aan te melden, voert u uw GitHub-referenties in.
- Als u wordt omgeleid naar GitHub om de Azure Pipelines-app te installeren, selecteert u Goedkeuren en installeren.
Selecteer de Docker - Een afbeelding bouwen en pushen naar de Azure Container Registry-sjabloon.
Selecteer uw Azure-abonnement en Doorgaan.
Selecteer uw Container Registry en selecteer vervolgens Valideren en configureren.
Voorbeeld van YAML-pijplijn:
# 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)
Selecteer Opslaan en uitvoeren en Opslaan en opnieuw uitvoeren.
Selecteer job om de logboeken weer te geven en te controleren of de pijplijn met succes is uitgevoerd.
De Docker-sjabloon maakt de serviceverbinding met uw Azure Container Registry en gebruikt de Docker@2 taken om de Docker-image te bouwen en te pushen naar het register.
De Docker@2 taak is ontworpen om het proces van het bouwen, pushen en beheren van Docker-installatiekopieën binnen uw Azure Pipelines te stroomlijnen. Deze taak ondersteunt een breed scala aan Docker-opdrachten, waaronder bouwen, pushen, aanmelden, afmelden, starten, stoppen en uitvoeren.
Wanneer u zelf-hostende agents gebruikt, moet u ervoor zorgen dat Docker is geïnstalleerd op de host van de agent en dat de Docker-engine/daemon wordt uitgevoerd met verhoogde bevoegdheden.