如何在同一GitHub工作流中为作业设置不同的条件?

如何在同一GitHub工作流中为作业设置不同的条件?,github,github-actions,Github,Github Actions,我希望在推送到GitHub时构建我的项目,并且只在master分支上发布构建工件 目前,我正在不同的工作流文件中执行此逻辑: #build.yaml on:[推拉请求] 工作: 建造: 步骤: #建造。。。 -用途:操作/上传-artifact@v2 #上传构建工件 #release.yaml 关于: 推送: 分支机构: -主人 工作: 建造: 步骤: #建造。。。 -用途:操作/上传-artifact@v2 #上传构建工件 发布: 步骤: -用途:操作/下载-artifact@v2 #下载构

我希望在推送到GitHub时构建我的项目,并且只在
master
分支上发布构建工件

目前,我正在不同的工作流文件中执行此逻辑:

#build.yaml
on:[推拉请求]
工作:
建造:
步骤:
#建造。。。
-用途:操作/上传-artifact@v2
#上传构建工件
#release.yaml
关于:
推送:
分支机构:
-主人
工作:
建造:
步骤:
#建造。。。
-用途:操作/上传-artifact@v2
#上传构建工件
发布:
步骤:
-用途:操作/下载-artifact@v2
#下载构建工件
#释放我的工件。。。
问题是,
#build…
将执行两次,并且构建代码在两个yaml文件中重复。我想知道这样的事情是否可能:

#build.yaml
on:[推拉请求]
工作:
建造:
on:[推拉请求]
步骤:
#建造。。。
-用途:操作/上传-artifact@v2
#上传构建工件
发布:
关于:
推送:
分支机构:
-主人
步骤:
-用途:操作/下载-artifact@v2
#下载构建工件
#释放我的工件。。。

您可以使用
if
条件来实现所需的结果

只需在if条件中指定所需的步骤,例如,确定
主分支中发生了事件:

if:github.ref==“refs/heads/master”
然后您的
.yml
文件将如下所示

#build.yaml
on:[推拉请求]
工作:
建造:
运行日期:ubuntu-18.04
步骤:
-用途:操作/上传-artifact@v2
#上传构建工件
发布:
运行日期:ubuntu-18.04
步骤:
-名称:条件步骤
if:github.ref==“refs/heads/master”
用途:操作/下载-artifact@v2
#下载构建工件
#释放我的工件。。。