From c1137027e657e890b2ec6f1aa98b1b0911011d31 Mon Sep 17 00:00:00 2001 From: CaIon Date: Sun, 5 Oct 2025 17:11:30 +0800 Subject: [PATCH] chore: update build workflows for Electron and Go, including version tagging and dependency management --- .github/workflows/electron-build.yml | 79 +++++++++++++++++---------- .github/workflows/linux-release.yml | 9 +-- .github/workflows/macos-release.yml | 5 +- .github/workflows/windows-release.yml | 5 +- 4 files changed, 61 insertions(+), 37 deletions(-) diff --git a/.github/workflows/electron-build.yml b/.github/workflows/electron-build.yml index b274db857..c3be05bf5 100644 --- a/.github/workflows/electron-build.yml +++ b/.github/workflows/electron-build.yml @@ -3,20 +3,31 @@ name: Build Electron App on: push: tags: - - 'v*.*.*' # Triggers on version tags like v1.0.0 + - '*' # Triggers on version tags like v1.0.0 workflow_dispatch: # Allows manual triggering jobs: build: strategy: matrix: - os: [macos-latest, windows-latest] + # os: [macos-latest, windows-latest] + os: [windows-latest] runs-on: ${{ matrix.os }} + defaults: + run: + shell: bash steps: - name: Checkout code uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup Bun + uses: oven-sh/setup-bun@v2 + with: + bun-version: latest - name: Setup Node.js uses: actions/setup-node@v4 @@ -26,39 +37,49 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: '1.21' + go-version: '>=1.18.0' - name: Build frontend + env: + CI: "" + NODE_OPTIONS: "--max-old-space-size=4096" run: | cd web - npm install --legacy-peer-deps - npm run build - env: - DISABLE_ESLINT_PLUGIN: 'true' - NODE_OPTIONS: '--max_old_space_size=4096' + bun install + DISABLE_ESLINT_PLUGIN='true' VITE_REACT_APP_VERSION=$(git describe --tags) bun run build + cd .. - - name: Build Go binary (macos/Linux) - if: runner.os != 'Windows' - run: | - go build -ldflags="-s -w" -o new-api + # - name: Build Go binary (macos/Linux) + # if: runner.os != 'Windows' + # run: | + # go mod download + # go build -ldflags "-s -w -X 'one-api/common.Version=$(git describe --tags)' -extldflags '-static'" -o new-api - name: Build Go binary (Windows) if: runner.os == 'Windows' run: | - go build -ldflags="-s -w" -o new-api.exe + go mod download + go build -ldflags "-s -w -X 'one-api/common.Version=$(git describe --tags)'" -o new-api.exe + + - name: Update Electron version + run: | + cd electron + VERSION=$(git describe --tags) + VERSION=${VERSION#v} # Remove 'v' prefix if present + npm version $VERSION --no-git-tag-version --allow-same-version - name: Install Electron dependencies run: | cd electron npm install - - name: Build Electron app (macOS) - if: runner.os == 'macOS' - run: | - cd electron - npm run build:mac - env: - CSC_IDENTITY_AUTO_DISCOVERY: false # Skip code signing + # - name: Build Electron app (macOS) + # if: runner.os == 'macOS' + # run: | + # cd electron + # npm run build:mac + # env: + # CSC_IDENTITY_AUTO_DISCOVERY: false # Skip code signing - name: Build Electron app (Windows) if: runner.os == 'Windows' @@ -66,14 +87,14 @@ jobs: cd electron npm run build:win - - name: Upload artifacts (macOS) - if: runner.os == 'macOS' - uses: actions/upload-artifact@v4 - with: - name: macos-build - path: | - electron/dist/*.dmg - electron/dist/*.zip + # - name: Upload artifacts (macOS) + # if: runner.os == 'macOS' + # uses: actions/upload-artifact@v4 + # with: + # name: macos-build + # path: | + # electron/dist/*.dmg + # electron/dist/*.zip - name: Upload artifacts (Windows) if: runner.os == 'Windows' @@ -96,7 +117,7 @@ jobs: uses: softprops/action-gh-release@v1 with: files: | - macos-build/* + # macos-build/* windows-build/* draft: false prerelease: false diff --git a/.github/workflows/linux-release.yml b/.github/workflows/linux-release.yml index 3e3ddc53b..d2039dced 100644 --- a/.github/workflows/linux-release.yml +++ b/.github/workflows/linux-release.yml @@ -38,21 +38,22 @@ jobs: - name: Build Backend (amd64) run: | go mod download - go build -ldflags "-s -w -X 'one-api/common.Version=$(git describe --tags)' -extldflags '-static'" -o new-api + VERSION=$(git describe --tags) + go build -ldflags "-s -w -X 'one-api/common.Version=$VERSION' -extldflags '-static'" -o new-api-$VERSION - name: Build Backend (arm64) run: | sudo apt-get update DEBIAN_FRONTEND=noninteractive sudo apt-get install -y gcc-aarch64-linux-gnu - CC=aarch64-linux-gnu-gcc CGO_ENABLED=1 GOOS=linux GOARCH=arm64 go build -ldflags "-s -w -X 'one-api/common.Version=$(git describe --tags)' -extldflags '-static'" -o new-api-arm64 + VERSION=$(git describe --tags) + CC=aarch64-linux-gnu-gcc CGO_ENABLED=1 GOOS=linux GOARCH=arm64 go build -ldflags "-s -w -X 'one-api/common.Version=$VERSION' -extldflags '-static'" -o new-api-arm64-$VERSION - name: Release uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') with: files: | - new-api - new-api-arm64 + new-api-* draft: true generate_release_notes: true env: diff --git a/.github/workflows/macos-release.yml b/.github/workflows/macos-release.yml index 8eaf2d67a..135e46102 100644 --- a/.github/workflows/macos-release.yml +++ b/.github/workflows/macos-release.yml @@ -39,12 +39,13 @@ jobs: - name: Build Backend run: | go mod download - go build -ldflags "-X 'one-api/common.Version=$(git describe --tags)'" -o new-api-macos + VERSION=$(git describe --tags) + go build -ldflags "-X 'one-api/common.Version=$VERSION'" -o new-api-macos-$VERSION - name: Release uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') with: - files: new-api-macos + files: new-api-macos-* draft: true generate_release_notes: true env: diff --git a/.github/workflows/windows-release.yml b/.github/workflows/windows-release.yml index 30e864f34..e6cc456ca 100644 --- a/.github/workflows/windows-release.yml +++ b/.github/workflows/windows-release.yml @@ -41,12 +41,13 @@ jobs: - name: Build Backend run: | go mod download - go build -ldflags "-s -w -X 'one-api/common.Version=$(git describe --tags)'" -o new-api.exe + VERSION=$(git describe --tags) + go build -ldflags "-s -w -X 'one-api/common.Version=$VERSION'" -o new-api-$VERSION.exe - name: Release uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') with: - files: new-api.exe + files: new-api-*.exe draft: true generate_release_notes: true env: