Skip to content

fix: use JSR imports for cross-package dependencies #2

fix: use JSR imports for cross-package dependencies

fix: use JSR imports for cross-package dependencies #2

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Deno
uses: denoland/setup-deno@v2
with:
deno-version: v2.x
cache: true
- name: Check formatting
run: deno fmt --check
- name: Run linter
run: deno lint
- name: Type check
run: deno check packages/*/mod.ts packages/*/src/*.ts
test:
name: Tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Deno
uses: denoland/setup-deno@v2
with:
deno-version: v2.x
cache: true
- name: Run tests
run: deno test --allow-env --allow-net --allow-read --coverage=cov/
- name: Generate coverage report
run: deno coverage --lcov cov/ > cov.lcov
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
with:
file: cov.lcov
fail_ci_if_error: false
test-examples:
name: Example Tests
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Deno
uses: denoland/setup-deno@v2
with:
deno-version: v2.x
cache: true
- name: Test echo agent example
run: |
cd packages/lib
timeout 10s deno run --allow-net --allow-env examples/echo-agent.ts --help || [ $? -eq 124 ]
- name: Test simple echo example
run: |
cd packages/lib
timeout 10s deno run --allow-net --allow-env examples/simple-echo.ts --help || [ $? -eq 124 ]
package-check:
name: Package Validation
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Deno
uses: denoland/setup-deno@v2
with:
deno-version: v2.x
cache: true
- name: Check package exports
run: |
# Test package imports
deno eval "
import * as schema from './packages/schema/mod.ts';
import * as lib from './packages/lib/mod.ts';
console.log('Package imports work');
"
- name: Validate deno.json files
run: |
# Check deno.json validity
deno eval "
const schemaConfig = JSON.parse(Deno.readTextFileSync('./packages/schema/deno.json'));
const libConfig = JSON.parse(Deno.readTextFileSync('./packages/lib/deno.json'));
const rootConfig = JSON.parse(Deno.readTextFileSync('./deno.json'));
console.log('deno.json files are valid');
"
security:
name: Security Check
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Deno
uses: denoland/setup-deno@v2
with:
deno-version: v2.x
cache: true
- name: Check dependencies
run: |
# Check for external dependencies
deno info --json packages/schema/mod.ts | jq '.modules[].specifier' | grep -E "(npm:|jsr:)" || echo "No external dependencies"
deno info --json packages/lib/mod.ts | jq '.modules[].specifier' | grep -E "(npm:|jsr:)" || echo "No external dependencies"
benchmark:
name: Performance
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Deno
uses: denoland/setup-deno@v2
with:
deno-version: v2.x
cache: true
- name: Performance test
run: |
# Simple timing test
time deno test --allow-env --allow-net --allow-read packages/lib/src/execution-context.test.ts
publish-check:
name: Publish Check
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Deno
uses: denoland/setup-deno@v2
with:
deno-version: v2.x
cache: true
- name: Dry run publish schema package
run: |
cd packages/schema
deno publish --dry-run --allow-slow-types
- name: Dry run publish lib package
run: |
cd packages/lib
deno publish --dry-run --allow-slow-types
integration:
name: Integration
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Deno
uses: denoland/setup-deno@v2
with:
deno-version: v2.x
cache: true
- name: Run integration tests
run: |
# Run only integration tests
deno test --allow-env --allow-net --allow-read packages/lib/test/
- name: Test cross-package imports
run: |
# Test package imports
deno eval "
import { RuntimeAgent } from './packages/lib/src/runtime-agent.ts';
import { events, schema } from './packages/schema/mod.ts';
console.log('Cross-package imports work');
"
cross-platform:
name: Cross Platform
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
steps:
- name: Configure git (Windows fix)
if: matrix.os == 'windows-latest'
run: |
git config --system core.autocrlf false
git config --system core.eol lf
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Deno
uses: denoland/setup-deno@v2
with:
deno-version: v2.x
cache: true
- name: Run core tests
run: deno test --allow-env --allow-net --allow-read packages/lib/src/
notify:
name: Notify
runs-on: ubuntu-latest
needs: [lint, test, test-examples, package-check, integration]
if: always()
steps:
- name: Notify on success
if: ${{ needs.lint.result == 'success' && needs.test.result == 'success' && needs.test-examples.result == 'success' && needs.package-check.result == 'success' && needs.integration.result == 'success' }}
run: echo "All checks passed"
- name: Notify on failure
if: ${{ needs.lint.result == 'failure' || needs.test.result == 'failure' || needs.test-examples.result == 'failure' || needs.package-check.result == 'failure' || needs.integration.result == 'failure' }}
run: |
echo "Some checks failed"
echo "Lint: ${{ needs.lint.result }}"
echo "Test: ${{ needs.test.result }}"
echo "Test Examples: ${{ needs.test-examples.result }}"
echo "Package Check: ${{ needs.package-check.result }}"
echo "Integration: ${{ needs.integration.result }}"
exit 1