name: Lint and Build on: push: branches: [ "main" ] pull_request: branches: [ "main" ] env: CARGO_TERM_COLOR: always # Configure Docker CLI to use the DinD service DOCKER_HOST: tcp://docker-in-dinner:2375 DOCKER_TLS_CERTDIR: "" 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 backend working-directory: ./backend run: cargo build --verbose - name: Temporarily exclude integration tests working-directory: ./backend run: mv tests tests.disabled - name: Run unit tests working-directory: ./backend run: cargo test --verbose - name: Restore integration tests working-directory: ./backend run: mv tests.disabled tests docker-build: runs-on: docker container: image: docker:dind needs: build steps: - name: Verify Docker connection run: | echo "Docker version:" docker --version || true echo "Docker info:" docker info || true echo "Docker ps:" docker ps || true - uses: https://github.com/actions/checkout@v4 - name: Set up Docker Buildx run: | docker buildx version || true docker buildx create --use || true - name: Build Docker image working-directory: ./backend run: | docker build -t normogen-backend:test . docker images | grep normogen-backend