From 2671ed85bd9e798de27bc8d80d86276d3fde7ad8 Mon Sep 17 00:00:00 2001 From: Lixeer <1612655510@qq.com> Date: Fri, 5 Jun 2026 02:16:14 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8C=88=20=E6=B7=BB=E5=8A=A0=E5=8F=91?= =?UTF-8?q?=E7=89=88=E5=B7=A5=E4=BD=9C=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/release.yml | 137 ++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..2212726 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,137 @@ +name: Auto Release + +on: + workflow_dispatch: # 支持在 GitHub 网页上手动点击按钮一键发版 + +permissions: + contents: write # 必须赋予写权限以允许创建 Tag 和 Release + +jobs: + release: + runs-on: ubuntu-latest + + steps: + # 1. 检出代码(深度设为 0 以获取完整 Git 历史计算版本) + - name: Checkout Code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + # 2. 自动计算下一个版本号并打 Tag + - name: Calculate Next Version Tag + id: tag + run: | + git fetch --tags + # 寻找最新符合 v3.* 格式的 Tag + LATEST_TAG=$(git tag -l "v3.*" --sort=-v:refname | head -n 1) + + if [ -z "$LATEST_TAG" ]; then + NEW_TAG="v3.0.0" + else + VERSION=${LATEST_TAG#v} # 去除 v 前缀 -> 3.0.0 + IFS='.' read -r -a parts <<< "$VERSION" + MAJOR=${parts[0]} + MINOR=${parts[1]} + PATCH=${parts[2]} + NEW_PATCH=$((PATCH + 1)) + NEW_TAG="v${MAJOR}.${MINOR}.${NEW_PATCH}" + fi + + echo "NEW_TAG=$NEW_TAG" >> $GITHUB_ENV + + # 配置 Git 机器人账户并打上新 Tag 推送 + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git tag $NEW_TAG + git push origin $NEW_TAG + + # 3. 设置 .NET SDK + - name: Setup .NET SDK + uses: actions/setup-dotnet@v4 + with: + dotnet-version: '8.0.x' + + # 4. 下载并解压资源文件到项目的 Content 目录中 + - name: Download and Extract Game Content + run: | + mkdir -p src/ValleyServer/Content + curl -L -o content.zip http://mzdkk.cn/pack + unzip -q content.zip -d src/ValleyServer/Content + rm content.zip + + # 5. 发布 Windows x64 独立版本 + - name: Publish Windows x64 + run: | + dotnet publish src/ValleyServer/ValleyServer.csproj \ + -c Release \ + -r win-x64 \ + --self-contained true \ + -o publish/win-x64 + + # 6. 发布 Linux x64 独立版本 + - name: Publish Linux x64 + run: | + dotnet publish src/ValleyServer/ValleyServer.csproj \ + -c Release \ + -r linux-x64 \ + --self-contained true \ + -o publish/linux-x64 + + # 7. 打包 ZIP(可执行文件和 Content 同级处于压缩包根目录) + - name: Package Artifacts into ZIP + run: | + cd publish/win-x64 + zip -r ../../ValleyServer-win-x64.zip . + cd ../../ + + cd publish/linux-x64 + zip -r ../../ValleyServer-linux-x64.zip . + cd ../../ + + # 8. 生成包含指定三栏目和 Emoji 的双语 Release 说明模板 + - name: Generate Release Body Template + run: | + cat << 'EOF' > release_body.md + ## 🇨🇳 中文公告 (Chinese Announcement) + + ### 🚀 特性更新 + - + - + + ### 🐛 Bug 修复 + - + - + + ### 🔧 其他变更 + - + - + + --- + + ## 🇬🇧 English Announcement + + ### 🚀 Features + - + - + + ### 🐛 Bug Fixes + - + - + + ### 🔧 Others + - + - + EOF + + # 9. 创建 Release 并上传 ZIP 附件 + - name: Create GitHub Release + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ env.NEW_TAG }} + name: 🌈${{ env.NEW_TAG }} release + body_path: release_body.md + draft: false + prerelease: false + files: | + ValleyServer-win-x64.zip + ValleyServer-linux-x64.zip