运行 在 github 操作中创建拉取请求时的特定作业

Run particular jobs while creating pull request in githubactions

我已经使用 GitHub 操作实现了 ci/cd。在 ci/cd 中,我有三个作业,当我想发布一个标签时,我想构建这三个作业,当我向特定分支提出拉取请求时,只应执行两个作业以进行健康检查。例如,我有一个功能分支,我想将这个功能分支合并到 devel 分支。当我提出 PR 应该 运行 只有两个职位。我怎样才能做到这一点?下面是我的示例代码。

name: CI

on:
  pull_request:
    branches:
      - master
      - devel
  push:
    tags:
      - '*'
jobs:
  build:
    name: build
    runs-on: self-hosted
    steps:
       --------------
   deploy:
    name: deploy
    runs-on: self-hosted
    steps:
      ------------
   automation-test:
     name: test
     runs-on: self-hosted
     steps:
       ------------
 

在这里,当我提出 PR 时,我想 运行 构建和自动化测试作业。

这里有两个选择:

  1. 具有单独的工作流文件,运行 用于正确的分支。
  2. 在你的工作中使用条件

第一个选项可能就是您想要的。这里唯一的问题是,如果一项工作的输出被用于另一项工作,但听起来您并非如此。我建议您将 yaml 工作流程简单地分解为两个单独的工作流程:

name: CI

on:
  pull_request:
    branches:
      - master
  push:
    tags:
      - '*'
jobs:
  build:
    name: build
    runs-on: self-hosted
    steps:
       --------------
   deploy:
    name: deploy
    runs-on: self-hosted
    steps:
      ------------
   automation-test:
     name: test
     runs-on: self-hosted
     steps:
       ------------
name: PR Builder

on:
  pull_request:
    branches:
      - devel
jobs:
    whatever_testing_jobs_you_like:

第二个选项可能如下所示:

name: CI

on:
  pull_request:
    branches:
      - master
  push:
    tags:
      - '*'
jobs:
  build:
    name: build
    runs-on: self-hosted
    steps:
       --------------
   deploy:
    if: "github.ref != devel" # you might tweak the condition based on your needs
    name: deploy
    runs-on: self-hosted
    steps:
      ------------
   automation-test:
     name: test
     runs-on: self-hosted
     steps:
       ------------

这些上下文值/条件是well documented