name: Desktop Release on: push: tags: - 'v*' - 'beta-v*' permissions: contents: write jobs: build: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: include: - os: macos-latest platform: --mac - os: ubuntu-latest platform: --linux - os: windows-latest platform: --win steps: - name: Checkout uses: actions/checkout@v4 - name: Extract version from tag id: version shell: bash run: | TAG=${GITHUB_REF#refs/tags/} VERSION=${TAG#beta-} VERSION=${VERSION#v} echo "VERSION=$VERSION" >> "$GITHUB_OUTPUT" - name: Setup pnpm uses: pnpm/action-setup@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20 cache: 'pnpm' cache-dependency-path: | surfsense_web/pnpm-lock.yaml surfsense_desktop/pnpm-lock.yaml - name: Install web dependencies run: pnpm install working-directory: surfsense_web - name: Build Next.js standalone run: pnpm build working-directory: surfsense_web env: NEXT_PUBLIC_FASTAPI_BACKEND_URL: ${{ vars.NEXT_PUBLIC_FASTAPI_BACKEND_URL }} NEXT_PUBLIC_ELECTRIC_URL: ${{ vars.NEXT_PUBLIC_ELECTRIC_URL }} NEXT_PUBLIC_DEPLOYMENT_MODE: ${{ vars.NEXT_PUBLIC_DEPLOYMENT_MODE }} NEXT_PUBLIC_FASTAPI_BACKEND_AUTH_TYPE: ${{ vars.NEXT_PUBLIC_FASTAPI_BACKEND_AUTH_TYPE }} - name: Install desktop dependencies run: pnpm install working-directory: surfsense_desktop - name: Build Electron run: pnpm build working-directory: surfsense_desktop env: HOSTED_FRONTEND_URL: ${{ vars.HOSTED_FRONTEND_URL }} - name: Package & Publish run: pnpm exec electron-builder ${{ matrix.platform }} --config electron-builder.yml --publish always -c.extraMetadata.version=${{ steps.version.outputs.VERSION }} working-directory: surfsense_desktop env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}