Changed from -D warnings to -W warnings so that clippy warnings don't block the CI pipeline, allowing us to see results from build and test steps as well.
99 lines
2.3 KiB
YAML
99 lines
2.3 KiB
YAML
name: Lint and Build
|
|
|
|
on:
|
|
push:
|
|
branches: [ "main" ]
|
|
pull_request:
|
|
branches: [ "main" ]
|
|
|
|
env:
|
|
CARGO_TERM_COLOR: always
|
|
|
|
jobs:
|
|
lint:
|
|
runs-on: docker
|
|
container:
|
|
image: rust:latest
|
|
|
|
steps:
|
|
- name: Install Node.js
|
|
run: |
|
|
apt-get update && apt-get install -y curl
|
|
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
|
|
apt-get install -y nodejs
|
|
|
|
- uses: https://github.com/actions/checkout@v4
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
apt-get update && apt-get install -y pkg-config libssl-dev
|
|
|
|
- name: Install Rust components
|
|
run: |
|
|
rustup component add rustfmt clippy
|
|
|
|
- name: Run rustfmt (auto-fix)
|
|
working-directory: ./backend
|
|
run: cargo fmt --all
|
|
continue-on-error: true
|
|
|
|
- name: Check formatting
|
|
working-directory: ./backend
|
|
run: cargo fmt --all -- --check
|
|
continue-on-error: true
|
|
|
|
- name: Run clippy
|
|
working-directory: ./backend
|
|
run: cargo clippy --all-targets --all-features -- -W warnings
|
|
|
|
build:
|
|
runs-on: docker
|
|
container:
|
|
image: rust:latest
|
|
needs: lint
|
|
|
|
steps:
|
|
- name: Install Node.js
|
|
run: |
|
|
apt-get update && apt-get install -y curl
|
|
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
|
|
apt-get install -y nodejs
|
|
|
|
- uses: https://github.com/actions/checkout@v4
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
apt-get update && apt-get install -y pkg-config libssl-dev
|
|
|
|
- name: Build project
|
|
working-directory: ./backend
|
|
run: cargo build --verbose
|
|
|
|
- name: Run tests
|
|
working-directory: ./backend
|
|
run: cargo test --verbose
|
|
|
|
docker-build:
|
|
runs-on: docker
|
|
container:
|
|
image: docker:latest
|
|
needs: build
|
|
services:
|
|
docker:
|
|
image: docker:dind
|
|
steps:
|
|
- name: Install Node.js
|
|
run: |
|
|
apk add --no-cache nodejs npm
|
|
|
|
- uses: https://github.com/actions/checkout@v4
|
|
|
|
- name: Build backend Docker image
|
|
run: |
|
|
cd backend
|
|
docker build -t normogen-backend:latest .
|
|
|
|
- name: Build frontend Docker image
|
|
run: |
|
|
cd frontend
|
|
docker build -t normogen-frontend:latest .
|