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

GitHub Actions如何复用构建逻辑在新建标签时自动上传Release构建产物

实现方案

你完全不需要新建独立工作流重复编写构建逻辑,直接修改现有CI配置即可100%复用已有的依赖安装、编译、校验流程,仅需两处改动就能实现打tag自动发布Release并上传构建产物的需求。


步骤1:扩展工作流触发规则

在现有on配置块中新增tag推送的触发匹配,修改后触发配置如下:

on:
  push:
    branches: [ master ]
    tags:
      - 'v*' # 匹配v开头的版本tag,可根据你的tag命名规则自行调整匹配规则
  pull_request:
  workflow_dispatch:

步骤2:新增条件触发的Release发布步骤

在现有build任务的末尾新增两个步骤,通过条件判断让这两个步骤仅在tag推送触发工作流时执行,普通master分支推送、PR触发时不会运行这部分逻辑,不会影响原有CI校验流程。
新增的配置如下,注意要放在原有的upload binaries步骤之后:

- name: Create version release
        id: create_release
        if: startsWith(github.ref, 'refs/tags/')
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref_name }}
          release_name: Release ${{ github.ref_name }}
          draft: false
          prerelease: false

      - name: Upload build assets to release
        if: startsWith(github.ref, 'refs/tags/')
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: build/bin/
          asset_name: build-output-${{ github.ref_name }}.tar.gz
          asset_content_type: application/gzip

说明

  • 原有所有CI逻辑(依赖安装、编译、代码格式校验、普通构建产物上传)在所有触发场景下都会正常执行,没有冗余重复代码
  • 条件判断startsWith(github.ref, 'refs/tags/')会自动识别当前触发源是否为tag推送,非tag场景下发布步骤会自动跳过
  • 原配置中的actions/upload-artifact@v3是将产物上传到工作流工件存储,供工作流运行详情页下载,和Release附件上传互不冲突
  • 如果后续需要拆分多工作流复用逻辑,也可以将构建逻辑抽为可复用工作流,但对当前场景来说,直接加条件步骤是维护成本最低的实现方式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:45:37