我们有一个公共(public) SDK 存储库,我正在为其编写多个 github 工作流程。一个这样的工作流程包括当 PR 从 develop
提升到 master
时生成一个 Release 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 时触发工作流两次,表明该操作正在使用“或”配置运行。我只想在“AND”条件下运行此工作流一次(即当源分支为 task/**
且目标分支为 develop
时)
对于我的第一个用例,只有内部开发人员才能触发生成构建非常重要。那么是否可以针对特定目标和源分支运行操作?
最佳答案
您可以触发对基本分支的拉取请求的工作流,并进一步细化要基于 head 分支运行的作业。因此,您可以使用 github.head_ref
中提供的信息并在 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..."
验证.yml:
name: Validate
on:
pull_request:
branches: [ develop ]
jobs:
validate:
if: startsWith(github.head_ref, 'task/')
runs-on: ubuntu-latest
steps:
- run: echo "Validate..."
关于github - 运行 Github Action 当 PR 从特定分支名称提升到特定分支名称时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71481578/