From 609c910d5a345ba48cccd423330182be88d02708 Mon Sep 17 00:00:00 2001 From: ElyPrism Date: Sat, 31 Jan 2026 14:22:00 +0800 Subject: [PATCH] =?UTF-8?q?ci:=20=E6=94=AF=E6=8C=81action=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E7=BC=96=E8=AF=91=E5=8F=AF=E6=89=A7=E8=A1=8C=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/build-and-pr.yml | 108 +++++++++++++++++++++++++++++ package.json | 6 +- util/client-sign.js | 2 +- 3 files changed, 112 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/build-and-pr.yml diff --git a/.github/workflows/build-and-pr.yml b/.github/workflows/build-and-pr.yml new file mode 100644 index 0000000..fe96119 --- /dev/null +++ b/.github/workflows/build-and-pr.yml @@ -0,0 +1,108 @@ +name: Build and Create PR + +on: + workflow_dispatch: # 手动触发 + push: + branches: [ main, pr/* ] + +jobs: + build: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, windows-latest, macos-latest] + include: + - os: ubuntu-latest + platform: linux + target: node18-linux-x64 + output: precompiled/app + - os: windows-latest + platform: win + target: node18-win-x64 + output: precompiled/app.exe + - os: macos-latest + platform: macos + target: node18-macos-x64 + output: precompiled/app + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '18' + + - name: Install dependencies + run: | + npm install -g pnpm + pnpm install + + - name: Build for ${{ matrix.platform }} + run: | + npm run pkg${{ matrix.platform }} + env: + PKG_TARGET: ${{ matrix.target }} + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: app-${{ matrix.platform }} + path: ${{ matrix.output }} + if-no-files-found: error + + create-pr: + needs: build + runs-on: ubuntu-latest + if: github.event_name == 'workflow_dispatch' # 只在手动触发时创建PR + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Download all artifacts + uses: actions/download-artifact@v4 + with: + path: precompiled + + - name: Display structure of downloaded files + run: ls -R + + - name: Setup Node.js + uses: actions/setup-node@v4 + + - name: Create new branch and commit + run: | + git config --global user.name 'github-actions[bot]' + git config --global user.email 'github-actions[bot]@users.noreply.github.com' + + BRANCH_NAME="auto-build-$(date +%Y%m%d-%H%M%S)" + git checkout -b $BRANCH_NAME + + # 复制并整理下载的文件 + mkdir -p precompiled + cp app-win/* precompiled/ || true + cp app-linux/* precompiled/ || true + cp app-macos/* precompiled/ || true + + # 提交更改 + git add precompiled/ + git commit -m "Auto-build: Add compiled binaries for win, linux, macos" || exit 0 + + # 推送到远程仓库 + git push origin $BRANCH_NAME + + - name: Create Pull Request + uses: actions/github-script@v7 + with: + script: | + const { data: pullRequest } = await github.rest.pulls.create({ + owner: context.repo.owner, + repo: context.repo.repo, + title: 'Auto-build: Add compiled binaries for win, linux, macos', + head: `auto-build-${new Date().toISOString().slice(0, 19).replace(/[-:]/g, '').replace('T', '-')}`, + base: 'main', + body: 'This PR contains newly built binaries for Windows, Linux, and macOS platforms.' + }); + console.log(`Created PR #${pullRequest.number}: ${pullRequest.html_url}`); \ No newline at end of file diff --git a/package.json b/package.json index 83226ed..e0a1cc8 100644 --- a/package.json +++ b/package.json @@ -9,9 +9,9 @@ "lint": "eslint \"**/*.{js,ts}\"", "lint-fix": "eslint --fix \"**/*.{js,ts}\"", "prepare": "husky install", - "pkgwin": "pkg . -t node18-win-x64 -C GZip -o bin/app --no-bytecode", - "pkglinux": "pkg . -t node18-linux-x64 -C GZip -o bin/app --no-bytecode", - "pkgmacos": "pkg . -t node18-macos-x64 -C GZip -o bin/app --no-bytecode" + "pkgwin": "pkg . -t node18-win-x64 -C GZip -o precompiled/app", + "pkglinux": "pkg . -t node18-linux-x64 -C GZip -o precompiled/app", + "pkgmacos": "pkg . -t node18-macos-x64 -C GZip -o precompiled/app" }, "bin": "./app.js", "pkg": { diff --git a/util/client-sign.js b/util/client-sign.js index c0ccb1f..49e785e 100644 --- a/util/client-sign.js +++ b/util/client-sign.js @@ -166,4 +166,4 @@ class AdvancedClientSignGenerator { } } -module.exports = AdvancedClientSignGenerator \ No newline at end of file +module.exports = AdvancedClientSignGenerator