将Docker映像推送到注册表,然后再用于azure管道

2024-06-10 08:22:29 发布

您现在位置:Python中文网/ 问答频道 /正文

对于azure管道中的测试,我希望使用一个容器,然后将其推送到Docker Hub

实际上,步骤如下:

  1. 从注册表中提取图像
  2. 做测试
  3. 在注册表的代码中使用新提交推送新映像

问题:从注册表中提取的图像包含前面的代码,而不是我正在测试的代码

我想做什么:

  1. 首先,在Docker注册表中使用新代码部署映像

  2. 然后,前面提到了步骤1到步骤3,因此我提取的图像是最新的

这是我的实际代码:

trigger:
- master

resources:
  containers:
  - container: moviestr_backend
    image: nolwenbrosson/cicd:moviestr_backend-$(SourceBranchName)
    ports:
    - 5000:5000
  - container: backend_mongo
    image: mongo
    ports:
    - 27017:27017

pool:
  vmImage: 'ubuntu-latest'
strategy:
  matrix:
    Python37:
      python.version: '3.7'

services:
  moviestr_backend: moviestr_backend
  backend_mongo: backend_mongo
steps:
- task: UsePythonVersion@0
  inputs:
    versionSpec: '$(python.version)'
  displayName: 'Use Python $(python.version)'

- script: |
    python -m pip install --upgrade pip
    pip install -r requirements.txt
    pip install -r requirements.dev.txt
    pip install pytest-azurepipelines
  displayName: 'Install dependencies'
- script: |
    python -m pytest
  displayName: 'Make Unit tests'
- task: Docker@2
  displayName: Login to Docker Hub
  inputs:
    command: login
    containerRegistry: cicd
- task: Docker@2
  displayName: Build and Push
  inputs:
    command: buildAndPush
    repository: nolwenbrosson/cicd
    tags: |
      moviestr_backend-master
- task: Docker@2
  displayName: Logout of ACR
  inputs:
    command: logout
    containerRegistry: cicd

问题是,resources对于整个管道来说是唯一的,它将在开始时提取映像,而不是在我使用最新代码构建映像之后。那么,我该怎么办


Tags: installpipdocker代码图像backendtaskversion
1条回答
网友
1楼 · 发布于 2024-06-10 08:22:29

您可以尝试在场景中加速docker构建并推送任务

首先docker使用更改的代码构建映像,然后docker运行新的构建映像

然后docker测试你的图像,最后docker推它

相关问题 更多 >