mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-26 12:17:58 +00:00
0ef37c7540
Closes https://github.com/paritytech/polkadot-sdk/issues/2977 The issue appears to stem from the `aquamarine` crate failing to render diagrams in re-exported crates. e.g. as raised [here](https://github.com/paritytech/polkadot-sdk/issues/2977), diagrams would render at `frame_support::traits::Hooks` but not the re-exported doc `frame::traits::Hooks`, even if I added `aquamarine` as a `frame` crate dependency. To resolve this, I followed advice in https://github.com/mersinvald/aquamarine/issues/20 to instead render mermaid diagrams directly using JS by adding an `after-content.js`. --- Also fixes compile warnings, enables `--all-features` and disallows future warnings in CI. --------- Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Co-authored-by: Bastian Köcher <git@kchr.de>
413 lines
15 KiB
YAML
413 lines
15 KiB
YAML
# This file is part of .gitlab-ci.yml
|
|
# Here are all jobs that are executed during "build" stage
|
|
|
|
# build jobs from polkadot
|
|
|
|
build-linux-stable:
|
|
stage: build
|
|
extends:
|
|
- .docker-env
|
|
- .common-refs
|
|
- .run-immediately
|
|
- .collect-artifacts
|
|
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 -Dwarnings"
|
|
# Ensure we run the UI tests.
|
|
RUN_UI_TESTS: 1
|
|
script:
|
|
- time cargo build --locked --profile testnet --features pyroscope,fast-runtime --bin polkadot --bin polkadot-prepare-worker --bin polkadot-execute-worker
|
|
- time ROCOCO_EPOCH_DURATION=10 ./polkadot/scripts/build-only-wasm.sh rococo-runtime $(pwd)/runtimes/rococo-runtime-10/
|
|
- time ROCOCO_EPOCH_DURATION=100 ./polkadot/scripts/build-only-wasm.sh rococo-runtime $(pwd)/runtimes/rococo-runtime-100/
|
|
- time ROCOCO_EPOCH_DURATION=600 ./polkadot/scripts/build-only-wasm.sh rococo-runtime $(pwd)/runtimes/rococo-runtime-600/
|
|
- pwd
|
|
- ls -alR runtimes
|
|
# pack artifacts
|
|
- mkdir -p ./artifacts
|
|
- VERSION="${CI_COMMIT_REF_NAME}" # will be tag or branch name
|
|
- mv ./target/testnet/polkadot ./artifacts/.
|
|
- mv ./target/testnet/polkadot-prepare-worker ./artifacts/.
|
|
- mv ./target/testnet/polkadot-execute-worker ./artifacts/.
|
|
- mv ./runtimes/ ./artifacts/.
|
|
- pushd artifacts
|
|
- sha256sum polkadot | tee polkadot.sha256
|
|
- shasum -c polkadot.sha256
|
|
- popd
|
|
- EXTRATAG="${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA}"
|
|
- echo "Polkadot version = ${VERSION} (EXTRATAG = ${EXTRATAG})"
|
|
- echo -n ${VERSION} > ./artifacts/VERSION
|
|
- echo -n ${EXTRATAG} > ./artifacts/EXTRATAG
|
|
- echo -n ${CI_JOB_ID} > ./artifacts/BUILD_LINUX_JOB_ID
|
|
- RELEASE_VERSION=$(./artifacts/polkadot -V | awk '{print $2}'| awk -F "-" '{print $1}')
|
|
- echo -n "v${RELEASE_VERSION}" > ./artifacts/BUILD_RELEASE_VERSION
|
|
- cp -r docker/* ./artifacts
|
|
|
|
build-test-collators:
|
|
stage: build
|
|
extends:
|
|
- .docker-env
|
|
- .common-refs
|
|
- .run-immediately
|
|
- .collect-artifacts
|
|
script:
|
|
- time cargo build --locked --profile testnet -p test-parachain-adder-collator
|
|
- time cargo build --locked --profile testnet -p test-parachain-undying-collator
|
|
# pack artifacts
|
|
- mkdir -p ./artifacts
|
|
- mv ./target/testnet/adder-collator ./artifacts/.
|
|
- mv ./target/testnet/undying-collator ./artifacts/.
|
|
- echo -n "${CI_COMMIT_REF_NAME}" > ./artifacts/VERSION
|
|
- echo -n "${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA}" > ./artifacts/EXTRATAG
|
|
- echo "adder-collator version = $(cat ./artifacts/VERSION) (EXTRATAG = $(cat ./artifacts/EXTRATAG))"
|
|
- echo "undying-collator version = $(cat ./artifacts/VERSION) (EXTRATAG = $(cat ./artifacts/EXTRATAG))"
|
|
- cp -r ./docker/* ./artifacts
|
|
|
|
build-malus:
|
|
stage: build
|
|
extends:
|
|
- .docker-env
|
|
- .common-refs
|
|
- .run-immediately
|
|
- .collect-artifacts
|
|
script:
|
|
- time cargo build --locked --profile testnet -p polkadot-test-malus --bin malus --bin polkadot-prepare-worker --bin polkadot-execute-worker
|
|
# pack artifacts
|
|
- mkdir -p ./artifacts
|
|
- mv ./target/testnet/malus ./artifacts/.
|
|
- mv ./target/testnet/polkadot-execute-worker ./artifacts/.
|
|
- mv ./target/testnet/polkadot-prepare-worker ./artifacts/.
|
|
- echo -n "${CI_COMMIT_REF_NAME}" > ./artifacts/VERSION
|
|
- echo -n "${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA}" > ./artifacts/EXTRATAG
|
|
- echo "polkadot-test-malus = $(cat ./artifacts/VERSION) (EXTRATAG = $(cat ./artifacts/EXTRATAG))"
|
|
- cp -r ./docker/* ./artifacts
|
|
|
|
build-rustdoc:
|
|
stage: build
|
|
extends:
|
|
- .docker-env
|
|
- .common-refs
|
|
- .run-immediately
|
|
variables:
|
|
SKIP_WASM_BUILD: 1
|
|
RUSTDOCFLAGS: "-Dwarnings --default-theme=ayu --html-in-header ./docs/sdk/assets/header.html --extend-css ./docs/sdk/assets/theme.css --html-after-content ./docs/sdk/assets/after-content.html"
|
|
artifacts:
|
|
name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}-doc"
|
|
when: on_success
|
|
expire_in: 1 days
|
|
paths:
|
|
- ./crate-docs/
|
|
script:
|
|
- time cargo doc --all-features --workspace --no-deps
|
|
- rm -f ./target/doc/.lock
|
|
- mv ./target/doc ./crate-docs
|
|
# Inject Simple Analytics (https://www.simpleanalytics.com/) privacy preserving tracker into
|
|
# all .html files
|
|
- >
|
|
inject_simple_analytics() {
|
|
local path="$1";
|
|
local script_content="<script async defer src=\"https://apisa.parity.io/latest.js\"></script><noscript><img src=\"https://apisa.parity.io/latest.js\" alt=\"\" referrerpolicy=\"no-referrer-when-downgrade\" /></noscript>";
|
|
|
|
# Function that inject script into the head of an html file using sed.
|
|
process_file() {
|
|
local file="$1";
|
|
echo "Adding Simple Analytics script to $file";
|
|
sed -i "s|</head>|$script_content</head>|" "$file";
|
|
};
|
|
export -f process_file;
|
|
# xargs runs process_file in separate shells without access to outer variables.
|
|
# make script_content available inside process_file, export it as an env var here.
|
|
export script_content;
|
|
|
|
# Modify .html files in parallel using xargs, otherwise it can take a long time.
|
|
find "$path" -name '*.html' | xargs -I {} -P "$(nproc)" bash -c 'process_file "$@"' _ {};
|
|
};
|
|
inject_simple_analytics "./crate-docs";
|
|
- echo "<meta http-equiv=refresh content=0;url=polkadot_sdk_docs/index.html>" > ./crate-docs/index.html
|
|
|
|
build-implementers-guide:
|
|
stage: build
|
|
extends:
|
|
- .kubernetes-env
|
|
- .common-refs
|
|
- .run-immediately
|
|
- .collect-artifacts
|
|
# git depth is set on purpose: https://github.com/paritytech/polkadot/issues/6284
|
|
variables:
|
|
GIT_STRATEGY: clone
|
|
GIT_DEPTH: 0
|
|
CI_IMAGE: paritytech/mdbook-utils:e14aae4a-20221123
|
|
script:
|
|
- mdbook build ./polkadot/roadmap/implementers-guide
|
|
- mkdir -p artifacts
|
|
- mv polkadot/roadmap/implementers-guide/book artifacts/
|
|
|
|
build-short-benchmark:
|
|
stage: build
|
|
extends:
|
|
- .docker-env
|
|
- .common-refs
|
|
- .run-immediately
|
|
- .collect-artifacts
|
|
script:
|
|
- cargo build --profile release --locked --features=runtime-benchmarks,on-chain-release-build --bin polkadot --workspace
|
|
- mkdir -p artifacts
|
|
- target/release/polkadot --version
|
|
- cp ./target/release/polkadot ./artifacts/
|
|
|
|
# build jobs from cumulus
|
|
|
|
build-linux-stable-cumulus:
|
|
stage: build
|
|
extends:
|
|
- .docker-env
|
|
- .common-refs
|
|
- .run-immediately
|
|
- .collect-artifacts
|
|
variables:
|
|
# Enable debug assertions since we are running optimized builds for testing
|
|
# but still want to have debug assertions.
|
|
RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings"
|
|
script:
|
|
- echo "___Building a binary, please refrain from using it in production since it goes with the debug assertions.___"
|
|
- time cargo build --release --locked -p polkadot-parachain-bin --bin polkadot-parachain
|
|
- echo "___Packing the artifacts___"
|
|
- mkdir -p ./artifacts
|
|
- mv ./target/release/polkadot-parachain ./artifacts/.
|
|
- echo "___The VERSION is either a tag name or the curent branch if triggered not by a tag___"
|
|
- echo ${CI_COMMIT_REF_NAME} | tee ./artifacts/VERSION
|
|
|
|
build-test-parachain:
|
|
stage: build
|
|
extends:
|
|
- .docker-env
|
|
- .common-refs
|
|
- .run-immediately
|
|
- .collect-artifacts
|
|
variables:
|
|
# Enable debug assertions since we are running optimized builds for testing
|
|
# but still want to have debug assertions.
|
|
RUSTFLAGS: "-Cdebug-assertions=y -Dwarnings"
|
|
script:
|
|
- echo "___Building a binary, please refrain from using it in production since it goes with the debug assertions.___"
|
|
- time cargo build --release --locked -p cumulus-test-service --bin test-parachain
|
|
- echo "___Packing the artifacts___"
|
|
- mkdir -p ./artifacts
|
|
- mv ./target/release/test-parachain ./artifacts/.
|
|
- mkdir -p ./artifacts/zombienet
|
|
- mv ./target/release/wbuild/cumulus-test-runtime/wasm_binary_spec_version_incremented.rs.compact.compressed.wasm ./artifacts/zombienet/.
|
|
|
|
# build runtime only if files in $RUNTIME_PATH/$RUNTIME_NAME were changed
|
|
.build-runtime-template: &build-runtime-template
|
|
stage: build
|
|
extends:
|
|
- .docker-env
|
|
- .test-refs-no-trigger-prs-only
|
|
- .run-immediately
|
|
variables:
|
|
RUNTIME_PATH: "parachains/runtimes/assets"
|
|
script:
|
|
- cd ${RUNTIME_PATH}
|
|
- for directory in $(echo */); do
|
|
echo "_____Running cargo check for ${directory} ______";
|
|
cd ${directory};
|
|
pwd;
|
|
SKIP_WASM_BUILD=1 cargo check --locked;
|
|
cd ..;
|
|
done
|
|
|
|
# DAG: build-runtime-assets -> build-runtime-collectives -> build-runtime-bridge-hubs
|
|
# DAG: build-runtime-assets -> build-runtime-collectives -> build-runtime-contracts
|
|
# DAG: build-runtime-assets -> build-runtime-coretime
|
|
# DAG: build-runtime-assets -> build-runtime-starters -> build-runtime-testing
|
|
build-runtime-assets:
|
|
<<: *build-runtime-template
|
|
variables:
|
|
RUNTIME_PATH: "cumulus/parachains/runtimes/assets"
|
|
|
|
build-runtime-collectives:
|
|
<<: *build-runtime-template
|
|
variables:
|
|
RUNTIME_PATH: "cumulus/parachains/runtimes/collectives"
|
|
# this is an artificial job dependency, for pipeline optimization using GitLab's DAGs
|
|
needs:
|
|
- job: build-runtime-assets
|
|
artifacts: false
|
|
|
|
build-runtime-coretime:
|
|
<<: *build-runtime-template
|
|
variables:
|
|
RUNTIME_PATH: "cumulus/parachains/runtimes/coretime"
|
|
# this is an artificial job dependency, for pipeline optimization using GitLab's DAGs
|
|
needs:
|
|
- job: build-runtime-assets
|
|
artifacts: false
|
|
|
|
build-runtime-bridge-hubs:
|
|
<<: *build-runtime-template
|
|
variables:
|
|
RUNTIME_PATH: "cumulus/parachains/runtimes/bridge-hubs"
|
|
# this is an artificial job dependency, for pipeline optimization using GitLab's DAGs
|
|
needs:
|
|
- job: build-runtime-collectives
|
|
artifacts: false
|
|
|
|
build-runtime-contracts:
|
|
<<: *build-runtime-template
|
|
variables:
|
|
RUNTIME_PATH: "cumulus/parachains/runtimes/contracts"
|
|
# this is an artificial job dependency, for pipeline optimization using GitLab's DAGs
|
|
needs:
|
|
- job: build-runtime-collectives
|
|
artifacts: false
|
|
|
|
build-runtime-starters:
|
|
<<: *build-runtime-template
|
|
variables:
|
|
RUNTIME_PATH: "cumulus/parachains/runtimes/starters"
|
|
# this is an artificial job dependency, for pipeline optimization using GitLab's DAGs
|
|
needs:
|
|
- job: build-runtime-assets
|
|
artifacts: false
|
|
|
|
build-runtime-testing:
|
|
<<: *build-runtime-template
|
|
variables:
|
|
RUNTIME_PATH: "cumulus/parachains/runtimes/testing"
|
|
# this is an artificial job dependency, for pipeline optimization using GitLab's DAGs
|
|
needs:
|
|
- job: build-runtime-starters
|
|
artifacts: false
|
|
|
|
build-short-benchmark-cumulus:
|
|
stage: build
|
|
extends:
|
|
- .docker-env
|
|
- .common-refs
|
|
- .run-immediately
|
|
- .collect-artifacts
|
|
script:
|
|
- cargo build --profile release --locked --features=runtime-benchmarks,on-chain-release-build -p polkadot-parachain-bin --bin polkadot-parachain --workspace
|
|
- mkdir -p artifacts
|
|
- target/release/polkadot-parachain --version
|
|
- cp ./target/release/polkadot-parachain ./artifacts/
|
|
|
|
# substrate
|
|
|
|
build-linux-substrate:
|
|
stage: build
|
|
extends:
|
|
- .docker-env
|
|
- .common-refs
|
|
- .collect-artifacts
|
|
# DAG
|
|
needs:
|
|
- job: build-linux-stable
|
|
artifacts: false
|
|
variables:
|
|
# this variable gets overriden by "rusty-cachier environment inject", use the value as default
|
|
CARGO_TARGET_DIR: "$CI_PROJECT_DIR/target"
|
|
before_script:
|
|
- mkdir -p ./artifacts/substrate/
|
|
# tldr: we need to checkout the branch HEAD explicitly because of our dynamic versioning approach while building the substrate binary
|
|
# see https://github.com/paritytech/ci_cd/issues/682#issuecomment-1340953589
|
|
- git checkout -B "$CI_COMMIT_REF_NAME" "$CI_COMMIT_SHA"
|
|
- !reference [.forklift-cache, before_script]
|
|
script:
|
|
- time WASM_BUILD_NO_COLOR=1 cargo build --locked --release -p staging-node-cli
|
|
- mv $CARGO_TARGET_DIR/release/substrate-node ./artifacts/substrate/substrate
|
|
- echo -n "Substrate version = "
|
|
- if [ "${CI_COMMIT_TAG}" ]; then
|
|
echo "${CI_COMMIT_TAG}" | tee ./artifacts/substrate/VERSION;
|
|
else
|
|
./artifacts/substrate/substrate --version |
|
|
cut -d ' ' -f 2 | tee ./artifacts/substrate/VERSION;
|
|
fi
|
|
- sha256sum ./artifacts/substrate/substrate | tee ./artifacts/substrate/substrate.sha256
|
|
- cp -r ./docker/dockerfiles/substrate_injected.Dockerfile ./artifacts/substrate/
|
|
# - printf '\n# building node-template\n\n'
|
|
# - ./scripts/ci/node-template-release.sh ./artifacts/substrate/substrate-node-template.tar.gz
|
|
|
|
build-runtimes-polkavm:
|
|
stage: build
|
|
extends:
|
|
- .docker-env
|
|
- .common-refs
|
|
- .run-immediately
|
|
script:
|
|
- SUBSTRATE_RUNTIME_TARGET=riscv cargo check -p minimal-template-runtime
|
|
- SUBSTRATE_RUNTIME_TARGET=riscv cargo check -p westend-runtime
|
|
- SUBSTRATE_RUNTIME_TARGET=riscv cargo check -p rococo-runtime
|
|
- SUBSTRATE_RUNTIME_TARGET=riscv cargo check -p polkadot-test-runtime
|
|
|
|
.build-subkey:
|
|
stage: build
|
|
extends:
|
|
- .docker-env
|
|
- .common-refs
|
|
- .run-immediately
|
|
# - .collect-artifact
|
|
variables:
|
|
# this variable gets overridden by "rusty-cachier environment inject", use the value as default
|
|
CARGO_TARGET_DIR: "$CI_PROJECT_DIR/target"
|
|
before_script:
|
|
- mkdir -p ./artifacts/subkey
|
|
- !reference [.forklift-cache, before_script]
|
|
script:
|
|
- cd ./substrate/bin/utils/subkey
|
|
- time SKIP_WASM_BUILD=1 cargo build --locked --release
|
|
# - cd -
|
|
# - mv $CARGO_TARGET_DIR/release/subkey ./artifacts/subkey/.
|
|
# - echo -n "Subkey version = "
|
|
# - ./artifacts/subkey/subkey --version |
|
|
# sed -n -E 's/^subkey ([0-9.]+.*)/\1/p' |
|
|
# tee ./artifacts/subkey/VERSION;
|
|
# - sha256sum ./artifacts/subkey/subkey | tee ./artifacts/subkey/subkey.sha256
|
|
# - cp -r ./scripts/ci/docker/subkey.Dockerfile ./artifacts/subkey/
|
|
|
|
build-subkey-linux:
|
|
extends: .build-subkey
|
|
# DAG
|
|
needs:
|
|
- job: build-malus
|
|
artifacts: false
|
|
# tbd
|
|
# build-subkey-macos:
|
|
# extends: .build-subkey
|
|
# # duplicating before_script & script sections from .build-subkey hidden job
|
|
# # to overwrite rusty-cachier integration as it doesn't work on macos
|
|
# before_script:
|
|
# # skip timestamp script, the osx bash doesn't support printf %()T
|
|
# - !reference [.job-switcher, before_script]
|
|
# - mkdir -p ./artifacts/subkey
|
|
# script:
|
|
# - cd ./bin/utils/subkey
|
|
# - SKIP_WASM_BUILD=1 time cargo build --locked --release
|
|
# - cd -
|
|
# - mv ./target/release/subkey ./artifacts/subkey/.
|
|
# - echo -n "Subkey version = "
|
|
# - ./artifacts/subkey/subkey --version |
|
|
# sed -n -E 's/^subkey ([0-9.]+.*)/\1/p' |
|
|
# tee ./artifacts/subkey/VERSION;
|
|
# - sha256sum ./artifacts/subkey/subkey | tee ./artifacts/subkey/subkey.sha256
|
|
# - cp -r ./scripts/ci/docker/subkey.Dockerfile ./artifacts/subkey/
|
|
# after_script: [""]
|
|
# tags:
|
|
# - osx
|
|
|
|
# bridges
|
|
|
|
# we need some non-binary artifacts in our bridges+zombienet image
|
|
prepare-bridges-zombienet-artifacts:
|
|
stage: build
|
|
extends:
|
|
- .docker-env
|
|
- .common-refs
|
|
- .run-immediately
|
|
- .collect-artifacts
|
|
before_script:
|
|
- mkdir -p ./artifacts/bridges-polkadot-sdk/bridges
|
|
script:
|
|
- cp -r bridges/testing ./artifacts/bridges-polkadot-sdk/bridges/testing
|