是否可以将Azure DevOps YAML管道集成到发布管道中?

时间:2020-09-21 09:41:14

标签: azure azure-devops cypress azure-pipelines-release-pipeline

我已经定义了一个管道来运行我的赛普拉斯测试,这对于通过CRON任务运行自动化测试,或者当我们希望通过手动执行来运行自动化测试时效果很好:

schedules:
- cron: "0 6 * * *"
  displayName: Daily 6AM test run
  branches:
    include:
    - master
  always: true

strategy:
      parallel: 2

pool:
    vmImage: "ubuntu-latest"

steps:
    - task: NodeTool@0
      inputs:
          versionSpec: "12.x"
      displayName: "Install Node.js"

    - task: CacheBeta@1
      inputs:
          key: npm | $(Agent.OS) | package-lock.json
          path: /home/vsts/.npm
          restoreKeys: npm | $(Agent.OS) | package-lock.json
      displayName: Cache NPM packages
    - task: CacheBeta@1
      inputs:
          key: cypress | $(Agent.OS) | package-lock.json
          path: /home/vsts/.cache/Cypress
          restoreKeys: cypress | $(Agent.OS) | package-lock.json
      displayName: Cache Cypress binary

    - script: npm ci
      displayName: "Install NPM dependencies"

    - script: npm run cy:verify
      displayName: "Cypress verify"

    - script: npm run cy:run:staging
      displayName: "run Cypress"

    - task: PublishPipelineArtifact@0
      inputs:
          artifactName: "screenshots"
          targetPath: "cypress/screenshots"
      condition: failed()
      displayName: "Publish Screenshots (Cypress)"

    - task: PublishPipelineArtifact@0
      inputs:
          artifactName: "videos"
          targetPath: "cypress/videos"
      condition: succeededOrFailed()
      displayName: "Publish Videos (Cypress)"

    - task: PublishTestResults@2
      inputs:
          testResultsFormat: "JUnit"
          testResultsFiles: "**/test-output-*.xml"
          testRunTitle: "Cypress Test Results"
          publishRunAttachments: true
      condition: succeededOrFailed()
      continueOnError: true

但是,我们有一个用例,我们希望在生成新版本时针对新版本的管道运行赛普拉斯测试。

enter image description here

但是,我看不到将在管道中定义的YAML文件用作发布管道的“任务”的方法。

我想做的是可能的吗?

2 个答案:

答案 0 :(得分:1)

您可以安装Trigger Build Task扩展名,并从发行版中排队YAML管道:

enter image description here

答案 1 :(得分:0)

我看不到使用在管道中定义的YAML文件的方法 作为发布管道的“任务”。

对于这个问题,如果您引用在发布管道中重用yaml管道中定义的任务,恐怕这是不可能实现的。您需要将yaml管道中定义的任务一一转换为经典管道中的相应任务。

您可以选择在发布管道中创建一个任务组,以包含需要重用的这些任务,然后,当您需要重用这些任务时,只需添加此任务组。这是document

enter image description here

或者您可以将发布管道集成到到create a Multi-Stage pipeline的yaml管道中。每个阶段都描述CI / CD流程的一部分。

然后,您可以为赛普拉斯测试创建模板yaml文件。当creating a template时,您将创建一个单独的YAML文件,其中包含要重用的一组任务。要运行所有这些任务,您只需参考模板即可。如果您需要在不同的管道上运行同一组任务,并且为每个管道使用单独的YAML文件,则可以让每个YAML文件引用这些任务的模板。

关于YAML语法,请参阅this