name: goreleaser on: push: branches: - '*' # 我们不需要在tags上触发 # tags: # - '*' permissions: contents: write jobs: goreleaser: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up Go uses: actions/setup-go@v5 with: go-version-file: go.mod - name: Set Release Version id: set_version run: | # 使用日期时间戳作为版本号 RELEASE_DATE=$(date +'%Y%m%d%H%M%S') echo "RELEASE_DATE=$RELEASE_DATE" >> $GITHUB_ENV # 创建语义化版本标签 v1.0.0-yyyyMMddHHmmss echo "VERSION=v1.0.0-$RELEASE_DATE" >> $GITHUB_ENV echo "Release date set to: $RELEASE_DATE" # 创建或更新标签,指向当前提交 - name: Update Git Tag run: | # 删除远程的latest标签(如果存在) git push origin :refs/tags/latest || true # 创建新的语义化标签 git tag -f $VERSION git tag -f latest # 推送标签到远程 git push -f origin $VERSION git push -f origin latest - name: Run GoReleaser uses: goreleaser/goreleaser-action@v6 with: distribution: goreleaser version: latest args: release --clean env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Create/Update GitHub Release uses: softprops/action-gh-release@v1 with: name: "最新构建" tag_name: latest files: ./dist/*.tar.gz draft: false prerelease: false env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}