在我们的QA(想想"stage"(环境的候选发布管道中,我们使用vmImage构建我们的docker容器,然后将其推送到我们的Non-Prod注册表。
pool:
vmImage: "ubuntu-latest"
steps:
- task: pseudo-code: ## get everything prepped for buildAndPush
- task: Docker@2
inputs:
containerRegistry: "Our Non-Prod Registroy"
repository: "apps/app-name"
command: "buildAndPush"
Dockerfile: "**/Dockerfile"
tags: |
$(Build.SourceBranchName)
这些是发布候选者。一旦代码被批准发布,我们希望将相同的容器推送到我们的生产注册中心;然而,我们不知道如何在这个框架中做到这一点。看来我们只有两个选择:
- 稍后在不同的管道运行中重建它,这将把它推送到我们的生产注册表
- 将每个候选发布容器推送到我们的生产注册中心
这两个选项我都不喜欢。我想要的是一种将容器保留在某个地方的方法,然后在我们决定要发布它时将其推送到我们的生产注册中心。
我们该怎么做?
您实际上可以
- 将docker映像推送到非生产注册表
- 一旦你的它被批准发布(我不知道你在你的管道上说这句话到底是什么意思(,你就可以(请检查这个主题(
您可以提取图像,对其进行标记并将其推送到新的注册表。
docker pull old-registry/app
docker tag old-registry/app new-registry/app
docker push new-registry/app
你们也可以在这里看看上面的例子。