Använda Azure Pipelines för att skapa och skicka containeravbildningar till register
Azure DevOps Services
Den här artikeln vägleder dig genom att skapa en pipeline för att skapa och skicka en Docker-avbildning till ett Azure Container Registry eller Docker Hub.
Förutsättningar
Produkt | Krav |
---|---|
Azure DevOps | – Ett Azure DevOps-projekt. - behörigheter: – Om du vill bevilja åtkomst till alla pipelines i projektet: Du måste vara medlem i gruppen Projektadministratörer. – För att skapa tjänstanslutningar: Du måste ha rollen Administratör eller Creator för tjänstanslutningar. – Om du använder en lokalt installerad agent kontrollerar du att Docker är installerat och att Docker-motorn körs med förhöjd behörighet. Microsoft-värdbaserade agenter har Docker förinstallerat. |
GitHub | – Ett GitHub- konto. – En GitHub-lagringsplats med en Dockerfile. Använd exempellagringsplats om du inte har ett eget projekt. – En GitHub-tjänstanslutning för att auktorisera Azure Pipelines. |
Azurblå | – En Azure-abonnemang. – Ett Azure Container Registry-. |
Produkt | Krav |
---|---|
Azure DevOps | – Ett Azure DevOps-projekt. - behörigheter: – Om du vill bevilja åtkomst till alla pipelines i projektet: Du måste vara medlem i gruppen Projektadministratörer. – För att skapa tjänstanslutningar: Du måste ha rollen Administratör eller Creator för tjänstanslutningar. – Om du använder en lokalt installerad agent kontrollerar du att Docker är installerat och att Docker-motorn körs med förhöjd behörighet. Microsoft-värdbaserade agenter har Docker förinstallerat. |
GitHub | – Ett GitHub- konto. – En GitHub-lagringsplats med en Dockerfile. Använd exempellagringsplats om du inte har ett eget projekt. – En GitHub-tjänstanslutning för att auktorisera Azure Pipelines. |
Docker Hub | – Ett Docker Hub- konto. – En Docker Hub avbildningslagringsplats. |
Skapa en Docker-registertjänstanslutning
Innan du skickar containeravbildningar till ett register måste du skapa en tjänstanslutning i Azure DevOps. Den här tjänstanslutningen lagrar de autentiseringsuppgifter som krävs för att autentisera säkert med containerregistret. Mer information finns i Docker Registry-tjänstanslutningar.
I ditt Azure DevOps-projekt väljer du Project-inställningar>Tjänstanslutningar.
Välj Ny tjänstanslutning och Docker Registry.
Välj Docker Hub- och ange följande information:
Fält Beskrivning Docker-ID Ange ditt Docker-ID. Docker-lösenord Ange ditt Docker-lösenord. Tjänstanslutningsnamn Ange ett namn för tjänstanslutningen. Bevilja åtkomstbehörighet till alla pipelines Välj det här alternativet om du vill bevilja åtkomst till alla pipelines. Välj Verifiera och spara.
Skapa en pipeline för att bygga och pusha en Docker-bild
Den Docker@2 uppgiften används för att skapa och skicka avbildningen till containerregistret. Den Docker@2 uppgiften är utformad för att effektivisera processen med att skapa, push-överföra och hantera Docker-avbildningar i dina Azure Pipelines. Den här uppgiften stöder en mängd olika Docker-kommandon, inklusive build, push, login, logout, start, stop och run.
Använd följande steg för att skapa en YAML-pipeline som använder Docker@2-uppgiften för att bygga och överföra avbildningen.
I ditt Azure DevOps-projekt väljer du Pipelines och Ny pipeline.
Välj GitHub- som plats för källkoden och välj din lagringsplats.
- Om du omdirigeras till GitHub för att logga in anger du dina GitHub-autentiseringsuppgifter.
- Om du omdirigeras till GitHub för att installera Azure Pipelines-appen väljer du Godkänn och installera.
Välj din lagringsplats.
Välj mallen Startpipeline för att skapa en grundläggande pipelinekonfiguration.
Ersätt innehållet i azure-pipelines.yml med följande kod:
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'
Redigera YAML-pipelinefilen på följande sätt:
- Ersätt
<target repository name>
med namnet på lagringsplatsen i containerregistret där du vill push-överföra avbildningen. - Ersätt
<docker registry service connection>
med namnet på den Docker-registertjänstanslutning som du skapade tidigare.
- Ersätt
När du är klar väljer du Spara och kör>Spara och kör.
Välj Jobb för att visa loggarna och kontrollera att pipelinan har körts framgångsrikt.
Gå till ditt Azure DevOps-projekt och välj Pipelines på den vänstra menyn.
Välj Ny pipeline.
Välj GitHub- som plats för källkoden och välj din lagringsplats.
- Om du omdirigeras till GitHub för att logga in anger du dina GitHub-autentiseringsuppgifter.
- Om du omdirigeras till GitHub för att installera Azure Pipelines-appen väljer du Godkänn och installera.
Välj Docker-mallen – Bygg och pusha en avbild till Azure Container Registry.
Välj din Azure-prenumeration och Fortsätt.
Välj containerregistret och välj sedan Verifiera och konfigurera.
Exempel på 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)
Välj Spara och kör och Spara och kör igen.
Välj Jobb för att visa loggarna och försäkra sig att rörledningen har körts framgångsrikt.
Docker-mallen skapar tjänstanslutningen till Azure Container Registry och använder Docker@2-uppgiften för att bygga och pusha Docker-avbildningen till registret.
Den Docker@2 uppgiften är utformad för att effektivisera processen med att skapa, push-överföra och hantera Docker-avbildningar i dina Azure Pipelines. Den här uppgiften stöder en mängd olika Docker-kommandon, inklusive build, push, login, logout, start, stop och run.
När du använder lokalt installerade agenter måste du se till att Docker är installerat på agentens värd och att Docker-motorn/daemonen körs med förhöjd behörighet.