向 GitHub 报告由另一个管道触发的管道的阶段状态

问题描述 投票:0回答:1

我目前正在 Azure DevOps 中将单管道拆分为单独的

build
test
deploy
管道。以下是我设置触发器和资源的方法:

build
管道中,我有:

pr:
  branches:
    include:
      - '*'

test
管道中,设置为:

resources:
  pipelines:
    - pipeline: build
      source: foobar.build
      trigger:
        stages:
          - Publish
        tags:
          - build-success

此设置在

test
管道完成
build
阶段并标记为
Publish
后正确触发
build-success
管道。对于拉取请求以及分支构建(如主分支上的分支构建),它按预期工作。

但是,我面临一个问题,即

test
管道中不同阶段的状态不会报告回 GitHub,但此问题仅发生在拉取请求中。对于在主分支上构建的分支,状态报告可以正常工作。

我需要确保 GitHub 在拉取请求触发时准确反映

test
管道中每个阶段的状态(成功/失败)。有没有办法配置 Azure DevOps 将这些阶段状态报告回 GitHub 进行拉取请求?如果无法直接报告,我应该考虑哪些替代方案来实现此功能?

azure-devops continuous-integration azure-pipelines devops
1个回答
0
投票

根据您的描述,我创建了管道

foobar.build
foobar.test
,并引用了我的 GitHub 存储库的
master
分支中的 YAML 定义。

build.yml

trigger:
- master
# Use code from intermediate branch of PRId
pr:
  branches:
    include:
      - '*'

pool:
  vmImage: ubuntu-latest

stages:
- stage: Publish
  jobs:
  - job: PublishJob
    steps:
    - script: |
        echo "##vso[build.addbuildtag]build-success"
      displayName: Add build tag

测试.yml

trigger: none
pr: none # Prevent PR from triggering foobar.test pipeline

resources:
  pipelines:
    - pipeline: build
      source: foobar.build
      trigger:
        stages:
          - Publish
        tags:
          - build-success

steps:
- script: echo This is the downstream test pipeline
  displayName: Run downstream test pipeline

我可以重现该问题,虽然该行为似乎与触发原因无关,而是与管道消耗的源代码相关。

根据分支的

Check status
功能,它仅检查使用此分支中的代码作为资源的管道状态。我们可以看到
foobar.test
管道不受
Check status
的监控,直到
foobar.test
管道被触发。

Image

但是,当构建管道由拉取请求触发时,它将使用 PRId

中间分支
中的代码,而不是目标分支 (
master
) 中的代码。因此,源分支 (
dev
) 而不是此 PR 的目标分支将检查此管道运行的状态,并由 PR 触发运行。

Image

enter image description here

此外,PR 合并到 master

 分支后,它将通过 
Individual CI
 触发构建管道,这将处理通过 
pipeline completion
 触发测试管道。因此,构建和测试管道的运行对于合并后
master
分支的状态检查是可见的。

© www.soinside.com 2019 - 2024. All rights reserved.