| name: Release (Linux, macOS, Windows) | |
| permissions: | |
| contents: write | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| name: | |
| description: 'reason' | |
| required: false | |
| push: | |
| tags: | |
| - '*' | |
| - '!*-alpha*' | |
| jobs: | |
| linux: | |
| name: Linux Release | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v3 | |
| with: | |
| fetch-depth: 0 | |
| - name: Determine Version | |
| run: | | |
| VERSION=$(git describe --tags) | |
| echo "VERSION=$VERSION" >> $GITHUB_ENV | |
| - uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: latest | |
| - name: Build Frontend | |
| env: | |
| CI: "" | |
| run: | | |
| cd web | |
| bun install | |
| DISABLE_ESLINT_PLUGIN='true' VITE_REACT_APP_VERSION=$VERSION bun run build | |
| cd .. | |
| - name: Set up Go | |
| uses: actions/setup-go@v3 | |
| with: | |
| go-version: '>=1.25.1' | |
| - name: Build Backend (amd64) | |
| run: | | |
| go mod download | |
| go build -ldflags "-s -w -X 'new-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 'new-api/common.Version=$VERSION' -extldflags '-static'" -o new-api-arm64-$VERSION | |
| - name: Release | |
| uses: softprops/action-gh-release@v2 | |
| if: startsWith(github.ref, 'refs/tags/') | |
| with: | |
| files: | | |
| new-api-* | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| macos: | |
| name: macOS Release | |
| runs-on: macos-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v3 | |
| with: | |
| fetch-depth: 0 | |
| - name: Determine Version | |
| run: | | |
| VERSION=$(git describe --tags) | |
| echo "VERSION=$VERSION" >> $GITHUB_ENV | |
| - uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: latest | |
| - 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=$VERSION bun run build | |
| cd .. | |
| - name: Set up Go | |
| uses: actions/setup-go@v3 | |
| with: | |
| go-version: '>=1.25.1' | |
| - name: Build Backend | |
| run: | | |
| go mod download | |
| go build -ldflags "-X 'new-api/common.Version=$VERSION'" -o new-api-macos-$VERSION | |
| - name: Release | |
| uses: softprops/action-gh-release@v2 | |
| if: startsWith(github.ref, 'refs/tags/') | |
| with: | |
| files: new-api-macos-* | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| windows: | |
| name: Windows Release | |
| runs-on: windows-latest | |
| defaults: | |
| run: | |
| shell: bash | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v3 | |
| with: | |
| fetch-depth: 0 | |
| - name: Determine Version | |
| run: | | |
| VERSION=$(git describe --tags) | |
| echo "VERSION=$VERSION" >> $GITHUB_ENV | |
| - uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: latest | |
| - name: Build Frontend | |
| env: | |
| CI: "" | |
| run: | | |
| cd web | |
| bun install | |
| DISABLE_ESLINT_PLUGIN='true' VITE_REACT_APP_VERSION=$VERSION bun run build | |
| cd .. | |
| - name: Set up Go | |
| uses: actions/setup-go@v3 | |
| with: | |
| go-version: '>=1.25.1' | |
| - name: Build Backend | |
| run: | | |
| go mod download | |
| go build -ldflags "-s -w -X 'new-api/common.Version=$VERSION'" -o new-api-$VERSION.exe | |
| - name: Release | |
| uses: softprops/action-gh-release@v2 | |
| if: startsWith(github.ref, 'refs/tags/') | |
| with: | |
| files: new-api-*.exe | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |