name: KTX CI on: push: branches: [main] pull_request: types: [opened, synchronize, reopened, ready_for_review] workflow_dispatch: permissions: contents: read concurrency: group: ktx-ci-${{ github.ref }} cancel-in-progress: true jobs: check: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Setup pnpm uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0 with: run_install: false - name: Setup Node.js uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 with: node-version: "24" cache: "pnpm" cache-dependency-path: "pnpm-lock.yaml" - name: Install TypeScript dependencies run: pnpm install --frozen-lockfile - name: Run TypeScript checks run: pnpm run check - name: Run slow TypeScript tests run: pnpm run test:slow - name: Run CLI smoke tests run: pnpm run smoke - name: Setup Python uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: "3.13" - name: Setup uv uses: astral-sh/setup-uv@eac588ad8def6316056a12d4907a9d4d84ff7a3b # v7.3.0 with: enable-cache: true cache-dependency-glob: "uv.lock" - name: Install Python dependencies run: uv sync --all-packages - name: Run Python checks run: uv run pytest - name: Build and verify package artifacts run: pnpm run artifacts:check - name: Upload package artifacts uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0 with: name: ktx-package-artifacts-${{ github.sha }} path: | dist/artifacts/manifest.json dist/artifacts/npm/*.tgz dist/artifacts/python/*.whl dist/artifacts/python/*.tar.gz if-no-files-found: error retention-days: 7