微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Azure Devops 管道在 ci 和 dev 部署阶段之间调用单独的 e2e 存储库

如何解决Azure Devops 管道在 ci 和 dev 部署阶段之间调用单独的 e2e 存储库

我有一个用于具有多个阶段的项目的 yaml 构建管道,它运行 build_and_test,然后如果成功则运行 ci_deployment,然后是 dev_deployment 等。我想在 CI 和 DEV 之间添加一个运行单独 repos 管道的阶段,在此如果它是一个 ReadyApi 存储库,它将针对 CI 环境运行 api 测试,因此如果它失败,我们会阻止构建进行到 DEV。

当我运行该管道时,我有 readyApi 管道来针对环境运行测试,但我不知道如何将它绑定到我的其他管道的中间阶段。

所以我的问题是我如何编写舞台来运行一个单独的管道,对于使用 yaml 来说是非常新的,因此任何有关此方面的帮助或可以帮助我理解的资源都将不胜感激。

ReadyApi 管道:

---
trigger:
  batch: false
  branches:
    include:
    - trunk
pool:
  name: OnPrem TestAgents
  demands: TestRunner -equals ReadyAPI

steps:
- script: |
   powershell 1 | "C:\Program Files (x86)\Java\jre1.8.0_241\bin\java.exe" -jar "C:\ready-api-license-manager\ready-api-license-manager-1.3.2.jar" -s licenseServerUrl
   echo alma
  displayName: 'Command Line Script'


- task: SoapUIProForAzureDevOpsTask@1
  displayName: 'SoapUI Pro for Azure DevOps'
  inputs:
    project: 'ReadyAPI'
    testSuite: API
    projectPassword: 'unencryptkey'


- task: PublishTestResults@2
  displayName: 'Publish Test Results **/*.xml'
  inputs:
    testResultsFiles: '**/*.xml'
    searchFolder: '$(Common.TestResultsDirectory)'
    mergeTestResults: true
    failTaskOnFailedTests: true

我要更新的主要构建管道:

---
trigger:
  batch: false
  branches:
    include:
    - trunk
pool: "poolName"

variables:
  buildMajor: 1
  buildMinor: 3
stages:
- stage: build_and_test
  displayName: Build and Test
  variables:
    azureResourceGroup: 
    azureInfrastructureStateStorageAccount: 
    environmentName: ci
  jobs:
  - job: build_image
  - job: run_unit_test
  - job: run_component_test
  - job: build_and_push_container
   
- stage: ci_deployment
  variables:
    deployment_name: $(serviceName)
    namespace: ci
    environmentName: ci
    buildid: $(buildVersion).$(Build.BuildNumber).$(Build.sourceVersion)
    minReplicas: 1
    maxReplicas: 5
  dependsOn: build_and_test
  jobs:
  - deployment: deploy_to_ci
    environment: ci
    displayName: Deploy to ci
    strategy:
      runOnce:
        deploy:
          steps:
          - template: pipelines/azure-pipelines-deploy.yaml
            parameters:
              environmentName: $(environmentName)
              aadPodIdentityName: $(aadPodIdentityName)
              appConfigName: $(appConfigName)
              keyvaultName: $(keyvaultName)
- stage: dev_deployment
  variables:
    deployment_name: $(serviceName)
    namespace: dev
    environmentName: dev
    buildid: $(buildVersion).$(Build.BuildNumber).$(Build.sourceVersion)
    minReplicas: 3
    maxReplicas: 10
  dependsOn: ci_deployment
  jobs:
  - deployment: deploy_to_dev
    environment: dev
    displayName: Deploy to dev
    strategy:
      runOnce:
        deploy:
          steps:
          - template: pipelines/azure-pipelines-deploy.yaml
            parameters:
              environmentName: $(environmentName)
              aadPodIdentityName: $(aadPodIdentityName)
              appConfigName: $(appConfigName)
              keyvaultName: $(keyvaultName)

解决方法

如果您想阻止继续进行原始管道,我建议您使用此扩展程序 Trigger Build Task

您可以在此处在 ci_deploymentdev_deployment 之间的阶段定义触发器,以便它等待您的测试成功运行:

- stage: ci_tests
  dependsOn: ci_deployment
  jobs:
  - job:
    steps:
    - task: TriggerBuild@3
      displayName: 'Trigger a new build of Validate-BuildVariable Update'
      inputs:
        buildDefinition: 'Your build name'
        useSameBranch: false
        branchToUse: master
        waitForQueuedBuildsToFinish: true
        authenticationMethod: 'OAuth Token'
        password: $(System.AccessToken)
- stage: dev_deployment
  .....
  dependsOn: ci_tests

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。