运行 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..."
我们有一个 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..."