mirror of
https://gitlab.com/fabinfra/fabaccess/bffh.git
synced 2024-11-23 23:27:57 +01:00
195 lines
6.2 KiB
YAML
195 lines
6.2 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
|
|
|
|
stages:
|
|
- lint
|
|
- test
|
|
- build
|
|
- upload
|
|
- release
|
|
|
|
|
|
# install build dependencies
|
|
before_script:
|
|
- apt-get update -y
|
|
- apt-get install -o dir::cache::archives="$APT_CACHE_DIR" -y --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:
|
|
stage: lint
|
|
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:
|
|
stage: lint
|
|
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:
|
|
stage: test
|
|
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:binary:
|
|
image: rust:latest
|
|
stage: build
|
|
before_script:
|
|
- cp cargo-cross-config /usr/local/cargo/config
|
|
- dpkg --add-architecture armhf
|
|
- dpkg --add-architecture armel
|
|
- apt-get update -y
|
|
- apt-get install -o dir::cache::archives="$APT_CACHE_DIR" -y libc6-armhf-cross libc6-dev-armhf-cross gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf libc6-armel-cross libc6-dev-armel-cross gcc-arm-linux-gnueabi g++-arm-linux-gnueabi
|
|
- apt-get install -o dir::cache::archives="$APT_CACHE_DIR" -y --no-install-recommends capnproto build-essential cmake clang libclang-dev libgsasl7-dev libgsasl7-dev:armhf libssl-dev:armhf libgsasl7-dev:armel libssl-dev:armel
|
|
- rustup target add armv7-unknown-linux-gnueabihf
|
|
|
|
script:
|
|
- cargo update
|
|
- cargo build --release --target armv7-unknown-linux-gnueabihf
|
|
- cargo build --release --target x86_64-unknown-linux-gnu
|
|
|
|
artifacts:
|
|
paths:
|
|
- target/armv7-unknown-linux-gnueabihf/release
|
|
- target/x86_64-unknown-linux-gnu/release
|
|
|
|
# only:
|
|
# - development
|
|
tags:
|
|
- linux
|
|
- docker
|
|
|
|
upload:nightly:
|
|
stage: upload
|
|
image: curlimages/curl:latest
|
|
variables:
|
|
PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/diflouroborane/nightly"
|
|
# rules:
|
|
# - if: $CI_COMMIT_TAG
|
|
script:
|
|
- |
|
|
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file target/armv7-unknown-linux-gnueabihf/release/diflouroborane "${PACKAGE_REGISTRY_URL}/diflouroborane-linux-armv7-nightly"
|
|
- |
|
|
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file target/x86_64-unknown-linux-gnu/release/diflouroborane "${PACKAGE_REGISTRY_URL}/diflouroborane-linux-amd64-nightly"
|
|
tags:
|
|
- linux
|
|
- docker
|
|
|
|
upload:releases:
|
|
stage: upload
|
|
image: curlimages/curl:latest
|
|
variables:
|
|
PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/diflouroborane/${CI_COMMIT_TAG}"
|
|
rules:
|
|
- if: $CI_COMMIT_TAG
|
|
script:
|
|
- |
|
|
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file target/armv7-unknown-linux-gnueabihf/release/diflouroborane "${PACKAGE_REGISTRY_URL}/diflouroborane-linux-armv7-${CI_COMMIT_TAG}"
|
|
- |
|
|
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file target/x86_64-unknown-linux-gnu/release/diflouroborane "${PACKAGE_REGISTRY_URL}/diflouroborane-linux-amd64-${CI_COMMIT_TAG}"
|
|
tags:
|
|
- linux
|
|
- docker
|
|
|
|
release:
|
|
# Caution, as of 2021-02-02 these assets links require a login, see:
|
|
# https://gitlab.com/gitlab-org/gitlab/-/issues/299384
|
|
stage: release
|
|
image: registry.gitlab.com/gitlab-org/release-cli:latest
|
|
variables:
|
|
PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/diflouroborane/${CI_COMMIT_TAG}"
|
|
rules:
|
|
- if: $CI_COMMIT_TAG
|
|
script:
|
|
- |
|
|
release-cli create --name "Release $CI_COMMIT_TAG" --tag-name $CI_COMMIT_TAG \
|
|
--assets-link "{\"name\":\"diflouroborane-linux-armv7-${CI_COMMIT_TAG}\",\"url\":\"${PACKAGE_REGISTRY_URL}/diflouroborane-linux-armv7-${CI_COMMIT_TAG}\"}" \
|
|
--assets-link "{\"name\":\"diflouroborane-linux-amd64-${CI_COMMIT_TAG}\",\"url\":\"${PACKAGE_REGISTRY_URL}/diflouroborane-linux-amd64-${CI_COMMIT_TAG}\"}"
|
|
tags:
|
|
- linux
|
|
- docker
|
|
|
|
# cache dependencies and build environment to speed up setup
|
|
cache:
|
|
key: "$CI_COMMIT_REF_SLUG"
|
|
paths:
|
|
- apt/
|
|
# - cargo/
|
|
- target/
|