fabaccess-bffh/.gitlab-ci.yml
2021-12-13 23:57:14 +00:00

134 lines
3.6 KiB
YAML

# Official language image. Look for the different tagged releases at:
# https://hub.docker.com/r/library/rust/tags/
image: "rust:latest"
# Optional: Pick zero or more services to be used on all builds.
# Only needed when using a docker container to run your tests in.
# Check out: http://docs.gitlab.com/ce/ci/docker/using_docker_images.html#what-is-a-service
# services:
# - mysql:latest
# - redis:latest
# - postgres:latest
variables:
GIT_SUBMODULE_STRATEGY: recursive
# CARGO_HOME: $CI_PROJECT_DIR/cargo
APT_CACHE_DIR: $CI_PROJECT_DIR/apt
# install build dependencies
before_script:
- apt-get update -yqq
- apt-get install -o dir::cache::archives="$APT_CACHE_DIR" -yqq --no-install-recommends capnproto build-essential cmake clang libclang-dev libgsasl7-dev
- rustup update
- rustup component add rustfmt
- rustup component add clippy
# Use clippy to lint the project
lint:clippy:
allow_failure: true
script:
- rustc --version && cargo --version # Print version info for debugging
- cargo clippy -- -D warnings
only:
- master
- development
- merge_requests
tags:
- linux
- docker
# Use rustfmt to check formating of the project
lint:fmt:
allow_failure: true
script:
- rustc --version && cargo --version # Print version info for debugging
- cargo fmt -- --check # TODO: Do we want to enforce formating?
only:
- master
- development
- merge_requests
tags:
- linux
- docker
# Use cargo to test the project
test:cargo:
script:
- rustc --version && cargo --version # Print version info for debugging
- cargo test --workspace --verbose
only:
- master
- development
- merge_requests
tags:
- linux
- docker
build:docker-master:
image:
name: gcr.io/kaniko-project/executor:v1.6.0-debug
entrypoint: [""]
before_script:
- ''
script:
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
- /kaniko/executor --force --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CI_REGISTRY_IMAGE:latest
only:
- master
tags:
- linux
- docker
build:docker-releases:
image:
name: gcr.io/kaniko-project/executor:v1.6.0-debug
entrypoint: [""]
before_script:
- ''
script:
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
- /kaniko/executor --force --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG
only:
- tags
tags:
- linux
- docker
build:docker-development:
image: docker:20.10.11
services:
- docker:20.10.11-dind
variables:
DOCKER_DRIVER: overlay2
BUILDX_VERSION: "v0.7.1"
BUILDX_ARCH: "linux-amd64"
before_script:
- echo "$CI_REGISTRY_PASSWORD" | docker login $CI_REGISTRY --username
$CI_REGISTRY_USER --password-stdin
# - wget -O /usr/bin/docker-buildx
# https://github.com/docker/buildx/releases/download/${BUILDX_VERSION}/buildx-${BUILDX_VERSION}.${BUILDX_ARCH}
# - chmod +x /usr/bin/docker-buildx
script:
- docker-buildx create --use
- docker-buildx build
--platform linux/386,linux/amd64,linux/amd64,linux/arm/v7,linux/arm64/v8
--tag ${CI_REGISTRY_IMAGE}:test
--push
# only:
# - development
tags:
- linux
- docker
# cache dependencies and build environment to speed up setup
cache:
key: "$CI_COMMIT_REF_SLUG"
paths:
- apt/
# - cargo/
- target/