Skip to content

ci: pin actions to Node 24 majors ahead of 2026-06-16 deprecation #30

ci: pin actions to Node 24 majors ahead of 2026-06-16 deprecation

ci: pin actions to Node 24 majors ahead of 2026-06-16 deprecation #30

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
shellcheck:
name: shellcheck
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Run shellcheck
run: |
shellcheck --version
shellcheck \
pipeline/queries/_tests/test_canonical.sh \
pipeline/queries/_tests/test_queries_integration.sh \
pipeline/queries/_tests/test_gojq_parity.sh \
pipeline/queries/_tests/smoke_test_real_catalog.sh \
extractors/swift/tests/test_package_graph.sh
pipeline:
name: pipeline + typescript extractor
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: extractors/typescript/package-lock.json
- name: Cache gojq
# gojq is the engine the binary will embed (per ADR-0005). The parity
# test below verifies every query produces semantically equivalent
# output under gojq and system jq, so the binary is safe to ship.
id: cache-gojq
uses: actions/cache@v5
with:
path: /usr/local/bin/gojq
key: gojq-${{ runner.os }}-0.12.19
- name: Install gojq
if: steps.cache-gojq.outputs.cache-hit != 'true'
run: |
GOJQ_VERSION=0.12.19
curl -sSL "https://github.com/itchyny/gojq/releases/download/v${GOJQ_VERSION}/gojq_v${GOJQ_VERSION}_linux_amd64.tar.gz" \
| tar -xz -C /tmp
sudo mv "/tmp/gojq_v${GOJQ_VERSION}_linux_amd64/gojq" /usr/local/bin/gojq
- name: Verify toolchain
run: |
jq --version
gojq --version
node --version
- name: Install TypeScript extractor deps
working-directory: extractors/typescript
run: npm ci
- name: Syntax-check extractor entrypoints
run: |
node --check extractors/typescript/type-catalog.mjs
node --check extractors/typescript/function-catalog.mjs
node --check extractors/file-hashes/file-hashes.mjs
- name: jq canonical helper tests
run: pipeline/queries/_tests/test_canonical.sh
- name: jq query integration tests
run: pipeline/queries/_tests/test_queries_integration.sh
- name: gojq / jq parity tests
run: pipeline/queries/_tests/test_gojq_parity.sh
swift:
name: swift extractor
runs-on: macos-latest
defaults:
run:
working-directory: extractors/swift
steps:
- uses: actions/checkout@v6
- name: Select Xcode
run: sudo xcode-select -s /Applications/Xcode.app
- name: Verify toolchain
run: |
swift --version
jq --version
- name: Cache SwiftPM build
uses: actions/cache@v5
with:
path: |
extractors/swift/.build
~/Library/Caches/org.swift.swiftpm
key: ${{ runner.os }}-swiftpm-${{ hashFiles('extractors/swift/Package.resolved') }}
restore-keys: |
${{ runner.os }}-swiftpm-
- name: Build
run: swift build
- name: Integration tests (package-graph)
run: tests/test_package_graph.sh