.gitlab-ci.yml 2.86 KiB
stages:
- quality
- build
- tests
- deploy
workflow:
rules:
- changes:
- node/**/*
- pallets/**/*
- runtime/**/*
- .gitlab-ci.yml
- Cargo.toml
- Cargo.lock
.env:
image: paritytech/ci-linux:production
tags:
- elois-boson
fmt_and_clippy:
extends: .env
rules:
- if: '$CI_COMMIT_TAG || $CI_COMMIT_BRANCH == "master"'
when: never
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
- when: manual
stage: quality
script:
- cargo fmt -- --version
- cargo fmt -- --check
- cargo clippy -- -V
- cargo clippy --all --tests -- -D warnings
build_debug:
extends: .env
rules:
- if: $CI_COMMIT_TAG
when: never
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_BRANCH == "master"'
- when: manual
stage: build
script:
- cargo clean -p duniter
- cargo build
- mkdir build
- mv target/debug/duniter build/duniter
artifacts:
paths:
- build/
cache:
- key:
files:
- Cargo.lock
paths:
- target/debug
build_release:
extends: .env
rules:
- if: '$CI_COMMIT_TAG || $CI_COMMIT_BRANCH =~ /^release/'
- when: never
stage: build
script:
- cargo build --release
- mkdir build
- mv target/release/duniter build/duniter
artifacts:
paths:
- build/
expire_in: 1 day
tests_debug:
extends: .env
rules:
- if: $CI_COMMIT_REF_NAME =~ /^wip*$/
when: manual
- if: $CI_COMMIT_TAG
when: never
- if: '$CI_MERGE_REQUEST_ID || $CI_COMMIT_BRANCH == "master"'
- when: manual
stage: tests
variables:
DUNITER_BINARY_PATH: "../build/duniter"
DUNITER_INTEGRATION_TESTS_SPAWN_NODE_DURATION: "20"
script:
- cargo test
dependencies:
- build_debug
tests_release:
extends: .env
rules:
- if: '$CI_COMMIT_TAG || $CI_COMMIT_BRANCH =~ /^release/'
- when: never
stage: tests
variables:
DUNITER_BINARY_PATH: "../build/duniter"
DUNITER_INTEGRATION_TESTS_SPAWN_NODE_DURATION: "10"
script:
- cargo test
dependencies:
- build_release
.docker-build-app-image:
stage: deploy
image: docker:18.06
tags:
- redshift
services:
- docker:18.06-dind
before_script:
- docker info
script:
- docker pull $CI_REGISTRY_IMAGE:$IMAGE_TAG || true
- docker build --cache-from $CI_REGISTRY_IMAGE:$IMAGE_TAG --pull -t "$CI_REGISTRY_IMAGE:$IMAGE_TAG" -f $DOCKERFILE_PATH .
- docker login -u "duniterteam" -p "$DUNITERTEAM_PASSWD"
- docker tag "$CI_REGISTRY_IMAGE:$IMAGE_TAG" "duniter/duniter-v2s:$IMAGE_TAG"
- docker push "duniter/duniter-v2s:$IMAGE_TAG"
deploy_docker_debug:
extends: .docker-build-app-image
rules:
- if: $CI_COMMIT_TAG
when: never
- if: $CI_COMMIT_BRANCH == "master"
variables:
DOCKERFILE_PATH: "docker/duniter-debug.Dockerfile"
IMAGE_TAG: "debug-sha-$CI_COMMIT_SHORT_SHA"