name: Test on: push: branches: - main - 'feature/**' - 'bug/**' - 'fix/**' pull_request: branches: - main jobs: rust-test: runs-on: ubuntu-latest container: image: ghcr.io/tftsr/trcaa-linux-amd64:rust1.88-node22 credentials: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} steps: - name: Checkout uses: actions/checkout@v6 with: fetch-depth: 1 - name: Cache cargo registry uses: actions/cache@v5 with: path: | ~/.cargo/registry/index ~/.cargo/registry/cache ~/.cargo/git/db key: ${{ runner.os }}-cargo-linux-amd64-${{ hashFiles('**/Cargo.lock') }} restore-keys: | ${{ runner.os }}-cargo-linux-amd64- - name: Install npm dependencies run: npm ci --legacy-peer-deps - name: Update version from Git run: node scripts/update-version.mjs - name: Download kubectl binaries run: | chmod +x scripts/download-kubectl.sh ./scripts/download-kubectl.sh - name: Generate lockfile run: cargo generate-lockfile --manifest-path src-tauri/Cargo.toml - name: Rust fmt check run: cargo fmt --manifest-path src-tauri/Cargo.toml --check - name: Rust clippy run: cargo clippy --manifest-path src-tauri/Cargo.toml -- -D warnings - name: Rust tests run: cargo test --manifest-path src-tauri/Cargo.toml -- --test-threads=1 frontend-test: runs-on: ubuntu-latest container: image: node:22-alpine steps: - name: Checkout uses: actions/checkout@v6 with: fetch-depth: 1 - name: Cache npm uses: actions/cache@v5 with: path: ~/.npm key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-npm- - name: Install dependencies run: npm ci --legacy-peer-deps - name: TypeScript type check run: npx tsc --noEmit - name: Run frontend tests run: npm run test:run