name: nightly-release on: schedule: # 每天 UTC 时间 00:00 自动触发构建 - cron: "0 0 * * *" workflow_dispatch: jobs: create-nightly-release: runs-on: ubuntu-latest steps: - name: Check out code uses: actions/checkout@v4 with: fetch-depth: 0 # 确保获取所有历史和标签 - name: Configure Git run: | git config user.name "GitHub Actions" git config user.email "actions@github.com" - name: Get latest version and create nightly tag id: get_version run: | # 获取最新的非 nightly 版本标签 latest_version=$(git describe --tags --abbrev=0 --exclude="*-next") # 增加补丁版本号 nightly_version=$(echo $latest_version | awk -F. '{$NF = $NF + 1;} 1' | sed 's/ /./g') # 创建 nightly 标签 nightly_tag="${nightly_version}-next" echo "NIGHTLY_TAG=${nightly_tag}" >> $GITHUB_OUTPUT # 删除远程的旧 nightly tag(如果存在) git push origin :refs/tags/*-next || true # 删除本地的旧 nightly tag(如果存在) git tag -d $(git tag -l '*-next') || true # 创建新的 nightly tag git tag $nightly_tag # 强制推送新的 nightly tag git push origin $nightly_tag --force - name: Delete Old GitHub Release env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} NIGHTLY_TAG: ${{ steps.get_version.outputs.NIGHTLY_TAG }} run: | gh release delete $NIGHTLY_TAG --yes || true - name: Set up Go uses: actions/setup-go@v5 with: go-version: "1.25.1" - name: Get dependencies run: go mod download - name: GoReleaser Action uses: goreleaser/goreleaser-action@v5 with: version: v1.26.2 args: release --clean env: GITHUB_TOKEN: ${{ secrets.GORELEASER_GITHUB_TOKEN }} GORELEASER_CURRENT_TAG: ${{ steps.get_version.outputs.NIGHTLY_TAG }}