You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在GitHub Actions工作流中筛选Git发布分支的方法

在GitHub Workflows中筛选并排序最新的release分支

完全可以实现你需要的操作,以下是具体的Workflow配置示例,通过Shell命令结合Git完成分支筛选、排序和截取:

name: 获取最新Release分支
on: [workflow_dispatch] # 可根据需求替换为push、schedule等触发条件

jobs:
  process-release-branches:
    runs-on: ubuntu-latest
    steps:
      - name: 拉取完整仓库代码
        uses: actions/checkout@v4
        with:
          fetch-depth: 0 # 必须设置为0,才能拉取所有远程分支信息

      - name: 筛选、排序并提取前5个Release分支
        id: extract_branches
        run: |
          # 1. 列出所有远程分支 → 2. 筛选release开头的分支 → 3. 移除origin/前缀 → 4. 按版本号降序排序 → 5. 取前5个
          filtered_branches=$(git branch -r | grep "origin/release-" | sed 's/origin\///' | sort -Vr | head -n 5)
          
          # 将分支列表转为换行分隔的格式,存入GitHub输出变量
          echo "latest_branches<<EOF" >> $GITHUB_OUTPUT
          echo "$filtered_branches" >> $GITHUB_OUTPUT
          echo "EOF" >> $GITHUB_OUTPUT

      - name: 输出结果
        run: |
          echo "最新的5个Release分支(降序排列):"
          echo "${{ steps.extract_branches.outputs.latest_branches }}"

关键步骤说明:

  • 拉取完整仓库:fetch-depth: 0 是必须的,默认情况下GitHub Actions只拉取当前分支的最新提交,无法获取所有远程分支信息。
  • 分支筛选与排序:
    • git branch -r:列出所有远程分支
    • grep "origin/release-":精准筛选以release-开头的远程分支
    • sed 's/origin\///':移除分支名前的origin/前缀,得到纯分支名称
    • sort -Vr:-V 参数会按版本号规则排序(自动识别yyyy.m中的数字大小),-r 表示降序排列,确保最新的分支排在最前面
    • head -n 5:截取排序后的前5个分支
  • 输出变量:将处理后的分支列表存入GITHUB_OUTPUT,方便后续步骤(比如部署)直接调用。

注意事项:

确保你的分支命名严格遵循release-yyyy.m格式(如release-2024.1、release-2024.10),sort -V才能正确识别版本顺序。如果有不符合格式的分支,可能会导致排序异常。

内容的提问来源于stack exchange,提问作者user786045

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 18:09:23