Azure 管道 - 执行容器中的一个阶段

Azure pipeline - Execute one of the stages in a Container

我们的组织已开始迁移到 Azure。 我们有 Azure 管道模板,在 vmImage: 'ubuntu-18.04' 上 运行s 签出、构建和部署 个阶段。 我们的计划是在模板中引入 “测试” 阶段,在容器中引入 运行 测试。

问题:

有人可以解释一下吗?

非常感谢!

When the entire pipeline is running on vmImage, is it possible to run one of the stages (Test) in Container?

在 Azure Devops Yaml Pipeline 中,您可以在作业级别指定 container

然后作业可以 运行 在目标容器上。

这里是a doc的详细信息。

How to copy build artifacts from vmImage to run tests in Container?

在前一阶段,您可以使用 Publish Build Artifacts task.

发布构建工件

在阶段(运行容器中的作业),您可以使用 Download Build Artifacts 任务将工件下载到容器中。

最后,您可以添加测试它的步骤。

这是我的示例:

resources:
  containers:
  - container: python
    image: python:3.8
trigger:
- none

   
stages:

  - stage: artifacts
    pool:
      vmimage:  ubuntu-latest
    jobs:
      - job: test123
        steps:
        - task: PublishBuildArtifacts@1
          inputs:
            PathtoPublish: '$(Build.Sourcesdirectory)'
            ArtifactName: 'drop'
            publishLocation: 'Container'
        - script: echo $(System.ArtifactsDirectory)

  - stage: testcontainer
    jobs:
      - job: test123
        container:  python
    
        steps:
        - task: DownloadBuildArtifacts@0
          inputs:
            buildType: 'current'
            downloadType: 'single'
            artifactName: 'drop'
            downloadPath: '$(System.ArtifactsDirectory)'

        - script: |
            echo $(System.ArtifactsDirectory)
          displayName: 'Run a multi-line script'
 

注意:容器镜像来自DockerHub、Azure Container Registry或其他私有容器注册表。