pr在打开github PR时未触发(Azure管道YAML)

9avjhtql  于 2023-10-22  发布在  Git
关注(0)|答案(4)|浏览(125)

目标

我是Azure和管道的新手,我正在尝试从Azure中的pr触发管道。repo在Github上。
下面是管道yaml:管道.yml

trigger: none # I turned this off for to stop push triggers (but they work fine)

pr:
  branches:
    include:
      - "*" # This does not trigger the pipeline 

stages:
  - stage: EchoTriggerStage
    displayName: Echoing trigger reason
    jobs:
      - job: A
        steps:
          - script: echo 'Build reason::::' $(Build.Reason)
            displayName: The build reason

# ... some more stages here triggered by PullRequests....
# ... some more stages here triggered by push (CI)....

Github上的pr看起来像这样:

问题

但是,当push触发器工作正常时,管道不会被触发。
我读了文档,但我不明白为什么这不起作用。
当我通过git push触发它时,管道工作得非常好。然而,当我试图用Github的PR触发它时,什么也没有发生。在上面的代码中,我尝试关闭推送触发器,并允许所有公关触发管道。还是没动静
我还不想删除管道并创建一个新管道。

更新

我更新了yaml文件,使其按照下面的建议工作。由于管道现在实际上是通过一个push命令运行的,所以yaml文件的其余细节都不相关,因此被忽略了。

我尝试过的其他事情

  • 在Github上打开新PR
  • 关闭/重新打开Github上的PR
  • 在Github上更改现有PR

->仍然没有触发管道。

knsnq2tg

knsnq2tg1#

你的管道出了点问题。应该是这样的:

trigger: none # turned off for push

pr:
  - feature/automated-testing

steps:
- script: echo "PIPELINE IS TRIGGERED FROM PR"

请把这个兑换

- stage:
      - script: echo "PIPELINE IS TRIGGERED FROM PR"

- stage:
    jobs:
    - job:
      steps:
      - script: echo "PIPELINE IS TRIGGERED FROM PR"

编辑

我用了你的管道

trigger: none # I turned this off for to stop push triggers (but they work fine)

pr:
  branches:
    include:
      - "*" # This does not trigger the pipeline 

stages:
  - stage: EchoTriggerStage
    displayName: Echoing trigger reason
    jobs:
      - job: A
        steps:
          - script: echo 'Build reason::::' $(Build.Reason)
            displayName: The build reason

# ... some more stages here triggered by PullRequests....
# ... some more stages here triggered by push (CI)....

一切似乎都很顺利
这里是PR,这里是build for it

我没有这样做,但你可以尝试通过分支策略来强制执行。要做到这一点,请转到存储库设置,然后如下所示:

noj0wjuj

noj0wjuj2#

解决方案是转到Azure管道->编辑管道->触发器->启用PR验证。

vwhgwdsa

vwhgwdsa3#

您可以按照下面的步骤来排除管道故障。
首先,你需要确保管道是从Azure DevOps Portal上的yaml文件创建的。请参见本教程中的示例。
2,下面的部分你的yaml文件是不正确的. - script任务应该在steps部分下。
变更:

stages:
- stage:
    - script: echo "PIPELINE IS TRIGGERED FROM PR"

收件人:

stages:
 - stage:
   jobs:
   - job:
     step:
     - script: echo "PIPELINE IS TRIGGERED FROM PR"

3,我看到你在yaml文件中使用了模板。请确保模板yaml文件格式正确。举例来说:
您的dockerbuild-dashboard-client.yml模板是一个步骤模板。您需要确保其内容如下所示:

parameters:
...
steps:
- script: echo "task 1"
- script:  echo "task 2"

你的webapprelease-dashboard-dev-client.yml是一个工作模板。其内容应如下所示:

parameters:
  name: ''
  pool: ''
  sign: false

jobs:
- job: ${{ parameters.name }}
  pool: ${{ parameters.pool }}
  steps:
  - script: npm install
  - script: npm test
  - ${{ if eq(parameters.sign, 'true') }}:
    - script: sign

4、在Azure DevOps Portal上创建管道后。您可以手动运行此管道,以确保yaml文件中没有错误,并且管道可以成功执行。
5、如果以上都被勾选,但PR触发器仍然不工作。您可以尝试删除在Azure devops门户上创建的管道(在第一步中创建),并从yaml文件重新创建新管道。

6mzjoqzu

6mzjoqzu4#

非常糟糕。我在Azure上遇到了很多问题。
关闭Limit building pull requests from forked GitHub repositories使能的管道PR触发器。
在您的devops组织中:

这是非常糟糕的,因为据推测,这个设置是从一个分叉的回购PR,而不是从同一个分支的检查。

相关问题