# Caminho rápido: só Windows x64, disparado à mão. # # O `release.yml` continua sendo o release de verdade (todas as plataformas, # publica release e alimenta o electron-updater). Este aqui existe para quando # você só quer um .exe para testar, sem marcar versão. # # Arquivo separado de propósito: o release.yml veio do upstream e recebe merges; # mexer nele criaria conflito a cada atualização. name: Build Windows (rápido) on: workflow_dispatch: inputs: arch: description: Arquitetura required: false default: x64 type: choice options: [x64, arm64] permissions: contents: read jobs: build: # windows-2022, não windows-latest: a imagem latest traz o Visual Studio 18, # que o node-gyp embutido no electron-rebuild não detecta ao compilar os # módulos nativos. Mesma razão documentada no release.yml. runs-on: windows-2022 steps: - name: Checkout uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - name: Setup pnpm uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0 with: version: 10.34.3 - name: Setup Node.js uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0 with: node-version: 20 cache: pnpm # ~100MB de binários do Electron e das ferramentas do NSIS, baixados a # cada execução sem isto. É o maior ganho depois de cortar o arm64. - name: Cache Electron binaries uses: actions/cache@v4 with: path: | ~\AppData\Local\electron\Cache ~\AppData\Local\electron-builder\Cache key: electron-cache-${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: electron-cache-${{ runner.os }}- - name: Install dependencies run: pnpm install --frozen-lockfile - name: Build shared package run: pnpm --filter @backspace/shared build - name: Compile desktop TypeScript working-directory: packages/desktop run: pnpm exec tsc # --publish never: sem release, sem precisar de tag nem bump de versão. # O instalador sai como artefato desta execução. - name: Build installer working-directory: packages/desktop run: pnpm exec electron-builder --win --${{ inputs.arch || 'x64' }} --publish never env: CSC_IDENTITY_AUTO_DISCOVERY: "false" - name: Upload installer uses: actions/upload-artifact@v4 with: name: backspace-windows-${{ inputs.arch || 'x64' }} path: packages/desktop/dist-electron/*.exe retention-days: 14 if-no-files-found: error