mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-06 06:48:01 +00:00
246 lines
6.2 KiB
YAML
246 lines
6.2 KiB
YAML
# .gitlab-ci.yml
|
|
|
|
|
|
|
|
stages:
|
|
- merge-test
|
|
- test
|
|
- build
|
|
- publish
|
|
- label
|
|
|
|
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:
|
|
- ${CARGO_HOME}
|
|
- ./target
|
|
|
|
.collect_artifacts: &collect_artifacts
|
|
artifacts:
|
|
name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}"
|
|
when: on_success
|
|
expire_in: 7 days
|
|
paths:
|
|
- artifacts/
|
|
|
|
|
|
|
|
#### stage: merge-test
|
|
|
|
check:merge:conflict:
|
|
stage: merge-test
|
|
image: parity/tools:latest
|
|
cache: {}
|
|
tags:
|
|
- linux-docker
|
|
only:
|
|
- /^[0-9]+$/
|
|
variables:
|
|
GITHUB_API: "https://api.github.com"
|
|
GITLAB_API: "https://gitlab.parity.io/api/v4"
|
|
GITHUB_API_PROJECT: "parity%2Finfrastructure%2Fgithub-api"
|
|
script:
|
|
- ./scripts/gitlab/check_merge_conflict.sh
|
|
|
|
|
|
|
|
|
|
#### stage: test
|
|
|
|
check:runtime:
|
|
stage: test
|
|
image: parity/tools:latest
|
|
cache: {}
|
|
tags:
|
|
- linux-docker
|
|
only:
|
|
- /^[0-9]+$/
|
|
variables:
|
|
GITLAB_API: "https://gitlab.parity.io/api/v4"
|
|
GITHUB_API_PROJECT: "parity%2Finfrastructure%2Fgithub-api"
|
|
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
|
|
TARGET: native
|
|
only:
|
|
- tags
|
|
- master
|
|
- schedules
|
|
- web
|
|
- /^pr-[0-9]+$/
|
|
- /^[0-9]+$/
|
|
tags:
|
|
- linux-docker
|
|
before_script:
|
|
- test -d ${CARGO_HOME} -a -d ./target &&
|
|
echo "build cache size:" &&
|
|
du -hs ${CARGO_HOME} ./target
|
|
- ./scripts/build.sh
|
|
script:
|
|
- time cargo test --all --release --verbose --locked
|
|
|
|
|
|
|
|
|
|
|
|
.build_only: &build_only
|
|
only:
|
|
- master
|
|
- tags
|
|
- web
|
|
|
|
|
|
#### stage: build
|
|
|
|
build:rust:linux:release: &build
|
|
stage: build
|
|
<<: *collect_artifacts
|
|
<<: *build_only
|
|
tags:
|
|
- linux-docker
|
|
before_script:
|
|
- ./scripts/build.sh
|
|
script:
|
|
- time cargo build --release --verbose
|
|
- mkdir -p ./artifacts
|
|
- mv ./target/release/substrate ./artifacts/.
|
|
- echo -n "Substrate version = "
|
|
- if [ "${CI_COMMIT_TAG}" ]; then
|
|
echo "${CI_COMMIT_TAG}" | tee ./artifacts/VERSION;
|
|
else
|
|
./artifacts/substrate --version |
|
|
sed -n -r 's/^substrate ([0-9.]+.*-[0-9a-f]{7,13})-.*$/\1/p' |
|
|
tee ./artifacts/VERSION;
|
|
fi
|
|
- sha256sum ./artifacts/substrate | tee ./artifacts/substrate.sha256
|
|
- ./scripts/node-template-release.sh ./artifacts/substrate-node-template.tar.gz
|
|
|
|
|
|
|
|
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
|
|
<<: *build_only
|
|
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
|
|
|
|
.publish_build: &publish_build
|
|
stage: publish
|
|
dependencies:
|
|
- build:rust:linux:release
|
|
cache: {}
|
|
<<: *build_only
|
|
|
|
|
|
|
|
publish:docker:release:
|
|
<<: *publish_build
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
publish:s3:release:
|
|
<<: *publish_build
|
|
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)/
|
|
- echo "update objects in latest path"
|
|
- for file in ./artifacts/*; do
|
|
name="$(basename ${file})";
|
|
aws s3api copy-object
|
|
--copy-source ${BUCKET}/${PREFIX}/$(cat ./artifacts/VERSION)/${name}
|
|
--bucket ${BUCKET} --key ${PREFIX}/latest/${name};
|
|
done
|
|
after_script:
|
|
- aws s3 ls s3://${BUCKET}/${PREFIX}/latest/
|
|
--recursive --human-readable --summarize
|
|
tags:
|
|
- linux-docker
|
|
|
|
|
|
|
|
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"
|
|
script:
|
|
- aws s3 sync --delete --size-only --only-show-errors
|
|
./crate-docs/ s3://${BUCKET}/${PREFIX}/
|
|
after_script:
|
|
- aws s3 ls s3://${BUCKET}/${PREFIX}/
|
|
--human-readable --summarize
|
|
tags:
|
|
- linux-docker
|
|
|
|
|
|
|
|
|
|
|