Merge pull request #2852 from seefs001/fix/codex-tips #48
Workflow file for this run
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: Build Electron App | |
| on: | |
| push: | |
| tags: | |
| - '*' # Triggers on version tags like v1.0.0 | |
| - '!*-*' # Ignore pre-release tags like v1.0.0-beta | |
| - '!*-alpha*' # Ignore alpha tags like v1.0.0-alpha | |
| workflow_dispatch: # Allows manual triggering | |
| jobs: | |
| build: | |
| strategy: | |
| matrix: | |
| # 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 | |
| with: | |
| node-version: '20' | |
| - name: Setup Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version: '>=1.25.1' | |
| - name: Build frontend | |
| env: | |
| CI: "" | |
| NODE_OPTIONS: "--max-old-space-size=4096" | |
| run: | | |
| cd web | |
| 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 mod download | |
| # go build -ldflags "-s -w -X 'new-api/common.Version=$(git describe --tags)' -extldflags '-static'" -o new-api | |
| - name: Build Go binary (Windows) | |
| if: runner.os == 'Windows' | |
| run: | | |
| go mod download | |
| go build -ldflags "-s -w -X 'new-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 | |
| # Convert to valid semver: take first 3 components and convert rest to prerelease format | |
| # e.g., 0.9.3-patch.1 -> 0.9.3-patch.1 | |
| if [[ $VERSION =~ ^([0-9]+)\.([0-9]+)\.([0-9]+)(.*)$ ]]; then | |
| MAJOR=${BASH_REMATCH[1]} | |
| MINOR=${BASH_REMATCH[2]} | |
| PATCH=${BASH_REMATCH[3]} | |
| REST=${BASH_REMATCH[4]} | |
| VERSION="$MAJOR.$MINOR.$PATCH" | |
| # If there's extra content, append it without adding -dev | |
| if [[ -n "$REST" ]]; then | |
| VERSION="$VERSION$REST" | |
| fi | |
| fi | |
| 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 (Windows) | |
| if: runner.os == 'Windows' | |
| run: | | |
| 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 (Windows) | |
| if: runner.os == 'Windows' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: windows-build | |
| path: | | |
| electron/dist/*.exe | |
| release: | |
| needs: build | |
| runs-on: ubuntu-latest | |
| if: startsWith(github.ref, 'refs/tags/') | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Download all artifacts | |
| uses: actions/download-artifact@v4 | |
| - name: Upload to Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| files: | | |
| windows-build/* | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |