Skip to content

Revert "chore(release): update version and changelog for v1.8.0" #478

Revert "chore(release): update version and changelog for v1.8.0"

Revert "chore(release): update version and changelog for v1.8.0" #478

Workflow file for this run

name: Tests
on:
push:
branches: [main]
paths:
- "src/**"
- "package.json"
- "pnpm-lock.yaml"
pull_request:
paths:
- "src/**"
- "package.json"
- "pnpm-lock.yaml"
workflow_dispatch:
permissions:
contents: read
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
changes:
name: Detect changes
runs-on: ubuntu-latest
timeout-minutes: 2
outputs:
relevant: ${{ steps.filter.outputs.relevant }}
steps:
- uses: actions/checkout@v6
- uses: dorny/paths-filter@v3
id: filter
with:
filters: |
relevant:
- 'src/**'
- 'package.json'
- 'pnpm-lock.yaml'
test:
name: Test
needs: changes
# Run tests when release-relevant files change or when manually dispatched.
if: needs.changes.outputs.relevant == 'true' || github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
# os: [ubuntu-latest, macos-latest, windows-latest]
os: [ubuntu-latest]
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Setup pnpm
uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: "24"
cache: "pnpm"
- name: Setup task runner
uses: go-task/setup-task@01a4adf9db2d14c1de7a560f09170b6e0df736aa # v2.1.0
with:
version: "3.x"
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Check types
run: task check-types
- name: Lint
run: task lint
env:
PATH: ${{ github.workspace }}/node_modules/@biomejs/biome/bin:$PATH
- name: Compile
run: task compile
- name: Run unit tests
run: xvfb-run -a task unit-test-coverage -- --reporter=default --reporter=junit --outputFile=test-report.junit.xml
env:
CI: true
- name: Cache VS Code test binary
uses: actions/cache@v5
with:
path: .vscode-test
key: ${{ runner.os }}-vscode-test-${{ hashFiles('package.json') }}
restore-keys: |
${{ runner.os }}-vscode-test-
- name: Run extension tests
run: xvfb-run -a task extension-tests
env:
CI: true
- name: Setup Ollama
uses: ai-action/setup-ollama@v2
- name: Cache Ollama model
uses: actions/cache@v5
with:
path: ~/.ollama
key: ${{ runner.os }}-ollama-smollm135m-qwen3
restore-keys: |
${{ runner.os }}-ollama-
- name: Run integration tests
run: |
if [[ -n "${OLLAMA_CLOUD_API_KEY:-}" ]]; then
echo "βœ… OLLAMA_API_KEY detected; running integration tests with cloud coverage enabled."
else
echo "⚠️ OLLAMA_API_KEY not configured; running integration tests in local-only mode."
fi
xvfb-run -a task integration-tests
env:
CI: true
OLLAMA_TEST_MODEL: smollm:135m
OLLAMA_TEST_TOOL_MODEL: qwen3:0.6b
OLLAMA_CLOUD_API_KEY: ${{ secrets.OLLAMA_API_KEY }}
- name: Upload test artifacts on failure
if: failure()
uses: actions/upload-artifact@v6
with:
name: test-artifacts
path: |
out/
dist/
.vscode-test/
coverage/
retention-days: 7
- name: Upload test results to Codecov
if: ${{ !cancelled() }}
uses: codecov/test-results-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: coverage/
flags: unittests
name: codecov-umbrella
fail_ci_if_error: true
- name: Upload extension bundle
if: success()
uses: actions/upload-artifact@v6
with:
name: extension-bundle
path: dist/extension.js
retention-days: 7
ci-status:
name: CI Status
runs-on: ubuntu-latest
timeout-minutes: 1
needs: [test]
if: always()
steps:
- name: Check required jobs
run: |
result="${{ needs.test.result }}"
if [[ "$result" == "failure" || "$result" == "cancelled" ]]; then
echo "❌ test job ${result}"
exit 1
fi
echo "βœ… All required CI jobs passed or were skipped."