Skip to content

Merge pull request #447 from bssm-oss/codex/operator-chat-layout-demo… #1213

Merge pull request #447 from bssm-oss/codex/operator-chat-layout-demo…

Merge pull request #447 from bssm-oss/codex/operator-chat-layout-demo… #1213

Workflow file for this run

name: CI
on:
push:
branches: ["master"]
pull_request:
concurrency:
group: ci-${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
jobs:
verify-format:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "17"
cache: gradle
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Format check
run: ./gradlew --no-daemon formatCheck
timeout-minutes: 10
verify:
runs-on: ubuntu-latest
timeout-minutes: 70
needs: verify-format
strategy:
fail-fast: false
matrix:
shard: [app-core, app-support, app-surface, core, pipeline, security-policy]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "17"
cache: gradle
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Test shard
id: test
shell: bash
run: |
set -euo pipefail
case "${{ matrix.shard }}" in
app-core)
./gradlew --no-daemon test --stacktrace \
--tests 'com.cotor.app.runtime.*' \
-x jacocoTestReport -x jacocoTestCoverageVerification
;;
app-support)
./gradlew --no-daemon test --stacktrace \
--tests 'com.cotor.app.AppServer*' \
--tests 'com.cotor.app.GitWorkspaceServiceTest' \
--tests 'com.cotor.app.DesktopStateStore*' \
--tests 'com.cotor.app.DesktopTuiSessionServiceTest' \
-x jacocoTestReport -x jacocoTestCoverageVerification
;;
app-surface)
./gradlew --no-daemon test --stacktrace \
--tests 'com.cotor.a2a.*' \
--tests 'com.cotor.presentation.*' \
--tests 'com.cotor.chat.*' \
--tests 'com.cotor.stats.*' \
-x jacocoTestReport -x jacocoTestCoverageVerification
;;
core)
./gradlew --no-daemon test --stacktrace \
--tests 'com.cotor.data.*' \
--tests 'com.cotor.context.*' \
--tests 'com.cotor.checkpoint.*' \
--tests 'com.cotor.analysis.*' \
--tests 'com.cotor.monitoring.*' \
--tests 'com.cotor.recovery.*' \
--tests 'com.cotor.reliability.*' \
--tests 'com.cotor.integration.*' \
--tests 'com.cotor.testsupport.*' \
-x jacocoTestReport -x jacocoTestCoverageVerification
;;
pipeline)
./gradlew --no-daemon test --stacktrace \
--tests 'com.cotor.domain.*' \
--tests 'com.cotor.validation.*' \
-x jacocoTestReport -x jacocoTestCoverageVerification
;;
security-policy)
./gradlew --no-daemon test --stacktrace \
--tests 'com.cotor.security.*' \
--tests 'com.cotor.policy.*' \
--tests 'com.cotor.providers.github.*' \
-x jacocoTestReport -x jacocoTestCoverageVerification
;;
*)
echo "Unknown shard: ${{ matrix.shard }}" >&2
exit 1
;;
esac
timeout-minutes: 60
verify-scripts:
runs-on: ubuntu-latest
timeout-minutes: 15
needs: verify-format
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: "20"
- name: Test GitHub scripts
run: node --test .github/scripts/*.test.js
- name: Check Homebrew metadata version
shell: bash
run: |
set -euo pipefail
version="$(grep -E '^version = ' build.gradle.kts | head -n 1 | cut -d '"' -f 2)"
grep -q "v${version}" Formula/cotor.rb
grep -q "v#{version}" Casks/cotor-desktop.rb
verify-app-company:
runs-on: ubuntu-latest
timeout-minutes: 330
needs: verify-format
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "17"
cache: gradle
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Test company shard
id: test
run: |
./gradlew --no-daemon test --stacktrace \
--tests 'com.cotor.app.DesktopAppServiceDashboardRuntimeTest' \
--tests 'com.cotor.app.DesktopAppServiceMergeConfirmationTest' \
--tests 'com.cotor.app.DesktopAppServiceParallelDispatchTest' \
--tests 'com.cotor.app.DesktopAppServiceRequeueOrphanedTest' \
--tests 'com.cotor.app.DesktopAppServiceTimeoutFollowUpTest' \
-x jacocoTestReport -x jacocoTestCoverageVerification
timeout-minutes: 320
- name: Reopen and unassign Linear issue on failed PR tests
if: ${{ failure() && github.event_name == 'pull_request' && steps.test.outcome == 'failure' }}
env:
LINEAR_API_KEY: ${{ secrets.LINEAR_API_KEY }}
run: python3 scripts/linear_pr_failure_gate.py --event-path "$GITHUB_EVENT_PATH"
verify-app-company-runtime:
runs-on: ubuntu-latest
timeout-minutes: 330
needs: verify-format
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "17"
cache: gradle
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Test company runtime shard
id: test
run: |
./gradlew --no-daemon test --stacktrace \
--tests 'com.cotor.app.DesktopAppServiceTest' \
-x jacocoTestReport -x jacocoTestCoverageVerification
timeout-minutes: 320
- name: Reopen and unassign Linear issue on failed PR tests
if: ${{ failure() && github.event_name == 'pull_request' && steps.test.outcome == 'failure' }}
env:
LINEAR_API_KEY: ${{ secrets.LINEAR_API_KEY }}
run: python3 scripts/linear_pr_failure_gate.py --event-path "$GITHUB_EVENT_PATH"
verify-desktop:
runs-on: macos-latest
timeout-minutes: 45
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "17"
cache: gradle
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Swift test
run: swift test
working-directory: macos
timeout-minutes: 20
- name: Desktop bundle smoke build
run: /bin/bash shell/build-desktop-app-bundle.sh
timeout-minutes: 20