name: 自动版本发布 on: push: branches: - main jobs: create-readme: runs-on: ubuntu-latest if: "!contains(github.event.head_commit.message, 'ActionPush')" steps: - name: 安装 GitHub CLI run: | curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null sudo apt update sudo apt install gh - name: 删除本地仓库副本 env: REPO_NAME: ${{ github.event.repository.name }} run: | if [ -d "$REPO_NAME" ]; then rm -rf "$REPO_NAME" fi - name: 检出仓库 env: GITEA_TOKEN: ${{ secrets.AUTOGENERATE }} GITEA_REPO_URL: ${{ github.server_url }}/${{ github.repository }} CLEAN_REPO_URL: ${{ github.server_url }}/${{ github.repository }} run: | CLEAN_REPO_URL="${CLEAN_REPO_URL#https://}" git clone "https://${GITEA_TOKEN}@${CLEAN_REPO_URL}" . - name: 设置 Git 身份 run: | git config user.name "${{ github.actor }}" git config user.email "${{ github.actor }}@users.noreply.git.linuxacme.com" - name: 生成版本号 id: version run: | # 获取最新的 tag latest_tag=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0") # 解析主版本号、次版本号和修订号 major=$(echo $latest_tag | cut -d. -f1 | tr -d 'v') minor=$(echo $latest_tag | cut -d. -f2) patch=$(echo $latest_tag | cut -d. -f3) # 增加修订号 new_patch=$((patch + 1)) new_version="v$major.$minor.$new_patch" echo "::set-output name=version::$new_version" - name: 创建新的 tag run: | git tag ${{ steps.version.outputs.version }} git push origin ${{ steps.version.outputs.version }} - name: 创建 Release env: GITHUB_TOKEN: ${{ secrets.AUTOGENERATE }} run: | gh release create ${{ steps.version.outputs.version }} \ --title "${{ steps.version.outputs.version }} Release" \ --notes "Automatically generated release for version ${{ steps.version.outputs.version }}"