Files
humanlayer/.github/workflows/main.yml
2025-07-28 11:14:28 -05:00

160 lines
4.1 KiB
YAML

name: Main
on:
push:
branches:
- main
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
jobs:
# todo needs check-ts and test-ts too!
checks:
runs-on: ubuntu-latest
steps:
- name: Check out
uses: actions/checkout@v4
- uses: actions/cache@v3
with:
path: ~/.cache/pre-commit
key: pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
- uses: actions/setup-node@v4
with:
node-version: 22
- name: Install Claude Code CLI
run: npm install -g @anthropic-ai/claude-code
- name: Install uv
uses: astral-sh/setup-uv@v4
with:
enable-cache: true
cache-dependency-glob: "uv.lock"
- name: "Set up Python"
uses: actions/setup-python@v5
with:
python-version-file: "pyproject.toml"
- name: Install the project
run: uv sync --all-extras --dev
- name: Install bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Install ts deps
run: npm -C humanlayer-ts install && npm -C hlyr install && npm -C humanlayer-ts-vercel-ai-sdk install
- name: Install wui deps
run: bun install --cwd=humanlayer-wui
- uses: actions/setup-go@v5
with:
go-version: stable
# TODO: Update this, let's just pull the binary?
- name: Install golangci-lint
run: go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
- name: Install mockgen
run: go install go.uber.org/mock/mockgen@latest
- name: Install Rust
uses: dtolnay/rust-toolchain@1.83.0
with:
components: rustfmt,clippy
- name: Cache and install Tauri system dependencies
if: runner.os == 'Linux'
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: libwebkit2gtk-4.1-dev build-essential curl wget file libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev
version: 1.0
- name: Build CLI
run: npm -C hlyr run build
- name: Generate Go mocks
run: make -C hld mocks
- name: Run checks
run: make check
tests:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.11"]
fail-fast: false
steps:
- name: Check out
uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: "npm"
cache-dependency-path: humanlayer-ts/package-lock.json
- name: Install Claude Code CLI
run: npm install -g @anthropic-ai/claude-code
- name: Install uv
uses: astral-sh/setup-uv@v4
with:
enable-cache: true
cache-dependency-glob: "uv.lock"
- name: Set up Python ${{ matrix.python-version }}
run: uv python install ${{ matrix.python-version }}
- name: Install ts deps
run: npm -C humanlayer-ts install && npm -C hlyr install && npm -C humanlayer-ts-vercel-ai-sdk install
- uses: actions/setup-go@v5
with:
go-version: stable
- name: Install mockgen
run: go install go.uber.org/mock/mockgen@latest
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Cache and install Tauri system dependencies
if: runner.os == 'Linux'
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: libwebkit2gtk-4.1-dev build-essential curl wget file libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev
version: 1.0
- name: Build CLI
run: npm -C hlyr run build
- name: Generate Go mocks
run: make -C hld mocks
- name: Install bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- name: Install wui deps
run: bun install --cwd=humanlayer-wui
- name: Test
run: make test
- name: Upload Test Results
if: always()
uses: actions/upload-artifact@v4
with:
name: pytest-results-${{ matrix.python-version }}
path: |
junit.xml
coverage.xml