# .gitlab-ci.yml # stages: - test - build - publish image: parity/rust:nightly variables: CI_SERVER_NAME: "GitLab CI" CARGO_HOME: "${CI_PROJECT_DIR}/.cargo" cache: key: "${CI_JOB_NAME}" paths: - ./.cargo/ .collect_artifacts: &collect_artifacts artifacts: name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}" when: on_success expire_in: 7 days paths: - target/release/ # not needed atm # .determine_version: &determine_version | # export VERSION="$(sed -r -n '1,/^version/s/^version = "([^"]+)".*$/\1/p' Cargo.toml)"; # echo "Version = " $VERSION before_script: - ./scripts/build.sh #### stage: test test:rust:stable: &test stage: test variables: RUST_TOOLCHAIN: stable TARGET: native only: - triggers - tags - master - schedules - web - /^pr-[0-9]+$/ - /^[0-9]+$/ tags: - linux-docker script: - time cargo test --all --release --verbose --locked .optional_test: &optional_test <<: *test allow_failure: true only: - master #### stage: build build:rust:linux:release: &build stage: build <<: *collect_artifacts only: - master - tags - web tags: - linux-docker script: - time cargo build --release --verbose; - ./target/release/substrate --version - sha256sum ./target/release/substrate #### stage: publish publish:docker:release: stage: publish dependencies: - build:rust:linux:release cache: {} only: - master - tags - web tags: - shell variables: DOCKERFILE: scripts/docker/Dockerfile CONTAINER_IMAGE: parity/substrate before_script: - test "$Docker_Hub_User_Parity" -a "$Docker_Hub_Pass_Parity" || ( echo "no docker credentials provided"; exit 1 ) - docker login -u "$Docker_Hub_User_Parity" -p "$Docker_Hub_Pass_Parity" - docker info - VERSION="$(./target/release/substrate --version | sed -n -r 's/^substrate ([0-9.]+.*-[0-9a-f]{7,13})-.*$/\1/p')" - export VERSION - echo "Substrate version = ${VERSION}" script: # - CONTAINER_TAG="${CI_COMMIT_TAG:-latest}" # - docker build --tag $CONTAINER_IMAGE:$CI_BUILD_REF --tag $CONTAINER_IMAGE:$CONTAINER_TAG -f $DOCKERFILE ./target/release/ # - docker push $CONTAINER_IMAGE:$CONTAINER_TAG - test -z "${VERSION}" && exit 1 - docker build --tag $CONTAINER_IMAGE:$VERSION --tag $CONTAINER_IMAGE:latest -f $DOCKERFILE ./target/release/ - docker push $CONTAINER_IMAGE:$VERSION - docker push $CONTAINER_IMAGE:latest after_script: - docker logout