fix(bcode-laminar): address cubic review #7
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: release | |
| # Build the bcode CLI for every platform we ship and attach the archives to | |
| # the GitHub Release matching the pushed tag. | |
| # | |
| # Trigger: | |
| # - Push a tag matching `v*` (e.g. `v0.0.3`). | |
| # | |
| # Behaviour: | |
| # 1. Reuses the existing `packages/opencode/script/build.ts` matrix | |
| # (linux x64/arm64, darwin x64/arm64, win32 x64/arm64; baseline + musl | |
| # variants where applicable). | |
| # 2. Bun cross-compiles every target from a single Linux runner. | |
| # 3. With `OPENCODE_RELEASE=1`, `build.ts` archives each target as | |
| # `dist/bcode-<os>-<arch>...{.tar.gz,.zip}` and uploads via `gh release | |
| # upload --clobber`. | |
| # | |
| # Pre-condition: the tag must already have an existing GitHub Release | |
| # (created either manually with `gh release create vX.Y.Z` or by an upcoming | |
| # release-creation workflow). `--clobber` lets re-runs replace assets. | |
| on: | |
| push: | |
| tags: | |
| - "v*" | |
| workflow_dispatch: | |
| inputs: | |
| tag: | |
| description: "Release tag to build (must already exist as a Release)" | |
| required: true | |
| type: string | |
| permissions: | |
| contents: write | |
| concurrency: | |
| group: release-${{ github.ref }} | |
| cancel-in-progress: false | |
| jobs: | |
| build: | |
| runs-on: ubuntu-24.04 | |
| if: github.repository == 'browser-use/browsercode' | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| with: | |
| fetch-depth: 0 | |
| - name: Resolve tag + version | |
| id: ver | |
| run: | | |
| if [ -n "${{ inputs.tag }}" ]; then | |
| TAG="${{ inputs.tag }}" | |
| else | |
| TAG="${GITHUB_REF#refs/tags/}" | |
| fi | |
| VERSION="${TAG#v}" | |
| echo "tag=${TAG}" >> "$GITHUB_OUTPUT" | |
| echo "version=${VERSION}" >> "$GITHUB_OUTPUT" | |
| echo "Building tag=${TAG} version=${VERSION}" | |
| - name: Setup Bun | |
| uses: ./.github/actions/setup-bun | |
| - name: Ensure GitHub Release exists | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| # `build.ts` uploads via `gh release upload --clobber`, which requires | |
| # the release to exist. --latest makes it visible to releases/latest | |
| # (what install.sh queries). | |
| if ! gh release view "${{ steps.ver.outputs.tag }}" >/dev/null 2>&1; then | |
| gh release create "${{ steps.ver.outputs.tag }}" \ | |
| --latest \ | |
| --title "${{ steps.ver.outputs.tag }}" \ | |
| --notes "Automated build for ${{ steps.ver.outputs.tag }}." | |
| fi | |
| - name: Build all targets and upload to release | |
| env: | |
| OPENCODE_VERSION: ${{ steps.ver.outputs.version }} | |
| OPENCODE_RELEASE: "1" | |
| OPENCODE_CHANNEL: latest | |
| GH_REPO: ${{ github.repository }} | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| # Embedded into the binary by build.ts via Bun `define`. Read at | |
| # runtime in @browser-use/bcode-browser/telemetry, gated by | |
| # DO_NOT_TRACK and any user-supplied LMNR_PROJECT_API_KEY. | |
| BCODE_DEFAULT_LMNR_KEY: ${{ secrets.LMNR_PROJECT_API_KEY_OSS }} | |
| run: | | |
| ./packages/opencode/script/build.ts | |
| - name: Summarise uploaded assets | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| echo "## Release ${{ steps.ver.outputs.tag }}" >> "$GITHUB_STEP_SUMMARY" | |
| echo "" >> "$GITHUB_STEP_SUMMARY" | |
| gh release view "${{ steps.ver.outputs.tag }}" --json assets \ | |
| --jq '.assets[] | "- " + .name + " (" + (.size|tostring) + " bytes)"' \ | |
| >> "$GITHUB_STEP_SUMMARY" |