stages: - test - build - publish - optional image: parity/rust-parity-ethereum-build:xenial variables: GIT_STRATEGY: fetch GIT_SUBMODULE_STRATEGY: recursive CI_SERVER_NAME: "GitLab CI" CARGO_TARGET: x86_64-unknown-linux-gnu .no_git: &no_git # disable git strategy 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/ .docker-cache-status: &docker-cache-status variables: CARGO_HOME: "/ci-cache/parity-ethereum/cargo/${CI_JOB_NAME}" before_script: - SCCACHE_ERROR_LOG=/builds/parity/parity-ethereum/sccache_error.log RUST_LOG=sccache::server=debug sccache --start-server - sccache -s after_script: - echo "All crate-types:" - grep 'parse_arguments.*--crate-type' sccache_error.log | sed -re 's/.*"--crate-type", "([^"]+)".*/\1/' | sort | uniq -c - echo "Non-cacheable reasons:" - grep CannotCache sccache_error.log | sed -re 's/.*CannotCache\((.+)\).*/\1/' | sort | uniq -c tags: - linux-docker cargo-check 0 3: stage: test <<: *docker-cache-status script: - time cargo check --target $CARGO_TARGET --locked --no-default-features - sccache -s cargo-check 1 3: stage: test <<: *docker-cache-status script: - time cargo check --target $CARGO_TARGET --locked --manifest-path util/io/Cargo.toml --no-default-features - sccache -s cargo-check 2 3: stage: test <<: *docker-cache-status script: - time cargo check --target $CARGO_TARGET --locked --manifest-path util/io/Cargo.toml --features "mio" - sccache -s cargo-audit: stage: test <<: *docker-cache-status script: - cargo audit - sccache -s validate-chainspecs: stage: test <<: *docker-cache-status script: - ./scripts/gitlab/validate-chainspecs.sh - sccache -s test-cpp: stage: build <<: *docker-cache-status script: - ./scripts/gitlab/test-cpp.sh - sccache -s test-linux: stage: build <<: *docker-cache-status script: - ./scripts/gitlab/test-linux.sh - sccache -s build-android: stage: build image: parity/rust-android:gitlab-ci variables: CARGO_TARGET: armv7-linux-androideabi script: - scripts/gitlab/build-linux.sh <<: *collect_artifacts tags: - linux-docker build-linux: &build-linux stage: build only: *releaseable_branches <<: *docker-cache-status <<: *collect_artifacts script: - scripts/gitlab/build-linux.sh - sccache -s build-linux-i386: <<: *build-linux image: parity/rust-parity-ethereum-build:i386 variables: CARGO_TARGET: i686-unknown-linux-gnu build-linux-arm64: <<: *build-linux image: parity/rust-parity-ethereum-build:arm64 variables: CARGO_TARGET: aarch64-unknown-linux-gnu build-linux-armhf: <<: *build-linux image: parity/rust-parity-ethereum-build:armhf variables: CARGO_TARGET: armv7-unknown-linux-gnueabihf build-darwin: stage: build only: *releaseable_branches <<: *collect_artifacts variables: CARGO_TARGET: x86_64-apple-darwin CARGO_HOME: "${CI_PROJECT_DIR}/.cargo" CC: gcc CXX: g++ script: - scripts/gitlab/build-linux.sh tags: - rust-osx build-windows: stage: build <<: *collect_artifacts only: *releaseable_branches variables: CARGO_TARGET: x86_64-pc-windows-msvc CARGO_HOME: "C:/ci-cache/parity-ethereum/cargo/%CI_JOB_NAME%" RUSTC_WRAPPER: sccache SCCACHE_DIR: "C:/ci-cache/parity-ethereum/sccache" script: - sh scripts/gitlab/build-windows.sh tags: - rust-windows publish-docker: stage: publish only: *releaseable_branches cache: {} dependencies: - build-linux tags: - shell script: - scripts/gitlab/publish-docker.sh parity publish-snap: &publish-snap stage: publish only: *releaseable_branches <<: *collect_artifacts image: snapcore/snapcraft variables: BUILD_ARCH: amd64 cache: {} dependencies: - build-linux tags: - linux-docker script: - scripts/gitlab/publish-snap.sh publish-snap-i386: <<: *publish-snap variables: BUILD_ARCH: i386 dependencies: - build-linux-i386 publish-snap-arm64: <<: *publish-snap variables: BUILD_ARCH: arm64 dependencies: - build-linux-arm64 publish-snap-armhf: <<: *publish-snap variables: BUILD_ARCH: armhf dependencies: - build-linux-armhf publish-onchain: stage: publish only: *releaseable_branches 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}}/ - echo "__________Read from S3____________" - aws s3 ls s3://${BUCKET}/${SCHEDULE_TAG:-${CI_COMMIT_REF_NAME}} --recursive --human-readable --summarize tags: - linux-docker publish-docs: stage: publish only: - tags except: - nightly cache: {} script: - scripts/gitlab/publish-docs.sh tags: - linux-docker