我可以在 github 工作流中有条件地运行一些作业,例如仅在特定触发器上运行吗?

我有构建和发布作业的工作流程。

我想在推送和拉取请求触发器上运行构建作业,但仅在推送时发布。可能吗?

lidongmei0530 回答:我可以在 github 工作流中有条件地运行一些作业,例如仅在特定触发器上运行吗?

是的,对于触发工作流运行的 push 指令有单独的 pull_requeston: 事件。

因此,您的 build.yml 工作流程将具有

on:
  push:
  pull_request:

这会在推送和拉取请求时触发它。

您的 publish.yml 工作流程将具有

on:
  push:
    branches
      - master

只会在推送时触发。

您可以阅读有关触发器设置 here 的更多信息。

,

是的,这是可能的:

on: [push,pull_request]

jobs:
  Build:
    runs-on: ubuntu-latest
    steps:
      [...]

  Publish:
    runs-on: ubuntu-latest
    if: ${{ github.event_name == 'push' }}
    steps:
      [...]

工作流将在 pushpull_request 事件上运行。由于 Build 作业没有任何 if 语句或依赖项,它将始终运行。另一方面,Publish 只有在触发工作流的事件是 push 时才会运行。

我在这里猜测,但如果两个作业必须依次运行,一个接一个地运行,您应该改用这种形式:

on: [push,pull_request]

jobs:
  build_and_push:
    runs-on: ubuntu-latest
    steps:
      - name: Build
        run: [...]

      - name: Publish
        if: ${{ github.event_name == 'push' }}
        run: [...]

作业在不同的机器上独立运行。您将需要特殊操作来传递文件。通过在同一作业中使用步骤,您可以确保两个步骤按顺序运行,并且第一步创建的文件可供第二步使用。

本文链接:https://www.f2er.com/868940.html

大家都在问