运行 Github Action 当 PR 从特定分支名称提升到特定分支名称时?

Running Github Action When PR is raised from specific branch name to specific branch name?

我们有一个 public SDK 存储库,我正在为其编写多个 github 工作流程。一个这样的工作流包括当 PR 从 develop 提升到 master 时生成一个发布 SDK(缩小,用私钥编码)。另一个这样的操作是当 PR 从 task/** 分支提升到 develop 分支时进行 运行 静态代码检查。 我尝试使用以下工作流程:

name: validate PR raised from task/** branched to develop branch
on:
  pull_request:
    branches: [ task/** ]

  pull_request_target:
    branches: [ develop ]
  ...

此代码已推送到 develop 分支。但这会在每次提出或修改 PR 时触发工作流两次,表明该操作是 运行 'OR' 配置。我只想在 'AND' 条件下 运行 此工作流程一次(即当源分支为 task/** 且目标分支为 develop 时)

对于我的第一个用例,只有内部开发人员才能触发生成构建非常重要。那么是否可以 运行 特定目标和源分支的操作​​?

您可以触发对基本分支的拉取请求的工作流,并进一步将作业细化为 运行 基于 head 分支。因此,您可以使用 github.head_ref and evaluate it in the if conditional 中提供的信息。因此,只要表达式不匹配,作业就会被跳过。以下是符合您描述的两个工作流程:

build-sdk.yml

name: Build-SDK

on:
  pull_request:
    branches: [ master ]

jobs:
  build-sdk:
    if: github.head_ref == 'develop'
    runs-on: ubuntu-latest  
    steps:
      - run: echo "Build SDK..."

validate.yml:

name: Validate

on:
  pull_request:
    branches: [ develop ]

jobs:
  validate:
    if: startsWith(github.head_ref, 'task/')
    runs-on: ubuntu-latest  
    steps:
      - run: echo "Validate..."