stages: - test - build - publish - docs image: parity/rust:gitlab-ci variables: CI_SERVER_NAME: "GitLab CI" CARGO_HOME: "${CI_PROJECT_DIR}/cargo" BUILD_TARGET: ubuntu BUILD_ARCH: amd64 CARGO_TARGET: x86_64-unknown-linux-gnu cache: key: "${CI_JOB_NAME}" paths: - ${CI_PROJECT_DIR}/target/ - ${CI_PROJECT_DIR}/cargo/ .releaseable_branches: # list of git refs for building GitLab artifacts (think "pre-release binaries") only: &releaseable_branches - stable - beta - tags - a5-gitlab-light ### @TODO remove .collect_artifacts: &collect_artifacts artifacts: name: "${CI_JOB_NAME}_${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 "${CI_COMMIT_REF_NAME}" = "nightly" && VERSION="${VERSION}-${ID_SHORT}-${DATE_STR}" - export VERSION - echo "Version = ${VERSION}" #### stage: test test-linux: stage: test variables: RUN_TESTS: "true" script: - scripts/gitlab/test.sh stable tags: - rust-stable test-darwin: stage: test variables: CARGO_TARGET: x86_64-apple-darwin CC: gcc CXX: g++ RUN_TESTS: "true" script: - scripts/gitlab/test.sh stable tags: - osx test-windows: stage: test cache: key: "${CI_JOB_NAME}" paths: - "%CI_PROJECT_DIR%/target/" - "%CI_PROJECT_DIR%/cargo/" variables: CARGO_TARGET: x86_64-pc-windows-msvc RUN_TESTS: "true" script: - sh scripts/gitlab/test.sh stable tags: - rust-windows #### stage: build build-linux: stage: build only: *releaseable_branches variables: CARGO_TARGET: x86_64-unknown-linux-gnu script: - scripts/gitlab/build-unix.sh <<: *collect_artifacts tags: - rust-stable 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: - osx <<: *collect_artifacts build-windows: stage: build only: *releaseable_branches cache: key: "${CI_JOB_NAME}" paths: - "%CI_PROJECT_DIR%/target/" - "%CI_PROJECT_DIR%/cargo/" variables: CARGO_TARGET: x86_64-pc-windows-msvc script: - sh scripts/gitlab/build-windows.sh tags: - rust-windows <<: *collect_artifacts #### stage: publish publish-docker: stage: publish only: *releaseable_branches cache: {} dependencies: - build-linux tags: - shell script: - scripts/gitlab/publish-docker.sh parity publish-awss3: stage: publish only: - nightly - /^v2.*$/ - a5-gitlab-light ### @TODO remove cache: {} dependencies: - build-linux - build-darwin - build-windows before_script: *determine_version script: - scripts/gitlab/publish-awss3.sh tags: - shell docs-jsonrpc: stage: docs only: - tags - a5-gitlab-light ### @TODO remove cache: {} script: - scripts/gitlab/docs-jsonrpc.sh tags: - shell