Download and Release MCSManager #100
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Download and Release MCSManager | |
| on: | |
| schedule: | |
| - cron: '0 18 * * *' # 北京时间凌晨2点 = UTC时间18点(UTC+8) | |
| workflow_dispatch: # 允许手动触发 | |
| jobs: | |
| download-and-release: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y jq gh | |
| - name: Download MCSManager | |
| run: | | |
| echo "正在下载 MCSManager 最新 Linux 版本..." | |
| wget -O mcsmanager_linux_release.tar.gz https://github.com/MCSManager/MCSManager/releases/latest/download/mcsmanager_linux_release.tar.gz | |
| - name: Extract MCSManager | |
| run: | | |
| echo "正在解压..." | |
| tar -zxf mcsmanager_linux_release.tar.gz | |
| - name: Get version from package.json | |
| id: get_version | |
| run: | | |
| # 从package.json提取版本号 | |
| VERSION=$(jq -r '.version' mcsmanager/daemon/package.json) | |
| echo "从package.json提取到的版本号: $VERSION" | |
| echo "version=$VERSION" >> $GITHUB_OUTPUT | |
| - name: Check if release exists | |
| id: check_release | |
| run: | | |
| # 检查该版本号是否已存在对应的release(包括草稿和预发布) | |
| if gh release view "v${{ steps.get_version.outputs.version }}" > /dev/null 2>&1; then | |
| echo "版本 v${{ steps.get_version.outputs.version }} 已存在" | |
| echo "exists=true" >> $GITHUB_OUTPUT | |
| else | |
| echo "版本 v${{ steps.get_version.outputs.version }} 不存在,准备创建" | |
| echo "exists=false" >> $GITHUB_OUTPUT | |
| fi | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Clean up and prepare files | |
| if: steps.check_release.outputs.exists == 'false' | |
| run: | | |
| echo "正在准备文件..." | |
| rm -f mcsmanager_linux_release.tar.gz | |
| # 复制lib文件 | |
| echo "正在复制lib文件..." | |
| mkdir -p mcsmanager/daemon/lib | |
| if [ -f "lib/file_zip_linux_arm" ] && [ -f "lib/pty_linux_arm" ]; then | |
| cp lib/file_zip_linux_arm mcsmanager/daemon/lib/ | |
| cp lib/pty_linux_arm mcsmanager/daemon/lib/ | |
| else | |
| echo "lib目录下的必要文件不存在,终止工作流" | |
| exit 1 | |
| fi | |
| # 修改启动脚本 | |
| echo "正在修改 start-daemon.sh 和 start-web.sh 的 --max-old-space-size 参数..." | |
| sed -i 's/--max-old-space-size=8192/--max-old-space-size=1024/g' mcsmanager/start-daemon.sh | |
| sed -i 's/--max-old-space-size=8192/--max-old-space-size=1024/g' mcsmanager/start-web.sh | |
| # 压缩文件 | |
| echo "正在压缩MCSManager..." | |
| tar -czf mcsmanager_armv7l_release.tar.gz mcsmanager | |
| - name: Create Release and Upload Asset | |
| if: steps.check_release.outputs.exists == 'false' | |
| run: | | |
| # 使用package.json中的版本号作为标签 | |
| TAG_NAME="v${{ steps.get_version.outputs.version }}" | |
| RELEASE_NAME="MCSManager armv7l 版本 $TAG_NAME" | |
| # 创建Release | |
| gh release create "$TAG_NAME" \ | |
| --title "$RELEASE_NAME" \ | |
| --notes "自动构建的MCSManager armv7l版本(基于官方最新版)" \ | |
| --draft=false \ | |
| --prerelease=false | |
| # 上传资产 | |
| gh release upload "$TAG_NAME" ./mcsmanager_armv7l_release.tar.gz --clobber | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Commit and push changes | |
| if: steps.check_release.outputs.exists == 'false' | |
| run: | | |
| git config --global user.name 'github-actions[bot]' | |
| git config --global user.email 'github-actions[bot]@users.noreply.github.com' | |
| if ! git diff --quiet; then | |
| git add . | |
| git commit -m "自动更新: MCSManager ${{ steps.get_version.outputs.version }}" | |
| git push | |
| else | |
| echo "没有更改需要提交" | |
| fi |