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

更新GitHub Release资产后发布时间戳未更新的原因及解决方法

GitHub Actions更新Release资产后时间戳未同步的问题与解决方法

问题描述

我在GitHub上开发了一款应用,通过GitHub Actions实现二进制文件的自动化构建,对应Workflow配置如下:

name: build stable version
on:
  push:
    branches:
      - master
jobs:
  release-linux-amd64:
    name: release linux/amd64
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: wangyoucao577/go-release-action@v1.34
        with:
          github_token: ${{ secrets.REPO_TOKEN }}
          goos: linux
          goarch: amd64
          compress_assets: OFF
          overwrite: TRUE
  release-windows-amd64:
    name: release linux/amd64
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: wangyoucao577/go-release-action@v1.34
        with:
          github_token: ${{ secrets.REPO_TOKEN }}
          goos: windows
          goarch: amd64
          compress_assets: OFF
          overwrite: TRUE

我设置了两个Release:stable version和development,分别在master分支和dev分支推送时更新对应二进制文件。目前自动化构建工作正常,但二进制文件已更新的情况下,Release的时间戳仍显示为创建时的旧时间,并未同步更新。

原因分析

GitHub的Release时间戳(包括发布时间和更新时间)是基于Release本身的创建/修改动作,而非资产(Assets)的更新动作。当前使用的wangyoucao577/go-release-action仅覆盖了Release中的二进制资产,但没有触发Release本身的元数据更新,因此页面上显示的还是Release最初创建或最后一次修改元数据的时间,而非资产更新的时间。

解决方法

要让Release时间戳随资产更新同步刷新,需要在更新资产的同时,触发Release本身的更新动作。可以通过以下两种方式实现:

方式1:修改现有Action的配置

检查wangyoucao577/go-release-action的文档,确认是否有更新Release元数据的参数。部分版本的该Action支持通过设置release_name或body参数,在每次构建时更新Release的标题或描述,从而触发Release的时间戳更新。例如,在with中添加动态生成的描述:

with:
  # 保留原有参数
  github_token: ${{ secrets.REPO_TOKEN }}
  goos: linux
  goarch: amd64
  compress_assets: OFF
  overwrite: TRUE
  # 添加动态描述
  body: "Automatically built on ${{ github.event.head_commit.timestamp }}"

每次构建时,这个动态生成的描述会覆盖旧的Release描述,触发Release的更新,时间戳也会同步刷新。

方式2:添加单独的Release更新步骤

如果当前Action不支持更新元数据,可以在资产更新步骤后,添加一个调用GitHub API的步骤,手动更新Release的元数据(比如更新描述)。示例步骤如下:

# 在现有资产更新步骤后添加
- name: Get current UTC time
  id: current-time
  run: echo "time=$(date -u +'%Y-%m-%d %H:%M:%S UTC')" >> $GITHUB_OUTPUT

- name: Update Release metadata to refresh timestamp
  uses: octokit/request-action@v2.x
  with:
    route: PATCH /repos/${{ github.repository }}/releases/tags/master
    body: |
      {
        "body": "Last updated: ${{ steps.current-time.outputs.time }}"
      }
  env:
    GITHUB_TOKEN: ${{ secrets.REPO_TOKEN }}

这个步骤会调用GitHub API修改对应Release的描述,将其更新为当前UTC时间,从而触发Release的时间戳刷新。

额外提示

当前Workflow中的release-windows-amd64任务的name字段写错了,应该是release windows/amd64,建议修正避免任务名称混淆。

内容的提问来源于Stack Exchange,提问作者WoJ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:05:55