Files
orca/.github/workflows/release-javascript.yml
T
Neil 83cf7cf5e2 perf(ci): compile release JavaScript once for all packaging hosts (#25828)
* perf(ci): share release JavaScript across packaging hosts

* fix(ci): verify the projected web entry in release archives

* fix(ci): use the Windows system archive tool for release bundles

* test(ci): retain stylesheet evidence in release build comparisons

* test(ci): verify release parity across native color rounding

* test(ci): normalize manifest asset references without changing import order

* test(ci): compare portable outputs across Windows text and color formatting

* test(ci): preserve module identity across dependent asset hashes

* fix(ci): keep SVG build inputs identical across release hosts

* fix(ci): stabilize compiler inputs and projected web bindings

* fix(ci): retain vendor minification in projected web output

* test(ci): normalize platform-specific pnpm manifest source paths

* fix(packaging): exclude shared build staging from application files

* test: align thinking-state fixtures with the current source shape

* test(mobile): reuse message fixtures within the line limit
2026-10-06 13:22:04 -07:00

80 lines
2.5 KiB
YAML

name: Release JavaScript bundle
on:
workflow_call:
inputs:
ref:
required: true
type: string
outputs:
supported:
value: ${{ jobs.bundle.outputs.supported }}
source_sha:
value: ${{ jobs.bundle.outputs.source_sha }}
secrets:
ORCA_POSTHOG_WRITE_KEY:
required: true
permissions:
contents: read
env:
ORCA_BACKGROUND_LAUNCH: '1'
jobs:
bundle:
runs-on: ubuntu-latest
timeout-minutes: 20
outputs:
supported: ${{ steps.source.outputs.supported }}
source_sha: ${{ steps.source.outputs.sha }}
steps:
- uses: actions/checkout@v6
with:
ref: ${{ inputs.ref }}
persist-credentials: false
# Older release refs retain their original per-platform build commands.
- name: Resolve bundle source and support
id: source
shell: bash
run: |
echo "sha=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"
node -e 'const p = require("./package.json"); console.log("supported=" + Boolean(p.scripts["build:release:javascript"] && p.scripts["build:release:host"]))' >> "$GITHUB_OUTPUT"
- uses: ./.github/actions/install-node-dependencies
if: steps.source.outputs.supported == 'true'
with:
native-runtime: node
- uses: ./.github/actions/install-mobile-dependencies
if: steps.source.outputs.supported == 'true'
- name: Resolve release build identity
id: identity
if: steps.source.outputs.supported == 'true'
run: |
RELEASE_TAG="v$(node -p 'require("./package.json").version')"
export RELEASE_TAG
echo "value=$(node config/scripts/release-javascript-artifact.mjs identity)" >> "$GITHUB_OUTPUT"
- name: Build and archive release JavaScript
if: steps.source.outputs.supported == 'true'
env:
NODE_OPTIONS: --max-old-space-size=4096
ORCA_BUILD_IDENTITY: ${{ steps.identity.outputs.value }}
ORCA_DIAGNOSTICS_TOKEN_URL: https://www.onorca.dev/diagnostics/token
ORCA_POSTHOG_WRITE_KEY: ${{ secrets.ORCA_POSTHOG_WRITE_KEY }}
run: |
pnpm run build:release:javascript
node config/scripts/release-javascript-artifact.mjs pack
- uses: actions/upload-artifact@v7
if: steps.source.outputs.supported == 'true'
with:
name: release-javascript
path: .build/release-javascript/
compression-level: 0
retention-days: 7
if-no-files-found: error