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

标签 github github-actions

我们有一个公共(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/

相关文章:

firebase - 将环境变量部署到 Firebase 托管

Git 将两个相似的存储库 merge 为一个(都增加了冲突)

git - 将多个提交(中间有 merge )从 master 移出到单独的分支

git - 使用 http 代理进行 git 存储库身份验证

git - npm install,缺少node_modules文件夹

go - 将 Go beta 版本与 GitHub Actions 结合使用

github - 如何在Github Actions工作流程中缓存Android NDK?

replace - GITHUB ACTIONS 替换字符串中的字符

github-actions - 检查环境变量是否为空

ruby-on-rails-3 - 博客集成到现有应用程序中