mirror of
https://github.com/getpaseo/paseo.git
synced 2026-10-28 04:03:05 +00:00
refactor(workspaces): finalize runtime package boundaries
Keep the daemon dependent only on the public runtime contract and helper, while optional runtime implementations remain external command registrations. Workspace setup continues asynchronously through the bound runtime without coupling production packages to an implementation.
This commit is contained in:
@@ -35,7 +35,8 @@ hub:
|
||||
|
||||
server:
|
||||
- "packages/server/**"
|
||||
- "packages/fixture-workspace-runtime/**"
|
||||
- "runtimes/fixture/**"
|
||||
- "packages/workspace-helper/**"
|
||||
- "packages/workspace-runtime-contract/**"
|
||||
- "packages/app/e2e/support/fixtures/recording.*"
|
||||
|
||||
|
||||
@@ -133,6 +133,7 @@ jobs:
|
||||
run: |
|
||||
npm pack --dry-run --ignore-scripts --workspace=@getpaseo/protocol
|
||||
npm pack --dry-run --ignore-scripts --workspace=@getpaseo/workspace-runtime-contract
|
||||
npm pack --dry-run --ignore-scripts --workspace=@getpaseo/workspace-helper
|
||||
npm pack --dry-run --ignore-scripts --workspace=@getpaseo/client
|
||||
npm pack --dry-run --ignore-scripts --workspace=@getpaseo/server
|
||||
|
||||
@@ -169,7 +170,15 @@ jobs:
|
||||
|
||||
- name: Test workspace runtime command contract package
|
||||
if: ${{ needs.changes.outputs.full != 'false' || needs.changes.outputs.server != 'false' }}
|
||||
run: npm test --workspace=@getpaseo/workspace-runtime-contract
|
||||
run: npm test --workspace=@getpaseo/workspace-runtime-contract && npm test --workspace=@getpaseo/workspace-helper
|
||||
|
||||
- name: Prove the command runtime fixture is independently installable
|
||||
if: ${{ runner.os == 'Linux' && (needs.changes.outputs.full != 'false' || needs.changes.outputs.server != 'false') }}
|
||||
run: node --test scripts/workspace-runtime-standalone.test.mjs
|
||||
|
||||
- name: Prove clean server builds own public prerequisites
|
||||
if: ${{ runner.os == 'Linux' && (needs.changes.outputs.full != 'false' || needs.changes.outputs.server != 'false') }}
|
||||
run: node --test scripts/server-clean-build.test.mjs
|
||||
|
||||
- name: Run server tests
|
||||
if: ${{ needs.changes.outputs.full != 'false' || needs.changes.outputs.server != 'false' }}
|
||||
|
||||
@@ -16,9 +16,8 @@ on:
|
||||
- "packages/app/**"
|
||||
- "packages/cli/**"
|
||||
- "packages/client/**"
|
||||
- "packages/docker-workspace-runtime/**"
|
||||
- "packages/desktop/**"
|
||||
- "packages/fixture-workspace-runtime/**"
|
||||
- "packages/workspace-helper/**"
|
||||
- "packages/workspace-runtime-contract/**"
|
||||
- "packages/expo-two-way-audio/**"
|
||||
- "packages/highlight/**"
|
||||
@@ -159,46 +158,6 @@ jobs:
|
||||
cache-from: type=gha,scope=paseo
|
||||
cache-to: type=gha,scope=paseo,mode=max
|
||||
|
||||
workspace-runtime-test:
|
||||
needs: setup
|
||||
if: needs.setup.outputs.publish != 'true'
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: "22"
|
||||
cache: "npm"
|
||||
|
||||
- name: Install dependencies
|
||||
run: node scripts/npm-retry.mjs ci
|
||||
|
||||
- name: Build server stack
|
||||
run: npm run build:server
|
||||
|
||||
- name: Build Docker workspace runtime CLI
|
||||
run: npm run build:docker-workspace-runtime
|
||||
|
||||
- name: Build Docker acceptance image
|
||||
run: docker build --file packages/docker-workspace-runtime/Dockerfile --tag paseo-workspace-runtime-e2e:test .
|
||||
|
||||
- name: Test workspace runtime contract
|
||||
run: npm run test:workspace-runtime:docker --workspace=@getpaseo/server
|
||||
env:
|
||||
E2E_DOCKER_WORKSPACE_IMAGE: paseo-workspace-runtime-e2e:test
|
||||
|
||||
- name: Install Playwright browser
|
||||
run: npx playwright install chromium
|
||||
|
||||
- name: Test Docker Desktop acceptance journey
|
||||
run: npm run test:e2e:renderer --workspace=@getpaseo/desktop -- e2e/new-workspace-docker.spec.ts --workers=1
|
||||
env:
|
||||
E2E_DOCKER_ACCEPTANCE: "1"
|
||||
E2E_DOCKER_WORKSPACE_IMAGE: paseo-workspace-runtime-e2e:test
|
||||
|
||||
publish:
|
||||
needs: setup
|
||||
if: needs.setup.outputs.publish == 'true'
|
||||
|
||||
Reference in New Issue
Block a user