Skip to content

intellij-backend: visibility-scoped search, parallel diagnostics, batched reads, telemetry #314

intellij-backend: visibility-scoped search, parallel diagnostics, batched reads, telemetry

intellij-backend: visibility-scoped search, parallel diagnostics, batched reads, telemetry #314

Workflow file for this run

name: CI
on:
pull_request:
push:
branches:
- main
permissions:
contents: read
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
jobs:
build-and-test:
name: Build & test (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-latest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "21"
- uses: gradle/actions/setup-gradle@v4
- uses: actions/cache@v4
with:
path: ~/.gradle/kast/intellij-distributions
key: idea-dist-${{ hashFiles('gradle/libs.versions.toml') }}
- name: Test and build portable distribution
run: >
./gradlew
:analysis-api:test
:analysis-server:test
:backend-standalone:test
:kast-cli:test
:kast-cli:portableDistZip
- name: Upload build-and-test test reports
if: always()
uses: actions/upload-artifact@v4
with:
name: build-and-test-reports-${{ matrix.os }}
path: |
**/build/test-results/test/*.xml
**/build/reports/tests/test/
if-no-files-found: ignore
retention-days: 3
- name: Upload portable distribution
uses: actions/upload-artifact@v4
with:
name: kast-portable-${{ matrix.os }}
path: kast-cli/build/distributions/kast-cli-*-portable.zip
if-no-files-found: error
retention-days: 1
test-intellij-plugin:
name: IntelliJ plugin
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "21"
- uses: gradle/actions/setup-gradle@v4
- uses: actions/cache@v4
with:
path: ~/.gradle/kast/intellij-distributions
key: idea-dist-${{ hashFiles('gradle/libs.versions.toml') }}
- name: Test and verify IntelliJ plugin
run: >
./gradlew
:backend-intellij:test
:backend-intellij:buildPlugin
:backend-intellij:verifyPluginStructure
:backend-intellij:verifyPluginXmlPresent
- name: Upload IntelliJ plugin artifact
uses: actions/upload-artifact@v4
with:
name: kast-intellij-plugin
path: backend-intellij/build/distributions/*.zip
if-no-files-found: error
retention-days: 1
- name: Run IntelliJ performance baselines
run: ./gradlew :backend-intellij:test -PincludeTags=performance
smoke-kast-cli:
name: Smoke CLI (${{ matrix.os }})
runs-on: ${{ matrix.os }}
needs: build-and-test
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-latest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "21"
- name: Download portable distribution
uses: actions/download-artifact@v4
with:
name: kast-portable-${{ matrix.os }}
path: kast-cli/build/distributions
- name: Smoke portable Kast distribution
shell: bash
run: |
set -euo pipefail
dist_dir="$RUNNER_TEMP/kast-dist"
rm -rf "$dist_dir"
mkdir -p "$dist_dir"
unzip -q kast-cli/build/distributions/kast-cli-*-portable.zip -d "$dist_dir"
"$dist_dir/kast-cli/kast-cli" --help
- name: Smoke installer
shell: bash
run: ./.github/scripts/smoke-installer.sh
eval-agent-routing:
name: Eval agent routing
runs-on: ubuntu-latest
needs: smoke-kast-cli
steps:
- uses: actions/checkout@v5
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "21"
- name: Download portable distribution
uses: actions/download-artifact@v4
with:
name: kast-portable-ubuntu-latest
path: kast-cli/build/distributions
- name: Prepare kast binary
shell: bash
run: |
set -euo pipefail
dist_dir="$RUNNER_TEMP/kast-dist"
rm -rf "$dist_dir"
mkdir -p "$dist_dir"
unzip -q kast-cli/build/distributions/kast-cli-*-portable.zip -d "$dist_dir"
echo "KAST_BIN=$dist_dir/kast-cli/kast-cli" >> "$GITHUB_ENV"
- name: Run skill evaluation
shell: bash
run: |
set -euo pipefail
"$KAST_BIN" eval skill --skill-dir="$GITHUB_WORKSPACE/.agents/skills/kast" > "$RUNNER_TEMP/eval-result.json"
echo "=== Eval Result ==="
cat "$RUNNER_TEMP/eval-result.json" | python3 -c "import sys, json; d=json.load(sys.stdin); print(f'Score: {d[\"summary\"][\"score\"]}/100 ({d[\"summary\"][\"grade\"]})')"
- name: Upload eval result
if: always()
uses: actions/upload-artifact@v4
with:
name: skill-eval-result
path: ${{ runner.temp }}/eval-result.json
retention-days: 30