stages: - checks - build cargo-test: image: rust:latest stage: checks before_script: - apt-get update && apt-get install libasound2-dev libudev-dev -y script: - cargo test --workspace rules: - exists: - Cargo.toml cargo-clippy: image: rust:latest stage: checks before_script: - apt-get update && apt-get install libasound2-dev libudev-dev -y - rustup component add clippy script: - cargo clippy --workspace rules: - exists: - Cargo.toml cargo-fmt: image: rust:latest stage: checks before_script: - rustup install nightly --profile minimal - rustup component add rustfmt --toolchain nightly script: - cargo +nightly fmt --check rules: - exists: - Cargo.toml development-image: image: docker:latest stage: build services: - docker:dind script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG rules: - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH exists: - Dockerfile production-image: image: docker:latest stage: build services: - docker:dind script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker build -t $CI_REGISTRY_IMAGE:latest - docker push $CI_REGISTRY_IMAGE:latest rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH exists: - Dockerfile