ActionDemo/.gitea/workflows/AutoRelease.yaml
iorebuild b1b6e929eb
All checks were successful
自动版本发布 / AutoRelease (push) Successful in 8s
Release v1.6.2 测试生成readme.md
2025-04-12 21:25:04 +08:00

249 lines
10 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

name: 自动版本发布
on:
push:
branches:
- main
jobs:
AutoRelease:
# 如果有Release标签则运行jobs
if: "contains(github.event.head_commit.message, 'Release')"
# 工作在ubuntu-latest系统中
runs-on: ubuntu-latest
# 以下是steps
steps:
- name: 检出仓库
uses: https://git.linuxacme.com/iorebuild/checkout@v4
with:
fetch-depth: 0
# 启用子模块支持
submodules: false
- name: 设置环境变量
id: ActionEnv
run: |
# 正确的变量赋值
UserName="${{ github.actor }}"
UserEmail="${{ github.actor }}@users.noreply.github.com"
GitRepo="${{ github.repository }}"
ServerUrl="$GITEA_SERVER_URL"
# 将变量设置为步骤输出
echo "ENV_USER_NAME=$UserName" >> $GITHUB_OUTPUT
echo "ENV_USER_EMAIL=$UserEmail" >> $GITHUB_OUTPUT
echo "ENV_REPO_NAME=$GitRepo" >> $GITHUB_OUTPUT
echo "ENV_SERVER_URL=$ServerUrl" >> $GITHUB_OUTPUT
- name: 检查环境变量
run: |
echo "用户名 = ${{ steps.ActionEnv.outputs.ENV_USER_NAME }}"
echo "邮箱= ${{ steps.ActionEnv.outputs.ENV_USER_EMAIL }}"
echo "仓库名 = ${{ steps.ActionEnv.outputs.ENV_REPO_NAME }}"
echo "服务器URL = ${{ steps.ActionEnv.outputs.ENV_SERVER_UEL }}"
# # git config user.name "$CURRENT_USER_NAME"
# # git config user.email "$CURRENT_USER_EMAIL"
# # echo "Name = $CURRENT_USER_NAME"
# # echo "Email = $CURRENT_USER_EMAIL"
# - name: 替换软件源为国内软件源USTC
# run: |
# cat /etc/os-release
# sudo rm -f /etc/apt/sources.list
# sudo rm -f /etc/apt/sources.list.d/*
# sudo tee /etc/apt/sources.list <<EOF
# deb http://mirrors.ustc.edu.cn/ubuntu/ noble main restricted universe multiverse
# deb-src http://mirrors.ustc.edu.cn/ubuntu/ noble main restricted universe multiverse
# deb http://mirrors.ustc.edu.cn/ubuntu/ noble-security main restricted universe multiverse
# deb-src http://mirrors.ustc.edu.cn/ubuntu/ noble-security main restricted universe multiverse
# deb http://mirrors.ustc.edu.cn/ubuntu/ noble-updates main restricted universe multiverse
# deb-src http://mirrors.ustc.edu.cn/ubuntu/ noble-updates main restricted universe multiverse
# deb http://mirrors.ustc.edu.cn/ubuntu/ noble-backports main restricted universe multiverse
# deb-src http://mirrors.ustc.edu.cn/ubuntu/ noble-backports main restricted universe multiverse
# EOF
# - name: 从提交信息提取版本号
# id: extract_version
# run: |
# # 从提交信息中提取 vX.X.X 格式的版本号
# VERSION=$(echo "${{ github.event.head_commit.message }}" | grep -oE 'v[0-9]+\.[0-9]+\.[0-9]+')
# echo "version=$VERSION" >> $GITHUB_OUTPUT
# echo "提取到的版本号: $VERSION"
# - name: 验证版本号
# run: |
# if [ -z "${{ steps.extract_version.outputs.version }}" ]; then
# echo "::error::提交信息中未找到有效的版本号 (示例: 'Release v1.0.5')"
# exit 1
# fi
# echo "${{ steps.extract_version.outputs.version }}"
# - name: 创建并推送标签
# run: |
# git tag -a ${{ steps.extract_version.outputs.version }} -m "Release ${{ steps.extract_version.outputs.version }}"
# git push origin ${{ steps.extract_version.outputs.version }}
# - name: 查找第1个.bin 文件
# id: find-bin-files-1
# run: |
# BIN_FILES=$(find ./Bin -name "*.bin" -print0 | tr '\0' ',')
# BIN_FILES=${BIN_FILES%,}
# echo "bin_files=$BIN_FILES" >> $GITHUB_OUTPUT
# echo "bin_files=$BIN_FILES"
# - name: 查找第2个.bin 文件
# id: find-bin-files-2
# run: |
# BIN_FILES=$(find ./Bin1 -name "*.bin" -print0 | tr '\0' ',')
# BIN_FILES=${BIN_FILES%,}
# echo "bin_files=$BIN_FILES" >> $GITHUB_OUTPUT
# - name: 查找第3个.bin 文件
# id: find-bin-files-3
# run: |
# BIN_FILES=$(find ./Bin2 -name "*.bin" -print0 | tr '\0' ',')
# BIN_FILES=${BIN_FILES%,}
# echo "bin_files=$BIN_FILES" >> $GITHUB_OUTPUT
# - name: 获取上次发布标签
# id: get-previous-tag
# run: |
# PREVIOUS_TAG=$(git tag --sort=-creatordate | sed -n '2p')
# if [ -z "$PREVIOUS_TAG" ]; then
# PREVIOUS_TAG="HEAD~1" # 如果没有上次标签,使用上一次提交
# fi
# echo "previous_tag=$PREVIOUS_TAG" >> $GITHUB_OUTPUT
# echo "$PREVIOUS_TAG"
# - name: 获取提交记录
# id: get-commit-log
# run: |
# COMMIT_LOG=$(git log ${{ steps.get-previous-tag.outputs.previous_tag }}..HEAD --pretty=format:"- %s (%h)" | tr '\n' '\r')
# echo "commit_log=$COMMIT_LOG" >> $GITHUB_OUTPUT
# echo "commit_log=$COMMIT_LOG"
# - name: 解析Release标题
# id: parse-release
# run: |
# commit_message="${{ github.event.head_commit.message }}"
# title=$(echo "$commit_message" | cut -d ' ' -f 3-)
# if [ -z "$title" ]; then
# echo "未在提交信息中找到 Release 标题。"
# title="default_title"
# fi
# # 使用新语法设置输出
# echo "title=$title" >> $GITHUB_OUTPUT
# echo "title=$title"
# - name: 获取最终Release信息
# run: |
# echo "Version = ${{ steps.extract_version.outputs.version }}"
# echo "Repo = ${{ github.server_url }}/${{ github.repository }}"
# echo "TagName = ${{ steps.extract_version.outputs.version }}"
# echo "ReleaseName = ${{ steps.parse-release.outputs.title }}"
# echo "Body = ${{ steps.get-commit-log.outputs.commit_log }}"
# - name: 创建Gitea发布
# uses: https://git.linuxacme.com/iorebuild/gitea-release-action@main
# with:
# gitea_token: ${{ secrets.AUTOGENERATE }}
# gitea_instance_url: ${{ github.server_url }}
# repository: ${{ github.repository }}
# name: ${{ steps.parse-release.outputs.title }}
# tag_name: ${{ steps.extract_version.outputs.version }}
# body: |
# ${{ steps.get-commit-log.outputs.commit_log }}
# draft: false
# prerelease: false
# files: |
# ${{ steps.find-bin-files-1.outputs.bin_files }}
# ${{ steps.find-bin-files-2.outputs.bin_files }}
# ${{ steps.find-bin-files-3.outputs.bin_files }}
# AutoREADME.md:
# # 工作在ubuntu-latest系统中
# runs-on: ubuntu-latest
# # 以下是steps
# steps:
# - name: 检出仓库
# uses: https://git.linuxacme.com/iorebuild/checkout@v4
# with:
# fetch-depth: 0
# # 启用子模块支持
# submodules: false
# - name: 设置环境变量
# run: |
# git config user.name "$CURRENT_USER_NAME"
# git config user.email "$CURRENT_USER_EMAIL"
# echo "Name = $CURRENT_USER_NAME"
# echo "Email = $CURRENT_USER_EMAIL"
# - name: 替换软件源为国内软件源USTC
# run: |
# cat /etc/os-release
# sudo rm -f /etc/apt/sources.list
# sudo rm -f /etc/apt/sources.list.d/*
# sudo tee /etc/apt/sources.list <<EOF
# deb http://mirrors.ustc.edu.cn/ubuntu/ noble main restricted universe multiverse
# deb-src http://mirrors.ustc.edu.cn/ubuntu/ noble main restricted universe multiverse
# deb http://mirrors.ustc.edu.cn/ubuntu/ noble-security main restricted universe multiverse
# deb-src http://mirrors.ustc.edu.cn/ubuntu/ noble-security main restricted universe multiverse
# deb http://mirrors.ustc.edu.cn/ubuntu/ noble-updates main restricted universe multiverse
# deb-src http://mirrors.ustc.edu.cn/ubuntu/ noble-updates main restricted universe multiverse
# deb http://mirrors.ustc.edu.cn/ubuntu/ noble-backports main restricted universe multiverse
# deb-src http://mirrors.ustc.edu.cn/ubuntu/ noble-backports main restricted universe multiverse
# EOF
# - name: 如果有README文件存在则删除掉
# run: |
# if [ -f "README.md" ]; then
# rm README.md
# echo "README.md has been removed."
# else
# echo "README.md does not exist."
# fi
# - name: 添加工程名字到README.md
# run: |
# REPO_NAME="ActionDemo"
# if [ -f "README.md" ]; then
# TEMP=$(cat README.md)
# echo "$REPO_NAME" > README.md
# echo "$TEMP" >> README.md
# else
# echo "$REPO_NAME" > README.md
# fi
# - name: Fetch Gitea Releases
# id: fetch-releases
# run: |
# # 使用 Gitea API 获取所有 Release 信息
# releases=$(curl -s -H "Authorization: token $GITEA_TOKEN" "$GITEA_API_URL/repos/$GITEA_OWNER/$GITEA_REPO/releases")
# # 将 JSON 数据解析为数组
# releases_array=$(echo "$releases" | jq -c '.[]')
# # 按发布时间排序
# sorted_releases=$(echo "$releases_array" | jq -s 'sort_by(.published_at)')
# # 生成 Markdown 内容
# markdown_content="# Releases\n\n"
# while read -r release; do
# tag_name=$(echo "$release" | jq -r '.tag_name')
# published_at=$(echo "$release" | jq -r '.published_at')
# body=$(echo "$release" | jq -r '.body')
# markdown_content+=$(printf "## %s (%s)\n\n%s\n\n" "$tag_name" "$published_at" "$body")
# done <<< "$sorted_releases"
# # 将内容写入 README.md
# echo "$markdown_content" > README.md
# - name: 提交和推送代码
# run: |
# git add README.md
# git commit -m "Update README.md"
# git push https://${{ secrets.AUTOGENERATE }}@git.linuxacme.com/${{ github.repository }}