name: Build release binaries on: push: tags: - "v*" permissions: contents: write env: BINARY_NAME: streamed-tui jobs: release: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Set up Go uses: actions/setup-go@v5 with: go-version-file: go.mod cache: false - name: Set up Node.js (required for Puppeteer bundling) uses: actions/setup-node@v4 with: node-version: "20" # # --- BUILD NODE MODULES (puppeteer-extra, stealth, puppeteer) --- # - name: Build bundled Node.js dependencies run: | chmod +x scripts/build_node_modules.sh scripts/build_node_modules.sh # # --- BUILD LINUX AMD64 --- # - name: Build linux amd64 run: | mkdir -p out GOOS=linux GOARCH=amd64 CGO_ENABLED=0 \ go build -o out/${BINARY_NAME}_linux_amd64 . # # --- BUILD LINUX ARM64 --- # - name: Build linux arm64 run: | GOOS=linux GOARCH=arm64 CGO_ENABLED=0 \ go build -o out/${BINARY_NAME}_linux_arm64 . # # --- BUILD MACOS AMD64 --- # - name: Build darwin amd64 run: | GOOS=darwin GOARCH=amd64 CGO_ENABLED=0 \ go build -o out/${BINARY_NAME}_darwin_amd64 . # # --- BUILD MACOS ARM64 --- # - name: Build darwin arm64 run: | GOOS=darwin GOARCH=arm64 CGO_ENABLED=0 \ go build -o out/${BINARY_NAME}_darwin_arm64 . # # --- BUILD SOURCE TARBALL --- # - name: Create source tarball run: | mkdir -p release git archive --format=tar.gz \ --output=release/${BINARY_NAME}_${{ github.ref_name }}_source.tar.gz HEAD # # --- UPLOAD RELEASE ASSETS --- # - name: Upload release assets uses: softprops/action-gh-release@v2 with: files: | out/${{ env.BINARY_NAME }}_linux_amd64 out/${{ env.BINARY_NAME }}_linux_arm64 out/${{ env.BINARY_NAME }}_darwin_amd64 out/${{ env.BINARY_NAME }}_darwin_arm64 release/${{ env.BINARY_NAME }}_${{ github.ref_name }}_source.tar.gz