我可以在 github 工作流程中有条件地 运行 一些作业,例如仅在特定触发器上吗?
Can I run some jobs conditionally in github workflow, e.g only on specific trigger?
我有构建和发布作业的工作流。
我想 运行 在推送和拉取请求触发器上构建作业,但仅在推送时发布。可能吗?
是的,on:
指令有单独的 push
和 pull_request
事件,将触发工作流 运行。
因此,您的 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
语句或依赖项,因此它将始终 运行。另一方面,如果触发工作流的事件是 push
.
,Publish
只会 运行
我在这里猜测,但如果两个作业都必须按顺序 运行,一个接一个,您应该改用这种形式:
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
仅在推送时触发。
您可以阅读有关触发器设置的更多信息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
语句或依赖项,因此它将始终 运行。另一方面,如果触发工作流的事件是 push
.
Publish
只会 运行
我在这里猜测,但如果两个作业都必须按顺序 运行,一个接一个,您应该改用这种形式:
on: [push, pull_request]
jobs:
build_and_push:
runs-on: ubuntu-latest
steps:
- name: Build
run: [...]
- name: Publish
if: ${{ github.event_name == 'push' }}
run: [...]
作业 运行 在不同的机器上独立运行。您将需要特殊操作来传递文件。通过在同一作业中使用 个步骤 ,您可以确保两个步骤 运行 顺序进行,并且第一步创建的文件对第二步可用。