我有构建和发布工作的工作流。
我想在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:
[...]
工作流将在push
和pull_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:
指令有单独的push
和pull_request
事件,将触发工作流运行。
所以,你的build.yml
工作流将有
on:
push:
pull_request:
将触发它的推和拉请求。
您的publish.yml
工作流将具有
on:
push:
branches
- master
只在push时触发。
你可以在这里阅读更多关于触发器设置的信息。