stages: - test - build - publish - optional image: parity/rust:gitlab-ci variables: GIT_STRATEGY: fetch GIT_SUBMODULE_STRATEGY: recursive CI_SERVER_NAME: "GitLab CI" CARGO_HOME: "${CI_PROJECT_DIR}/.cargo" CARGO_TARGET: x86_64-unknown-linux-gnu .no_git: &no_git variables: GIT_STRATEGY: none GIT_SUBMODULE_STRATEGY: none .releaseable_branches: # list of git refs for building GitLab artifacts (think "pre-release binaries") only: &releaseable_branches - stable - beta - tags - schedules .collect_artifacts: &collect_artifacts artifacts: name: "${CI_JOB_NAME}_${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}}" when: on_success expire_in: 1 mos paths: - artifacts/ .determine_version: &determine_version - VERSION="$(sed -r -n '1,/^version/s/^version = "([^"]+)".*$/\1/p' Cargo.toml)" - DATE_STR="$(date +%Y%m%d)" - ID_SHORT="$(echo ${CI_COMMIT_SHA} | cut -c 1-7)" - test "${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}}" = "nightly" && VERSION="${VERSION}-${ID_SHORT}-${DATE_STR}" - export VERSION - echo "Version = ${VERSION}" test-linux: stage: test variables: RUN_TESTS: all script: - scripts/gitlab/test-all.sh - sccache -s tags: - linux-docker test-audit: stage: test script: - set -e - set -u - cargo audit tags: - linux-docker build-linux: stage: build only: *releaseable_branches script: - scripts/gitlab/build-unix.sh - sccache -s <<: *collect_artifacts tags: - linux-docker build-darwin: stage: build only: *releaseable_branches variables: CARGO_TARGET: x86_64-apple-darwin CC: gcc CXX: g++ script: - scripts/gitlab/build-unix.sh tags: - rust-osx <<: *collect_artifacts build-windows: stage: build only: *releaseable_branches variables: CARGO_TARGET: x86_64-pc-windows-msvc script: - sh scripts/gitlab/build-windows.sh tags: - rust-windows <<: *collect_artifacts publish-docker: stage: publish only: *releaseable_branches # <<: *no_git cache: {} dependencies: - build-linux tags: - shell script: - scripts/gitlab/publish-docker.sh parity publish-snap: stage: publish only: *releaseable_branches # <<: *no_git image: snapcore/snapcraft variables: BUILD_ARCH: amd64 cache: {} before_script: *determine_version dependencies: - build-linux tags: - rust-stable script: - scripts/gitlab/publish-snap.sh allow_failure: true <<: *collect_artifacts publish-onchain: stage: publish only: *releaseable_branches # <<: *no_git cache: {} dependencies: - build-linux - build-darwin - build-windows script: - scripts/gitlab/publish-onchain.sh tags: - linux-docker publish-awss3-release: image: parity/awscli:latest stage: publish only: *releaseable_branches <<: *no_git cache: {} dependencies: - build-linux - build-darwin - build-windows script: - echo "__________Push binaries to AWS S3____________" - case "${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}}" in (beta|stable|nightly) export BUCKET=releases.parity.io/ethereum; ;; (*) export BUCKET=builds-parity; ;; esac - aws s3 sync ./artifacts s3://${BUCKET}/${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}}/ after_script: - aws s3 ls s3://${BUCKET}/${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}}/ --recursive --human-readable --summarize tags: - linux-docker publish-docs: stage: publish # <<: *no_git only: - tags except: - nightly cache: {} script: - scripts/gitlab/publish-docs.sh tags: - linux-docker build-android: stage: optional image: parity/rust-android:gitlab-ci variables: CARGO_TARGET: armv7-linux-androideabi script: - scripts/gitlab/build-unix.sh tags: - linux-docker allow_failure: true <<: *collect_artifacts