gpt4 book ai didi

azure - 如何将 docker 镜像发布为 azure devops 中的工件

转载 作者:行者123 更新时间:2023-12-05 08:30:06 27 4
gpt4 key购买 nike

我正在我的 Azure 管道中构建 Docker 镜像。现在,我想根据配置参数将此镜像推送到多个 aws 帐户(dev、stage、prod)。问题是,图像在发布工件中不可用。我遇到了thisthis我研究期间的文章。我对有关保存 docker 镜像以便可以在发布工件中使用的解决方案感到困惑。我有两个具体问题:

  1. docker 构建后,如何在 Azure 管道任务中使用 docker save 命令。可用的docker任务没有此命令。
  2. 除了保存图像之外,还有其他更好的方法吗?

最佳答案

如今,编写管道的首选方式是使用 yaml。

请参阅我的代码,了解如何使用 Artifactory docker 注册表在多级管道中执行此操作。

如果我们处于 master 状态,则 MY_ADDITIONAL_TAG 也将被推送。

trigger:
- master

resources:
- repo: self

variables:
tag: '$(Build.BuildId)'

stages:
- stage: Build
displayName: Build DevOps base image
jobs:
- job: Build_and_Push
steps:
- task: Docker@2
displayName: Build
inputs:
containerRegistry: ''
repository: 'MY_REPO/IMAGE'
command: 'build'
Dockerfile: 'PATH_TO_MY_DOCKERFILE'
tags: $(tag)
- task: Bash@3
displayName: Save Docker Image
inputs:
targetType: 'inline'
script: |
docker save MY_DOCKER_REPO_IMAGE_NAME:$(tag) -o $(Pipeline.Workspace)/MY_IMAGE_FILE.tar
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Pipeline.Workspace)/MY_IMAGE_FILE.tar'
artifact: 'MY_ARTIFACT'
publishLocation: 'pipeline'
- stage: Push
displayName: Push DevOps base image
jobs:
- job: Push
steps:
- task: DownloadPipelineArtifact@2
inputs:
buildType: 'current'
artifactName: 'MY_ARTIFACT'
targetPath: '$(Pipeline.Workspace)'
- task: Bash@3
displayName: Load Docker Image
inputs:
targetType: 'inline'
script: |
docker load --input $(Pipeline.Workspace)/MY_IMAGE_FILE.tar
docker tag MY_DOCKER_REPO_IMAGE_NAME:$(tag) MY_DOCKER_REPO_IMAGE_NAME:MY_ADDITIONAL_TAG
- task: Docker@2
displayName: push development tags
inputs:
containerRegistry: 'MY_DOCKER_REGISTRY'
repository: 'MY_REPO/IMAGE'
command: 'push'
tags: |
$(tag)
- task: Docker@2
condition: eq(variables['Build.SourceBranch'], 'refs/heads/master')
displayName: push 0-devops tag
inputs:
containerRegistry: 'MY_ARTIFACT'
repository: 'MY_REPO/IMAGE'
command: 'push'
tags: |
MY_ADDITIONAL_TAG

关于azure - 如何将 docker 镜像发布为 azure devops 中的工件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66468815/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com