Skip to content

build(deps-dev): bump the minor-and-patch group across 1 directory with 3 updates #331

build(deps-dev): bump the minor-and-patch group across 1 directory with 3 updates

build(deps-dev): bump the minor-and-patch group across 1 directory with 3 updates #331

Workflow file for this run

# CI pipeline for the OpenDecree TypeScript SDK.
#
# Jobs: lint, typecheck, test (matrix: Node 22/24), examples, integration → check (alls-green gate)
# The check job aggregates all results for branch protection.
#
# Docs-only PRs (*.md, docs/**, examples/**/README.md) skip the entire workflow via
# paths-ignore. Required checks for those PRs are satisfied by ci-docs.yml.
#
# The first job defines YAML anchors (&checkout, &setup-node-22, &install)
# on its setup steps; subsequent jobs alias them to avoid repetition.
# The test job uses its own setup-node step because the matrix node-version
# varies per run.
#
# The integration job checks out the decree server repo, builds the server
# and tools images, then runs the Vitest integration suite against a
# docker-compose stack (postgres + redis + decree).
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
paths-ignore:
- "**/*.md"
- "docs/**"
- "examples/**/README.md"
workflow_call:
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- &checkout
name: Checkout
uses: actions/checkout@v7
with:
persist-credentials: false
- &setup-node-22
name: Set up Node.js
uses: actions/setup-node@v7
with:
node-version: "22"
cache: npm
- &install
name: Install dependencies
run: npm ci
- name: Run biome lint
run: npm run lint
typecheck:
name: Typecheck
runs-on: ubuntu-latest
steps:
- *checkout
- *setup-node-22
- *install
- name: Run tsc
run: npm run typecheck
test:
name: Test (Node ${{ matrix.node-version }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node-version: ["22", "24"]
steps:
- *checkout
- name: Set up Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v7
with:
node-version: ${{ matrix.node-version }}
cache: npm
- *install
- name: Run tests with coverage
run: npm run test:coverage
- name: Upload coverage to Codecov
# codecov/codecov-action@v6.0.0
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f
with:
files: coverage/coverage-final.json
token: ${{ secrets.CODECOV_TOKEN }}
version:
name: Version sync
runs-on: ubuntu-latest
steps:
- *checkout
- *setup-node-22
- *install
- name: Check src/version.ts matches package.json
run: npm run check:version
examples:
name: Examples
runs-on: ubuntu-latest
steps:
- *checkout
- *setup-node-22
- name: Install SDK dependencies
run: npm ci
- name: Build SDK
run: npm run build
- name: Install example dependencies
run: cd examples && npm ci
- name: Typecheck examples
run: cd examples && npx tsc --noEmit
integration:
name: Integration
runs-on: ubuntu-latest
timeout-minutes: 20
permissions:
contents: read
packages: read
steps:
- *checkout
- *setup-node-22
- *install
- name: Checkout decree server
uses: actions/checkout@v7
with:
repository: opendecree/decree
path: _decree
persist-credentials: false
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4
with:
driver: docker-container
- name: Log in to ghcr.io
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build tools image
uses: docker/build-push-action@v7
with:
context: _decree
file: _decree/build/Dockerfile.tools
load: true
tags: decree-tools
cache-from: type=gha,scope=decree-tools
cache-to: type=gha,scope=decree-tools,mode=max
- name: Build server image
uses: docker/build-push-action@v7
with:
context: _decree
file: _decree/build/Dockerfile
load: true
tags: decree-server
cache-from: type=gha,scope=decree-server
cache-to: type=gha,scope=decree-server,mode=max
- name: Start decree stack
run: docker compose up -d --wait service
env:
DECREE_SRC: ./_decree
TOOLS_IMAGE: decree-tools
SERVICE_IMAGE: decree-server
- name: Run integration tests
run: npm run test:integration
- name: Tear down decree stack
if: always()
run: docker compose down -v
env:
DECREE_SRC: ./_decree
check:
name: CI check
if: always()
needs: [lint, typecheck, test, examples, version, integration]
runs-on: ubuntu-latest
steps:
- uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}