# Use the latest 2.1 version of CircleCI pipeline process engine. # See: https://circleci.com/docs/2.0/configuration-reference version: 2.1 # Define a job to be invoked later in a workflow. # See: https://circleci.com/docs/2.0/configuration-reference/#jobs jobs: build: # Specify the execution environment. You can specify an image from Dockerhub or use one of our Convenience Images from CircleCI's Developer Hub. # See: https://circleci.com/docs/2.0/configuration-reference/#docker-machine-macos-windows-executor docker: - image: cimg/rust:1.62.0 environment: RUST_LOG: info RUSTFLAGS: "-C instrument-coverage" LLVM_PROFILE_FILE: "pgcat-%m.profraw" - image: postgres:14 # auth: # username: mydockerhub-user # password: $DOCKERHUB_PASSWORD environment: POSTGRES_USER: postgres POSTGRES_DB: postgres POSTGRES_PASSWORD: postgres POSTGRES_HOST_AUTH_METHOD: scram-sha-256 # Add steps to the job # See: https://circleci.com/docs/2.0/configuration-reference/#steps steps: - checkout - restore_cache: key: cargo-lock-2-{{ checksum "Cargo.lock" }} - run: name: "Lint" command: "cargo fmt --check" - run: name: "Install dependencies" command: "sudo apt-get update && sudo apt-get install -y psmisc postgresql-contrib-12 postgresql-client-12 ruby ruby-dev libpq-dev python3 python3-pip lcov llvm-11" - run: name: "Install rust tools" command: "cargo install cargo-binutils rustfilt && rustup component add llvm-tools-preview" - run: name: "Build" command: "cargo build" - run: name: "Tests" command: "cargo test && bash .circleci/run_tests.sh && .circleci/generate_coverage.sh" - store_artifacts: path: /tmp/cov destination: coverage-data - save_cache: key: cargo-lock-2-{{ checksum "Cargo.lock" }} paths: - target - ~/.cargo # Invoke jobs via workflows # See: https://circleci.com/docs/2.0/configuration-reference/#workflows workflows: build: jobs: - build