python - 在用于 azure 管道之前将 Docker 映像推送到注册表
问题描述
对于我在 azure-pipeline 中的测试,我想使用一个容器,然后将其推送到 Docker Hub。
其实步骤如下:
- 从注册表中提取图像
- 做测试
- 使用注册表中代码中的新提交推送新图像
问题:从注册表中提取的图像包含以前的代码,而不是我正在测试的代码。
我想做的事:
首先,使用 Docker 注册表中的新代码部署映像
然后,前面提到的步骤 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
问题是ressources对于整个管道来说是独一无二的,它会在一开始就拉取图像,而不是在我用我的最新代码构建图像之后。那么,我该怎么办?
解决方案
您可以尝试在您的场景中分散您的 docker build 和 push 任务。
首先 docker 使用更改的代码构建您的映像,然后 docker 运行您的新构建映像。
然后 docker 测试你的图像,最后 docker push 它。
推荐阅读
- reactjs - 如何通过 https API 访问 MongoDB 图集?
- vulkan - 每个 VkImageView 都需要一个 VkFramebuffer 吗?
- asp.net-core - 跨 .Net 核心 SignalR 集线器的组
- scala - Scala Ordering Using Scala 2.11 有问题,但使用 2.12 时没有问题
- excel - 如何避免 UDF 中的 ActiveCell
- javascript - React 钩子值正确呈现但未在 addEventListener 的回调函数中更新
- c - 在 C 编程中读取文件到链表
- python - pyodbc.ProgrammingError:列的定义
必须包含数据类型 - firefox - 无头 Firefox + userContent.css?
- makefile - Gnu make 有 2 个源文件目录