name: release # Builds standalone PodTui binaries for each supported OS/arch and attaches # them to a GitHub Release. One runner per platform because Bun cannot # cross-compile — each runner runs `make dist`, which emits a # podtui--.tar.gz (binary + native libs side by side). # # Trigger: push a tag like v0.1.0. Bump VERSION in src/index.tsx in the same # commit as the tag so the released binary reports the tagged version. on: # intentional: YAML `on` key push: tags: - "v*" permissions: contents: write jobs: build: name: build (${{ matrix.os }} / ${{ matrix.arch }}) runs-on: ${{ matrix.os }} strategy: matrix: include: - os: ubuntu-latest arch: x64 plat: linux - os: ubuntu-24.04-arm arch: arm64 plat: linux - os: macos-latest arch: x64 plat: darwin - os: macos-14 arch: arm64 plat: darwin steps: - name: Check out repo uses: actions/checkout@v4 - name: Set up Bun uses: oven-sh/setup-bun@v2 with: bun-version: latest - name: Install dependencies run: bun install - name: Build native cavacore library run: scripts/build-cavacore.sh - name: Build standalone binary + tarball run: make dist - name: Smoke-test binary boot env: DIST_TAR: podtui-${{ matrix.plat }}-${{ matrix.arch }}.tar.gz run: | tar -xzf dist/$DIST_TAR -C dist ./dist/podtui --version - name: Upload artifact uses: actions/upload-artifact@v4 with: name: podtui-${{ matrix.plat }}-${{ matrix.arch }} path: dist/podtui-*.tar.gz upload: name: Attach to GitHub Release needs: build runs-on: ubuntu-latest steps: - name: Download all binaries uses: actions/download-artifact@v4 with: path: artifacts - name: Publish release uses: softprops/action-gh-release@v2 with: generate_release_notes: true files: artifacts/**/*.tar.gz