Skip to content
Snippets Groups Projects
.gitlab-ci.yml 1.67 KiB
Newer Older
include:
  - project: "picodata/devops/ci-templates"
    file: "build_ci.yml"
    ref: 0.1.0

stages:
  - test
  - lint
  - utility

variables:
  GIT_STRATEGY: clone
  CI_IMAGE_REPOSITORY: docker-public.binary.picodata.io
  CI_IMAGE: "${CI_IMAGE_REPOSITORY}/${CI_PROJECT_NAME}:0.1.0"
  DOCKER_AUTH_CONFIG: $DOCKER_AUTH_RO
  CARGO_NET_GIT_FETCH_WITH_CLI: "true"

default:
  image: $CI_IMAGE

.rust_cache: &rust_cache
  - paths:
      - $CI_PROJECT_DIR/.cargo/.crates.toml
      - $CI_PROJECT_DIR/.cargo/.crates2.json
      - $CI_PROJECT_DIR/.cargo/bin
      - $CI_PROJECT_DIR/.cargo/registry/index
      - $CI_PROJECT_DIR/.cargo/registry/cache
      - $CI_PROJECT_DIR/.cargo/git/db
      - $CI_PROJECT_DIR/.cache/sccache
      - $CI_PROJECT_DIR/target/debug/libexample.so
    key:
      files:
        - ./Cargo.lock
    when: "always"

.base:
  variables:
    # variables for rust cache
    CARGO_HOME: $CI_PROJECT_DIR/.cargo
    SCCACHE_DIR: $CI_PROJECT_DIR/.cache/sccache
    RUSTC_WRAPPER: sccache
  image:
    name: $CI_IMAGE
    pull_policy: [always, if-not-present]
  tags:
    - docker
  needs: []
  interruptible: true
  cache:
    - *rust_cache

int-test:
  stage: "test"
  extends: .base
  script:
    - make int-test

rust-lint:
  extends: .base
  stage: lint
  script:
    - make rust-lint

rust-fmt:
  stage: lint
  extends: .base
  script:
    - cargo fmt --check

publish-dry-run:
  stage: utility
  extends: .base
  script:
    - make publish-dry-run

publish:
  stage: utility
  extends: .base
  when: manual
  script:
    - make publish
  needs: [publish-dry-run]

build_ci:
  stage: utility
  extends: .build_ci_template
    DOCKER_REPOSITORY: "docker-public.binary.picodata.io"