Newer
Older
# .gitlab-ci.yml
- publish
image: parity/rust:nightly
variables:
CI_SERVER_NAME: "GitLab CI"
CARGO_HOME: "${CI_PROJECT_DIR}/.cargo"
# have OS based build containers in the future
DOCKER_OS: "ubuntu:xenial"
ARCH: "x86_64"
cache:
key: "${CI_JOB_NAME}"
paths:
.collect_artifacts: &collect_artifacts
artifacts:
name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}"
when: on_success
expire_in: 7 days
test:runtime:
stage: test
# image: alpine/git:latest
cache: {}
tags:
- linux-docker
only:
- /^[0-9]+$/
script:
- ./scripts/gitlab/check_runtime.sh
test:rust:stable: &test
stage: test
variables:
RUST_TOOLCHAIN: stable
# Enable debug assertions since we are running optimized builds for testing
# but still want to have debug assertions.
RUSTFLAGS: -Cdebug-assertions=y
only:
- triggers
- tags
- master
- schedules
- web
- /^pr-[0-9]+$/
- /^[0-9]+$/
- linux-docker
- echo "build cache size:"
- du -hs ${CARGO_HOME} ./target
script:
- time cargo test --all --release --verbose --locked
.optional_test: &optional_test
<<: *test
allow_failure: true
only:
- master
only:
- master
- tags
- web
#### stage: build
build:rust:linux:release: &build
stage: build
<<: *collect_artifacts
<<: *build_only
- linux-docker
before_script:
- ./scripts/build.sh
script:
- mkdir -p ./artifacts
- mv ./target/release/substrate ./artifacts/.
- echo -n "Substrate version = "
- ./artifacts/substrate --version |
sed -n -r 's/^substrate ([0-9.]+.*-[0-9a-f]{7,13})-.*$/\1/p' |
tee ./artifacts/VERSION
- sha256sum ./artifacts/substrate | tee ./artifacts/substrate.sha256
build:rust:doc:release: &build
stage: build
artifacts:
name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}-doc"
when: on_success
expire_in: 7 days
paths:
- ./crate-docs
only:
- master
- tags
- web
- publish-rustdoc
tags:
- linux-docker
script:
- time cargo doc --release --verbose
- cp -R ./target/doc ./crate-docs
- echo "<meta http-equiv=refresh content=0;url=substrate_service/index.html>" > ./crate-docs/index.html
#### stage: publish
stage: publish
dependencies:
- build:rust:linux:release
cache: {}
publish:docker:release:
tags:
- shell
variables:
GIT_STRATEGY: none
DOCKERFILE: scripts/docker/Dockerfile
CONTAINER_IMAGE: parity/substrate
script:
- VERSION="$(cat ./artifacts/VERSION)"
- 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
- docker build --tag $CONTAINER_IMAGE:$VERSION --tag $CONTAINER_IMAGE:latest -f $DOCKERFILE ./artifacts/
- docker push $CONTAINER_IMAGE:$VERSION
- docker push $CONTAINER_IMAGE:latest
after_script:
- docker logout
image: parity/awscli:latest
variables:
GIT_STRATEGY: none
BUCKET: "releases.parity.io"
PREFIX: "substrate/${ARCH}-${DOCKER_OS}"
script:
- aws s3 sync ./artifacts/ s3://${BUCKET}/${PREFIX}/$(cat ./artifacts/VERSION)/
after_script:
- aws s3 ls s3://${BUCKET}/${PREFIX}/
tags:
- linux-docker
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
publish:s3:doc:
stage: publish
dependencies:
- build:rust:doc:release
cache: {}
only:
- master
- tags
- web
- publish-rustdoc
variables:
GIT_STRATEGY: none
BUCKET: "releases.parity.io"
PREFIX: "substrate-rustdoc"
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
script:
- aws s3 sync --delete --size-only --only-show-errors ./crate-docs/ s3://${BUCKET}/${PREFIX}/
after_script:
- aws s3 ls s3://${BUCKET}/${PREFIX}/
tags:
- linux-docker