我有构建和发布作业的工作流程。
我想在推送和拉取请求触发器上运行构建作业,但仅在推送时发布。可能吗?
是的,对于触发工作流运行的 push
指令有单独的 pull_request
和 on:
事件。
因此,您的 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:
[...]
工作流将在 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: [...]
作业在不同的机器上独立运行。您将需要特殊操作来传递文件。通过在同一作业中使用步骤,您可以确保两个步骤按顺序运行,并且第一步创建的文件可供第二步使用。