Rewrite the developer mcp using the rmcp sdk #8750
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
merge_group: | |
branches: | |
- main | |
workflow_dispatch: | |
name: CI | |
jobs: | |
changes: | |
runs-on: ubuntu-latest | |
outputs: | |
docs-only: ${{ steps.filter.outputs.docs-only }} | |
code: ${{ steps.filter.outputs.code }} | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # pin@v4 | |
- name: Check for file changes | |
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # pin@v3 | |
id: filter | |
with: | |
filters: | | |
docs-only: | |
- 'documentation/**' | |
code: | |
- '!documentation/**' | |
rust-format: | |
name: Check Rust Code Format | |
runs-on: ubuntu-latest | |
needs: changes | |
if: needs.changes.outputs.code == 'true' || github.event_name != 'pull_request' | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # pin@v4 | |
- name: Run cargo fmt | |
run: source ./bin/activate-hermit && cargo fmt --check | |
rust-build-and-test: | |
name: Build and Test Rust Project | |
runs-on: goose | |
needs: changes | |
if: needs.changes.outputs.code == 'true' || github.event_name != 'pull_request' | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # pin@v4 | |
- name: Activate hermit and set CARGO_HOME | |
run: | | |
source bin/activate-hermit | |
echo "CARGO_HOME=$CARGO_HOME" >> $GITHUB_ENV | |
echo "RUSTUP_HOME=$RUSTUP_HOME" >> $GITHUB_ENV | |
- name: Install Dependencies | |
run: | | |
sudo apt update -y | |
sudo apt install -y libdbus-1-dev gnome-keyring libxcb1-dev | |
- name: Cache Cargo artifacts | |
uses: actions/cache@2f8e54208210a422b2efd51efaa6bd6d7ca8920f # pin@v3 | |
with: | |
path: | | |
${{ env.CARGO_HOME }}/bin/ | |
${{ env.CARGO_HOME }}/registry/index/ | |
${{ env.CARGO_HOME }}/registry/cache/ | |
${{ env.CARGO_HOME }}/git/db/ | |
target/ | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
${{ runner.os }}-cargo- | |
- name: Build and Test | |
run: | | |
gnome-keyring-daemon --components=secrets --daemonize --unlock <<< 'foobar' | |
source ../bin/activate-hermit | |
export CARGO_INCREMENTAL=0 | |
cargo test --jobs 2 | |
working-directory: crates | |
- name: Lint | |
run: | | |
source ./bin/activate-hermit | |
export CARGO_INCREMENTAL=0 | |
./scripts/clippy-lint.sh | |
- name: Install Node.js Dependencies for OpenAPI Check | |
run: source ../../bin/activate-hermit && npm ci | |
working-directory: ui/desktop | |
- name: Check OpenAPI Schema is Up-to-Date | |
run: | | |
source ./bin/activate-hermit | |
just check-openapi-schema | |
desktop-lint: | |
name: Lint Electron Desktop App | |
runs-on: macos-latest | |
needs: changes | |
if: needs.changes.outputs.code == 'true' || github.event_name != 'pull_request' | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # pin@v4 | |
- name: Cache npm dependencies | |
uses: actions/cache@2f8e54208210a422b2efd51efaa6bd6d7ca8920f # pin@v3 | |
with: | |
path: | | |
ui/desktop/node_modules | |
.hermit/node/cache | |
key: ci-npm-cache-v1-${{ runner.os }}-${{ hashFiles('ui/desktop/package-lock.json') }} | |
restore-keys: | | |
ci-npm-cache-v1-${{ runner.os }}- | |
- name: Install Dependencies | |
run: source ../../bin/activate-hermit && npm ci | |
working-directory: ui/desktop | |
- name: Run Lint | |
run: source ../../bin/activate-hermit && npm run lint:check | |
working-directory: ui/desktop | |
- name: Run Tests | |
run: source ../../bin/activate-hermit && npm run test:run | |
working-directory: ui/desktop | |
# Faster Desktop App build for PRs only | |
bundle-desktop-unsigned: | |
uses: ./.github/workflows/bundle-desktop.yml | |
permissions: | |
id-token: write | |
contents: read | |
needs: changes | |
if: (github.event_name == 'pull_request' || github.event_name == 'merge_group') && (needs.changes.outputs.code == 'true' || github.event_name != 'pull_request') | |
with: | |
signing: false |