diff --git a/.forgejo/workflows/ci.yml b/.forgejo/workflows/ci.yml new file mode 100644 index 0000000..ef0fb18 --- /dev/null +++ b/.forgejo/workflows/ci.yml @@ -0,0 +1,78 @@ +name: Check + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + check-backend: + name: Backend + runs-on: docker + + steps: + - name: Checkout Repo + uses: actions/checkout@v4 + + - name: Install Rust + uses: https://codeberg.org/wackbyte/rust-toolchain@trunk + with: + toolchain: stable + components: rustfmt, clippy + - name: Cache + uses: https://github.com/Swatinem/rust-cache@v2 + with: + # Don't cache ~/.cargo/bin since we restore the cache after we install things there + cache-bin: "false" + workspaces: "backend" + - name: "Check Format" + run: cargo fmt --check + - name: "Build" + run: | + # hurl needs libxml needs libclang + apt update && apt install -y clang + cargo build --tests + - name: "Lint" + run: | + rustup component add clippy + cargo clippy + - name: "Unit Tests" + run: | + cargo test -- --skip api + - name: "Integration Tests" + run: cargo test --test api + + check-frontend: + name: Frontend + runs-on: docker + steps: + - name: Checkout Repo + uses: actions/checkout@v4 + - name: Install Node.js + uses: actions/setup-node@v4 + with: + cache: "npm" + cache-dependency-path: 'frontend/package-lock.json' + node-version: '20' + + - name: Install dependencies + run: npm ci + working-directory: frontend + + - name: Check Format + run: "npm run format:check" + working-directory: frontend + + - name: Lint + run: npm run lint + working-directory: frontend + + - name: Typecheck + run: npm run typecheck || echo "Failed" + working-directory: frontend + + - name: Test + run: npm run test + working-directory: frontend + diff --git a/justfile b/justfile index ad5f466..28dce57 100644 --- a/justfile +++ b/justfile @@ -23,7 +23,7 @@ fmt: fmt-backend fmt-frontend fmt-check: fmt-check-backend fmt-check-frontend -lint: lint-backend lint-frontend +lint: lint-backend lint-frontend typecheck-frontend check: fmt-check lint test