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



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

我想在push和pull请求触发器上运行Build job,但仅在push上发布。这可能吗?

这是可能的:

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: [...]

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

是的,on:指令有单独的pushpull_request事件,将触发工作流运行。

所以,你的build.yml工作流将有

on:
push:
pull_request:

将触发它的推和拉请求。

您的publish.yml工作流将具有

on:
push:
branches
- master

只在push时触发。

你可以在这里阅读更多关于触发器设置的信息。

相关内容

  • 没有找到相关文章

最新更新