207 lines
5.5 KiB
YAML
207 lines
5.5 KiB
YAML
stages:
|
|
- test
|
|
- build
|
|
- publish
|
|
- publish-onchain
|
|
- 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
|
|
|
|
.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
|
|
cache: {}
|
|
dependencies:
|
|
- build-linux
|
|
tags:
|
|
- shell
|
|
script:
|
|
- scripts/gitlab/publish-docker.sh parity
|
|
|
|
publish-snap:
|
|
stage: optional #publish
|
|
only: *releaseable_branches
|
|
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-onnet-update:
|
|
stage: publish-onchain
|
|
only: *releaseable_branches
|
|
cache: {}
|
|
dependencies:
|
|
- build-linux
|
|
- build-darwin
|
|
- build-windows
|
|
- publish-awss3-release
|
|
before_script: *determine_version
|
|
script:
|
|
- scripts/gitlab/publish-onnet-update.sh
|
|
tags:
|
|
- linux-docker
|
|
|
|
# configures aws for fast uploads/syncs
|
|
.s3-before-script: &s3-before-script
|
|
before_script:
|
|
- mkdir -p ${HOME}/.aws
|
|
- |
|
|
cat > ${HOME}/.aws/config <<EOC
|
|
[default]
|
|
s3 =
|
|
max_concurrent_requests = 20
|
|
max_queue_size = 10000
|
|
multipart_threshold = 64MB
|
|
multipart_chunksize = 16MB
|
|
max_bandwidth = 50MB/s
|
|
use_accelerate_endpoint = false
|
|
addressing_style = path
|
|
EOC
|
|
|
|
publish-awss3-release:
|
|
image: parity/awscli:latest
|
|
stage: publish
|
|
only: *releaseable_branches
|
|
cache: {}
|
|
dependencies:
|
|
- build-linux
|
|
- build-darwin
|
|
- build-windows
|
|
variables:
|
|
GIT_STRATEGY: none
|
|
<<: *s3-before-script
|
|
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
|
|
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
|
|
|