forked from paritytech/polkadot-sdk
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Run bridges zombienet tests on CI (paritytech#2439)
Brridges zombienet tests are non-standard - zombienet currently missing multiple relay chains support (see e.g. paritytech/zombienet#796), so we need to go live with two relay networks, their parachains + custom test runner (which e.g. doesn't shutdown net when its tests are finished and instead waits for both networks tests to complete). So we are stuck with native zombienet provider => this PR is an attempt to gather everything in a single docker container and run tests there ~Draft, because it is far from finishing - what I want now is to see how it works on CI~
- Loading branch information
Showing
8 changed files
with
214 additions
and
28 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
# This file is part of .gitlab-ci.yml | ||
# Here are all jobs that are executed during "zombienet" stage for bridges | ||
|
||
# common settings for all zombienet jobs | ||
.zombienet-bridges-common: | ||
before_script: | ||
# Exit if the job is not merge queue | ||
# - if [[ $CI_COMMIT_REF_NAME != *"gh-readonly-queue"* ]]; then echo "I will run only in a merge queue"; exit 0; fi | ||
- echo "Zombienet Tests Config" | ||
- echo "${ZOMBIENET_IMAGE}" | ||
- echo "${GH_DIR}" | ||
- echo "${LOCAL_DIR}" | ||
- ls "${LOCAL_DIR}" | ||
- export DEBUG=zombie,zombie::network-node | ||
- export ZOMBIENET_INTEGRATION_TEST_IMAGE="${BRIDGES_ZOMBIENET_TESTS_IMAGE}":${BRIDGES_ZOMBIENET_TESTS_IMAGE_TAG} | ||
- echo "${ZOMBIENET_INTEGRATION_TEST_IMAGE}" | ||
stage: zombienet | ||
image: "${BRIDGES_ZOMBIENET_TESTS_IMAGE}:${BRIDGES_ZOMBIENET_TESTS_IMAGE_TAG}" | ||
needs: | ||
- job: build-push-image-bridges-zombienet-tests | ||
artifacts: true | ||
extends: | ||
- .kubernetes-env | ||
- .zombienet-refs | ||
variables: | ||
BRIDGES_ZOMBIENET_TESTS_IMAGE_TAG: ${DOCKER_IMAGES_VERSION} | ||
BRIDGES_ZOMBIENET_TESTS_IMAGE: "docker.io/paritypr/bridges-zombienet-tests" | ||
GH_DIR: "https://github.com/paritytech/polkadot-sdk/tree/${CI_COMMIT_SHA}/bridges/zombienet" | ||
LOCAL_DIR: "/builds/parity/mirrors/polkadot-sdk/bridges/zombienet" | ||
FF_DISABLE_UMASK_FOR_DOCKER_EXECUTOR: 1 | ||
RUN_IN_CONTAINER: "1" | ||
artifacts: | ||
name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}_zombienet_bridge_tests" | ||
when: always | ||
expire_in: 2 days | ||
paths: | ||
- ./zombienet-logs | ||
after_script: | ||
- mkdir -p ./zombienet-logs | ||
# copy logs of tests runner (run-tests.sh) | ||
- cp -r /tmp/bridges-zombienet-tests.*/tmp.*/tmp.* ./zombienet-logs/ | ||
# copy logs of all nodes | ||
- cp /tmp/zombie*/logs/* ./zombienet-logs/ | ||
# following lines are causing spurious test failures ("At least one of the nodes fails to start") | ||
# retry: 2 | ||
# tags: | ||
# - zombienet-polkadot-integration-test | ||
|
||
zombienet-bridges-0001-asset-transfer-works: | ||
extends: | ||
- .zombienet-bridges-common | ||
script: | ||
- /home/nonroot/bridges-polkadot-sdk/bridges/zombienet/run-tests.sh --docker | ||
- echo "Done" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
60 changes: 60 additions & 0 deletions
60
docker/dockerfiles/bridges_zombienet_tests_injected.Dockerfile
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
# this image is built on top of existing Zombienet image | ||
ARG ZOMBIENET_IMAGE | ||
# this image uses substrate-relay image built elsewhere | ||
ARG SUBSTRATE_RELAY_IMAGE=docker.io/paritytech/substrate-relay:v2023-11-07-rococo-westend-initial-relayer | ||
|
||
# metadata | ||
ARG VCS_REF | ||
ARG BUILD_DATE | ||
ARG IMAGE_NAME | ||
|
||
# we need `substrate-relay` binary, built elsewhere | ||
FROM ${SUBSTRATE_RELAY_IMAGE} as relay-builder | ||
|
||
# the base image is the zombienet image - we are planning to run zombienet tests using native | ||
# provider here | ||
FROM ${ZOMBIENET_IMAGE} | ||
|
||
LABEL io.parity.image.authors="[email protected]" \ | ||
io.parity.image.vendor="Parity Technologies" \ | ||
io.parity.image.title="${IMAGE_NAME}" \ | ||
io.parity.image.description="Bridges Zombienet tests." \ | ||
io.parity.image.source="https://github.com/paritytech/polkadot-sdk/blob/${VCS_REF}/docker/dockerfiles/bridges_zombienet_tests_injected.Dockerfile" \ | ||
io.parity.image.revision="${VCS_REF}" \ | ||
io.parity.image.created="${BUILD_DATE}" \ | ||
io.parity.image.documentation="https://github.com/paritytech/polkadot-sdk/bridges/zombienet" | ||
|
||
# show backtraces | ||
ENV RUST_BACKTRACE 1 | ||
USER root | ||
|
||
# for native provider to work (TODO: fix in zn docker?) | ||
RUN apt-get update && apt-get install -y procps sudo | ||
RUN yarn global add @polkadot/api-cli | ||
|
||
# add polkadot binary to the docker image | ||
COPY ./artifacts/polkadot /usr/local/bin/ | ||
COPY ./artifacts/polkadot-execute-worker /usr/local/bin/ | ||
COPY ./artifacts/polkadot-prepare-worker /usr/local/bin/ | ||
# add polkadot-parachain binary to the docker image | ||
COPY ./artifacts/polkadot-parachain /usr/local/bin | ||
# copy substrate-relay to the docker image | ||
COPY --from=relay-builder /home/user/substrate-relay /usr/local/bin/ | ||
# we need bridges zombienet runner and tests | ||
RUN mkdir -p /home/nonroot/bridges-polkadot-sdk | ||
COPY ./artifacts/bridges-polkadot-sdk /home/nonroot/bridges-polkadot-sdk | ||
# also prepare `generate_hex_encoded_call` for running | ||
RUN set -eux; \ | ||
cd /home/nonroot/bridges-polkadot-sdk/cumulus/scripts/generate_hex_encoded_call; \ | ||
npm install | ||
|
||
# check if executable works in this container | ||
USER nonroot | ||
RUN /usr/local/bin/polkadot --version | ||
RUN /usr/local/bin/polkadot-parachain --version | ||
RUN /usr/local/bin/substrate-relay --version | ||
|
||
# https://polkadot.js.org/apps/?rpc=ws://127.0.0.1:{PORT}#/explorer | ||
EXPOSE 9942 9910 8943 9945 9010 8945 | ||
|
||
ENTRYPOINT ["/bin/bash", "-c", "/home/nonroot/bridges-polkadot-sdk/bridges/zombienet/run-tests.sh"] |