difftreelog
Merge pull request #983 from UniqueNetwork/ci/baedeker-node-only
in: master
Move node-only CI to baedeker
14 files changed
.baedeker/node-only.jsonnetdiffbeforeafterboth--- /dev/null
+++ b/.baedeker/node-only.jsonnet
@@ -0,0 +1,43 @@
+local
+m = import 'baedeker-library/mixin/spec.libsonnet',
+;
+
+local relay = {
+ name: 'relay',
+ bin: 'bin/polkadot',
+ validatorIdAssignment: 'staking',
+ spec: {Genesis:{
+ chain: 'rococo-local',
+ modify:: m.genericRelay($),
+ }},
+ nodes: {
+ [name]: {
+ bin: $.bin,
+ wantedKeys: 'relay',
+ },
+ for name in ['alice', 'bob', 'charlie', 'dave', 'eve']
+ },
+};
+
+local unique = {
+ name: 'unique',
+ bin: 'bin/unique',
+ paraId: 1001,
+ spec: {Genesis:{
+ modify:: m.genericPara($),
+ }},
+ nodes: {
+ [name]: {
+ bin: $.bin,
+ wantedKeys: 'para',
+ },
+ for name in ['alice', 'bob']
+ },
+};
+
+relay + {
+ parachains: {
+ [para.name]: para,
+ for para in [unique]
+ },
+}
.baedeker/xcm-opal.jsonnetdiffbeforeafterboth--- a/.baedeker/xcm-opal.jsonnet
+++ b/.baedeker/xcm-opal.jsonnet
@@ -2,12 +2,14 @@
m = import 'baedeker-library/mixin/spec.libsonnet',
;
+function(relay_spec)
+
local relay = {
name: 'relay',
bin: 'bin/polkadot',
validatorIdAssignment: 'staking',
spec: {Genesis:{
- chain: 'westend-local',
+ chain: relay_spec,
modify:: m.genericRelay($, hrmp = [
[$.parachains.opal.paraId, $.parachains.westmint.paraId, 8, 512],
[$.parachains.westmint.paraId, $.parachains.opal.paraId, 8, 512],
.baedeker/xcm-quartz.jsonnetdiffbeforeafterboth--- a/.baedeker/xcm-quartz.jsonnet
+++ b/.baedeker/xcm-quartz.jsonnet
@@ -2,12 +2,14 @@
m = import 'baedeker-library/mixin/spec.libsonnet',
;
+function(relay_spec)
+
local relay = {
name: 'relay',
bin: 'bin/polkadot',
validatorIdAssignment: 'staking',
spec: {Genesis:{
- chain: 'westend-local',
+ chain: relay_spec,
modify:: m.genericRelay($, hrmp = std.join([], [
[[$.parachains[a].paraId, $.parachains[b].paraId, 8, 512], [$.parachains[b].paraId, $.parachains[a].paraId, 8, 512]],
for [a, b] in [
@@ -113,7 +115,6 @@
[name]: {
bin: $.bin,
wantedKeys: 'para',
- legacyRpc: true,
},
for name in ['alice', 'bob']
},
.baedeker/xcm-unique.jsonnetdiffbeforeafterboth--- a/.baedeker/xcm-unique.jsonnet
+++ b/.baedeker/xcm-unique.jsonnet
@@ -2,12 +2,14 @@
m = import 'baedeker-library/mixin/spec.libsonnet',
;
+function(relay_spec)
+
local relay = {
name: 'relay',
bin: 'bin/polkadot',
validatorIdAssignment: 'staking',
spec: {Genesis:{
- chain: 'westend-local',
+ chain: relay_spec,
modify:: m.genericRelay($, hrmp = std.join([], [
[[$.parachains[a].paraId, $.parachains[b].paraId, 8, 512], [$.parachains[b].paraId, $.parachains[a].paraId, 8, 512]],
for [a, b] in [
.docker/Dockerfile-parachain-node-only.j2diffbeforeafterboth--- a/.docker/Dockerfile-parachain-node-only.j2
+++ /dev/null
@@ -1,67 +0,0 @@
-# ===== Rust builder =====
-FROM uniquenetwork/services:latest as rust-builder
-ENV CARGO_HOME="/cargo-home"
-ENV PATH="/cargo-home/bin:$PATH"
-ENV TZ=UTC
-
-RUN rustup toolchain uninstall $(rustup toolchain list) && \
- rustup toolchain install {{ RUST_TOOLCHAIN }} && \
- rustup default {{ RUST_TOOLCHAIN }} && \
- rustup target list --installed && \
- rustup show
-RUN rustup target add wasm32-unknown-unknown --toolchain {{ RUST_TOOLCHAIN }}
-
-RUN mkdir /unique_parachain
-WORKDIR /unique_parachain
-
-
-# ===== BUILD current version ======
-FROM rust-builder as builder-unique-current
-
-ARG PROFILE=release
-
-WORKDIR /unique_parachain
-
-RUN git clone -b {{ MAINNET_BRANCH }} https://github.com/UniqueNetwork/unique-chain.git . && \
- cargo build --features={{ NETWORK }}-runtime --$PROFILE
-
-# ===== BUILD target version ======
-FROM rust-builder as builder-unique-target
-
-ARG PROFILE=release
-
-COPY . /unique_parachain
-WORKDIR /unique_parachain
-
-RUN cargo build --features={{ NETWORK }}-runtime --$PROFILE
-
-# ===== RUN ======
-
-FROM ubuntu:22.04
-
-RUN apt-get -y update && \
- apt-get -y install curl git && \
- curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash && \
- export NVM_DIR="$HOME/.nvm" && \
- [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
- nvm install v16.16.0 && \
- nvm use v16.16.0
-
-RUN git clone https://github.com/uniquenetwork/polkadot-launch -b {{ POLKADOT_LAUNCH_BRANCH }}
-
-COPY --from=builder-unique-current /unique_parachain/target/release/unique-collator /unique-chain/current/release/
-
-COPY --from=builder-unique-target /unique_parachain/target/release/unique-collator /unique-chain/target/release/
-COPY --from=builder-unique-target /unique_parachain/target/release/wbuild/{{ WASM_NAME }}-runtime/{{ WASM_NAME }}_runtime.compact.compressed.wasm /unique-chain/target/release/wbuild/{{ WASM_NAME }}-runtime/{{ WASM_NAME }}_runtime.compact.compressed.wasm
-COPY --from=builder-unique-target /unique_parachain/.docker/forkless-config/launch-config-node-only.json /polkadot-launch/launch-config.json
-
-COPY --from=uniquenetwork/builder-polkadot:{{ POLKADOT_BUILD_BRANCH }} /unique_parachain/polkadot/target/release/polkadot /polkadot/target/release/
-COPY --from=uniquenetwork/builder-polkadot:{{ POLKADOT_BUILD_BRANCH }} /unique_parachain/polkadot/target/release/wbuild/westend-runtime/westend_runtime.compact.compressed.wasm /polkadot/target/release/wbuild/westend-runtime/westend_runtime.compact.compressed.wasm
-COPY --from=uniquenetwork/builder-polkadot:{{ POLKADOT_BUILD_BRANCH }} /unique_parachain/polkadot/target/release/wbuild/rococo-runtime/rococo_runtime.compact.compressed.wasm /polkadot/target/release/wbuild/rococo-runtime/rococo_runtime.compact.compressed.wasm
-
-CMD export NVM_DIR="$HOME/.nvm" && \
- [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
- cd /polkadot-launch && \
- npm install --global yarn && \
- yarn install && \
- yarn start launch-config.json --test-upgrade-parachains -w -n
.docker/Dockerfile-unique-releasediffbeforeafterboth--- /dev/null
+++ b/.docker/Dockerfile-unique-release
@@ -0,0 +1,49 @@
+# ===== Rust builder =====
+FROM ubuntu:22.04 as rust-builder
+LABEL maintainer="Unique.Network"
+
+ENV CARGO_HOME="/cargo-home"
+ENV PATH="/cargo-home/bin:$PATH"
+ENV TZ=UTC
+RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
+
+RUN apt-get update && \
+ apt-get install -y curl cmake pkg-config libssl-dev git clang llvm libudev-dev protobuf-compiler && \
+ apt-get clean && \
+ rm -r /var/lib/apt/lists/*
+
+RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain none
+
+ARG RUST_TOOLCHAIN
+RUN echo "Using Rust '$RUST_TOOLCHAIN'" && \
+ rustup toolchain install $RUST_TOOLCHAIN && \
+ rustup target add wasm32-unknown-unknown --toolchain ${RUST_TOOLCHAIN} && \
+ rustup default $RUST_TOOLCHAIN && \
+ rustup target list --installed && \
+ rustup show
+
+RUN mkdir /unique_parachain
+WORKDIR /unique_parachain
+
+# ===== BUILD POLKADOT =====
+FROM rust-builder as builder-polkadot-bin
+
+WORKDIR /unique_parachain
+
+ARG UNIQUE_VERSION
+RUN git clone -b "$UNIQUE_VERSION" --depth 1 https://github.com/uniquenetwork/unique-chain.git
+
+ARG RUNTIME_FEATURES
+RUN --mount=type=cache,target=/cargo-home/registry \
+ --mount=type=cache,target=/cargo-home/git \
+ --mount=type=cache,target=/unique_parachain/polkadot/target \
+ cd unique-chain && \
+ CARGO_INCREMENTAL=0 cargo build --release --features="$RUNTIME_FEATURES" --locked && \
+ mv ./target/release/unique-collator /unique_parachain/unique-chain/
+
+# ===== BIN ======
+
+FROM ubuntu:22.04 as builder-polkadot
+
+COPY --from=builder-polkadot-bin /unique_parachain/unique-chain/unique-collator /bin/unique-collator
+ENTRYPOINT ["/bin/unique-collator"]
.docker/docker-compose.node-only.j2diffbeforeafterboth--- a/.docker/docker-compose.node-only.j2
+++ /dev/null
@@ -1,16 +0,0 @@
-version: "3.5"
-
-services:
- node-only:
- image: uniquenetwork/ci-node-only-local:{{ NETWORK }}-{{ BUILD_TAG }}
- container_name: node-only
- expose:
- - 9944
- - 9945
- - 9933
- - 9844
- ports:
- - 127.0.0.1:9944:9944
- - 127.0.0.1:9945:9945
- - 127.0.0.1:9933:9933
- - 127.0.0.1:9844:9844
.github/actions/buildContainer/action.ymldiffbeforeafterboth--- /dev/null
+++ b/.github/actions/buildContainer/action.yml
@@ -0,0 +1,59 @@
+name: Build or pull container
+description: ''
+inputs:
+ container:
+ description: Which name to fetch/push
+ required: true
+ tag:
+ description: Which tag to fetch/push
+ required: true
+ context:
+ description: Container context
+ required: true
+ default: "."
+ dockerfile:
+ description: Path to dockerfile (relative to context)
+ required: true
+ args:
+ description: Docker build extra args
+ default: ''
+ dockerhub_username:
+ description: Secret
+ dockerhub_token:
+ description: Secret
+outputs:
+ name:
+ description: Full container name
+ value: ${{ steps.ensure.outputs.name }}
+runs:
+ using: "composite"
+ steps:
+ - name: Ensure have ${{ inputs.container }}:${{ inputs.tag }}
+ id: ensure
+ run: |
+ echo "Wanted container: ${{ inputs.container }}:${{ inputs.tag }}"
+
+ TOKEN=$(curl -s -H "Content-Type: application/json" -X POST -d '{"username": "'${{ inputs.dockerhub_username }}'", "password": "'${{ inputs.dockerhub_token }}'"}' https://hub.docker.com/v2/users/login/ | jq -r .token)
+
+ # Get TAGS from DOCKERHUB
+ TAGS=$(curl -s -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/${{ inputs.container }}/tags/?page_size=100 | jq -r '."results"[]["name"]' || echo "")
+
+ echo "Available tags:"
+ echo "$TAGS"
+
+ # Check correct version POLKADOT and build it if it doesn't exist in POLKADOT TAGS
+ if [[ ${TAGS[*]} =~ (^|[[:space:]])"${{ inputs.tag }}"($|[[:space:]]) ]]; then
+ echo "Repository has needed version, pulling";
+ docker pull ${{ inputs.container }}:${{ inputs.tag }}
+ else
+ echo "Repository had no needed version, so build it";
+ cd "${{ inputs.context }}" && docker build --file "${{ inputs.dockerfile }}" \
+ $BUILD_ARGS --tag ${{ inputs.container }}:${{ inputs.tag }} \
+ .
+ echo "Push built version to the repository";
+ docker push ${{ inputs.container }}:${{ inputs.tag }} || true
+ fi
+ echo "name=${{ inputs.container }}:${{ inputs.tag }}" >> $GITHUB_OUTPUT
+ env:
+ BUILD_ARGS: ${{ inputs.args }}
+ shell: bash
.github/actions/prepare/action.ymldiffbeforeafterboth--- a/.github/actions/prepare/action.yml
+++ b/.github/actions/prepare/action.yml
@@ -14,7 +14,16 @@
shell: bash
run: |
echo "LAST_COMMIT_SHA=${GITHUB_SHA}" >> ${GITHUB_ENV}
- - name: Set build SHA
+ - name: Run find-and-replace to remove slashes from branch name
+ uses: mad9000/actions-find-and-replace-string@4
+ id: ref_slug
+ with:
+ source: ${{ github.head_ref }}
+ find: '/'
+ replace: '-'
+ - name: Set BUILD_SHA, REF_SLUG
shell: bash
run: |
echo "BUILD_SHA=${LAST_COMMIT_SHA:0:8}" >> $GITHUB_ENV
+ echo "REF_SLUG=${{ steps.ref_slug.outputs.value }}" >> $GITHUB_ENV
+
.github/workflows/node-only-update.ymldiffbeforeafterboth1# https://cryptousetech.atlassian.net/wiki/spaces/CI/pages/2586837028/Nodes+only+update2# Node only update with restart polkadot-launch process.34name: nodes-only update56# Triger: only call from main workflow(re-usable workflows)7on:8 workflow_call:91011# A workflow run is made up of one or more jobs that can run sequentially or in parallel12jobs:1314 prepare-execution-matrix:1516 name: execution matrix1718 runs-on: self-hosted-ci19 outputs:20 matrix: ${{ steps.create_matrix.outputs.matrix }}2122 steps:2324 - name: Clean Workspace25 uses: AutoModality/action-clean@v1.1.02627 # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it28 - uses: actions/checkout@v3.1.029 with:30 ref: ${{ github.head_ref }} #Checking out head commit3132 - name: Read .env file33 uses: xom9ikk/dotenv@v23435 - name: Create Execution matrix36 uses: CertainLach/create-matrix-action@v437 id: create_matrix38 with:39 matrix: |40 network {opal}, mainnet_branch {${{ env.OPAL_MAINNET_BRANCH }}}, relay_branch {${{ env.UNIQUEWEST_MAINNET_BRANCH }}}, runtime_features {opal-runtime}41 network {sapphire}, mainnet_branch {${{ env.SAPPHIRE_MAINNET_BRANCH }}}, relay_branch {${{ env.UNIQUEEAST_MAINNET_BRANCH }}}, runtime_features {sapphire-runtime}42 network {quartz}, mainnet_branch {${{ env.QUARTZ_MAINNET_BRANCH }}}, relay_branch {${{ env.KUSAMA_MAINNET_BRANCH }}}, runtime_features {quartz-runtime}43 network {unique}, mainnet_branch {${{ env.UNIQUE_MAINNET_BRANCH }}}, relay_branch {${{ env.POLKADOT_MAINNET_BRANCH }}}, runtime_features {unique-runtime}4445 node-only-update-build:4647 needs: prepare-execution-matrix48 # The type of runner that the job will run on49 runs-on: [self-hosted-ci]5051 timeout-minutes: 2880 # 48 hours for execution jobs.5253 name: ${{ matrix.network }}-build5455 continue-on-error: true #Do not stop testing of matrix runs failed. As it decided during PR review - it required 50/50& Let's check it with false.5657 strategy:58 matrix:59 include: ${{fromJson(needs.prepare-execution-matrix.outputs.matrix)}}6061 steps:6263 - name: Skip if pull request is in Draft64 if: github.event.pull_request.draft == true65 run: exit 16667 - name: Clean Workspace68 uses: AutoModality/action-clean@v1.1.06970 # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it71 - uses: actions/checkout@v3.1.072 with:73 ref: ${{ github.head_ref }} #Checking out head commit7475 # Prepare SHA 76 - name: Prepare SHA77 uses: ./.github/actions/prepare7879 - name: Read .env file80 uses: xom9ikk/dotenv@v28182 - name: Log in to Docker Hub83 uses: docker/login-action@v2.1.084 with:85 username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}86 password: ${{ secrets.CORE_DOCKERHUB_TOKEN }}8788 - name: Generate ENV related extend Dockerfile file for POLKADOT89 uses: cuchi/jinja2-action@v1.2.090 with:91 template: .docker/Dockerfile-polkadot.j292 output_file: .docker/Dockerfile-polkadot.${{ matrix.relay_branch }}.yml93 variables: |94 RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}95 POLKADOT_BUILD_BRANCH=${{ matrix.relay_branch }}96 - name: Prepare polkadot97 uses: ./.github/actions/buildContainer98 id: polkadot99 with:100 container: uniquenetwork/builder-polkadot101 tag: ${{ matrix.relay_branch }}102 context: .docker103 dockerfile: Dockerfile-polkadot.${{ matrix.relay_branch }}.yml104 dockerhub_username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}105 dockerhub_token: ${{ secrets.CORE_DOCKERHUB_TOKEN }}106107 - name: Prepare mainnet108 uses: ./.github/actions/buildContainer109 id: mainnet110 with:111 container: uniquenetwork/ci-node-only-${{ matrix.network }}112 tag: ${{ matrix.mainnet_branch }}113 context: .docker114 dockerfile: Dockerfile-unique-release115 args: |116 --build-arg RUNTIME_FEATURES=${{ matrix.runtime_features }}117 --build-arg RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}118 --build-arg UNIQUE_VERSION=${{ matrix.mainnet_branch }}119 dockerhub_username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}120 dockerhub_token: ${{ secrets.CORE_DOCKERHUB_TOKEN }}121122 - name: Prepare latest123 uses: ./.github/actions/buildContainer124 id: latest125 with:126 container: uniquenetwork/ci-node-only-${{ matrix.network }}127 tag: ${{ env.REF_SLUG }}-${{ env.BUILD_SHA }}128 context: .129 dockerfile: .docker/Dockerfile-unique130 args: |131 --build-arg RUNTIME_FEATURES=${{ matrix.runtime_features }}132 --build-arg RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}133 dockerhub_username: ${{ secrets.CORE_DOCKERHUB_USERNAME }}134 dockerhub_token: ${{ secrets.CORE_DOCKERHUB_TOKEN }}135136 - name: Checkout at '${{ matrix.mainnet_branch }}' branch137 uses: actions/checkout@master138 with:139 ref: ${{ github.head_ref }}140 # ref: ${{ matrix.mainnet_branch }} #Checking out head commit141 path: ${{ matrix.mainnet_branch }}142143 - uses: actions/setup-node@v3.5.1144 with:145 node-version: 16146147 - name: Install baedeker148 uses: UniqueNetwork/baedeker-action/setup@built149150 - name: Setup library151 run: mkdir -p .baedeker/vendor/ && git clone https://github.com/UniqueNetwork/baedeker-library .baedeker/vendor/baedeker-library152153 - name: Start network154 uses: UniqueNetwork/baedeker-action@built155 id: bdk156 with:157 jpath: |158 .baedeker/vendor159 tla-str: |160 relay_spec=westend-local161 inputs: |162 .baedeker/node-only.jsonnet163 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/polkadot':{dockerImage:'${{ steps.polkadot.outputs.name }}'}})164 ephemeral:snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'${{ steps.mainnet.outputs.name }}'}}, extra_node_mixin = {legacyRpc: true})165166 - name: Run Parallel tests before Node Parachain upgrade167 working-directory: ${{ matrix.mainnet_branch }}/tests168 if: success() || failure()169 run: |170 yarn171 yarn add mochawesome172 ./scripts/wait_for_first_block.sh173 echo "Ready to start tests"174 NOW=$(date +%s) && yarn testParallel --reporter mochawesome --reporter-options reportFilename=test-parallel-${NOW}175 env:176 RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }}177178 - name: Run Sequential tests before Node Parachain upgrade179 if: success() || failure()180 working-directory: ${{ matrix.mainnet_branch }}/tests181 run: NOW=$(date +%s) && yarn testSequential --reporter mochawesome --reporter-options reportFilename=test-sequential-${NOW}182 env:183 RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }}184185 - name: "Reconcile: only one old node"186 if: success() || failure()187 uses: UniqueNetwork/baedeker-action/reconcile@built188 with:189 baedeker: ${{ steps.bdk.baedeker }}190 # Chain should always be built with the mainnet spec, this we first set binary for all nodes expect one, then set mainnet binary for the last node, and then force chainspec to be still generated from mainnet191 inputs: |192 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'${{ steps.latest.outputs.name }}'}}, leave = 1, for_chain = false)193 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'${{ steps.mainnet.outputs.name }}'}}, extra_node_mixin = {legacyRpc: true}, for_chain = false)194 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'${{ steps.mainnet.outputs.name }}'}})195196 - name: Ensure network is alive197 if: success() || failure() # run this step even if previous step failed198 run: |199 ./tests/scripts/wait_for_first_block.sh200 env:201 RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }}202203 - name: "Reconcile: all nodes are updated"204 if: success() || failure()205 uses: UniqueNetwork/baedeker-action/reconcile@built206 with:207 baedeker: ${{ steps.bdk.baedeker }}208 # Chain should always be built with the mainnet spec, this we first set binary for all nodes, and then force chainspec to be still generated from mainnet209 inputs: |210 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'${{ steps.latest.outputs.name }}'}}, for_chain = false)211 snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'${{ steps.mainnet.outputs.name }}'}})212213 - name: Run Parallel tests after Node Parachain upgrade214 working-directory: ${{ matrix.mainnet_branch }}/tests215 if: success() || failure() # run this step even if previous step failed216 run: |217 yarn install218 yarn add mochawesome219 ./scripts/wait_for_first_block.sh220 echo "Ready to start tests"221 NOW=$(date +%s) && yarn testParallel --reporter mochawesome --reporter-options reportFilename=test-parallel-${NOW}222 env:223 RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }}224225 - name: Run Sequential tests after Node Parachain upgrade226 if: success() || failure()227 working-directory: ${{ matrix.mainnet_branch }}/tests228 run: NOW=$(date +%s) && yarn testSequential --reporter mochawesome --reporter-options reportFilename=test-sequential-${NOW}229 env:230 RPC_URL: ${{ env.RELAY_UNIQUE_HTTP_URL }}231232 - name: Remove builder cache233 if: always() # run this step always234 run: |235 docker system prune -f.github/workflows/xcm.ymldiffbeforeafterboth--- a/.github/workflows/xcm.yml
+++ b/.github/workflows/xcm.yml
@@ -284,25 +284,16 @@
fi
shell: bash
-
- - name: Run find-and-replace to remove slashes from branch name
- uses: mad9000/actions-find-and-replace-string@4
- id: branchname
- with:
- source: ${{ github.head_ref }}
- find: '/'
- replace: '-'
-
- name: Build unique-chain
run: |
docker build --file .docker/Dockerfile-unique \
--build-arg RUNTIME_FEATURES=${{ matrix.runtime_features }} \
--build-arg RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} \
- --tag uniquenetwork/ci-xcm-local:${{ matrix.network }}-${{ steps.branchname.outputs.value }}-${{ env.BUILD_SHA }} \
+ --tag uniquenetwork/ci-xcm-local:${{ matrix.network }}-${{ env.REF_SLUG }}-${{ env.BUILD_SHA }} \
.
- name: Push docker image version
- run: docker push uniquenetwork/ci-xcm-local:${{ matrix.network }}-${{ steps.branchname.outputs.value }}-${{ env.BUILD_SHA }}
+ run: docker push uniquenetwork/ci-xcm-local:${{ matrix.network }}-${{ env.REF_SLUG }}-${{ env.BUILD_SHA }}
- uses: actions/setup-node@v3.5.1
with:
@@ -320,10 +311,12 @@
with:
jpath: |
.baedeker/vendor
+ tla-str: |
+ relay_spec=westend-local
inputs: |
.baedeker/xcm-${{ matrix.network }}.jsonnet
snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/polkadot':{dockerImage:'uniquenetwork/builder-polkadot:${{ matrix.relay_branch }}'}})
- snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'uniquenetwork/ci-xcm-local:${{ matrix.network }}-${{ steps.branchname.outputs.value }}-${{ env.BUILD_SHA }}'}})
+ snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/unique':{dockerImage:'uniquenetwork/ci-xcm-local:${{ matrix.network }}-${{ env.REF_SLUG }}-${{ env.BUILD_SHA }}'}})
snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/acala':{dockerImage:'uniquenetwork/builder-acala:${{ matrix.acala_version }}'}})
snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/moonbeam':{dockerImage:'uniquenetwork/builder-moonbeam:${{ matrix.moonbeam_version }}'}})
snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/cumulus':{dockerImage:'uniquenetwork/builder-cumulus:${{ matrix.cumulus_version }}'}})
tests/scripts/wait_for_first_block.shdiffbeforeafterboth--- a/tests/scripts/wait_for_first_block.sh
+++ b/tests/scripts/wait_for_first_block.sh
@@ -4,24 +4,40 @@
. $DIR/functions.sh
-function is_started {
+last_block_id=0
+block_id=0
+function get_block {
block_id_hex=$(do_rpc chain_getHeader | jq -r .result.number)
block_id=$((${block_id_hex}))
echo Id = $block_id
- if (( $block_id > 1 )); then
+}
+
+function had_new_block {
+ last_block_id=$block_id
+ get_block
+ if (( last_block_id != 0 && block_id > last_block_id )); then
return 0
fi
return 1
}
-while ! is_started; do
- echo "Waiting for first block..."
+function reset_check {
+ last_block_id=0
+ block_id=0
+}
+
+while ! had_new_block; do
+ echo "Waiting for next block..."
sleep 12
done
+reset_check
+
echo "Chain is running, but lets wait for another block after a minute, to avoid startup flakiness."
-sleep 120
-while ! is_started; do
- echo "Waiting for second block..."
+sleep 60
+
+while ! had_new_block; do
+ echo "Waiting for another block..."
sleep 12
done
+
echo "Chain is running!"
tests/src/util/globalSetup.tsdiffbeforeafterboth--- a/tests/src/util/globalSetup.ts
+++ b/tests/src/util/globalSetup.ts
@@ -112,4 +112,8 @@
});
};
-globalSetup().catch(() => process.exit(1));
+globalSetup().catch(e => {
+ console.error('Setup error');
+ console.error(e);
+ process.exit(1)
+});
tests/src/xcm/xcmQuartz.test.tsdiffbeforeafterboth--- a/tests/src/xcm/xcmQuartz.test.ts
+++ b/tests/src/xcm/xcmQuartz.test.ts
@@ -481,7 +481,7 @@
await usingKaruraPlaygrounds(karuraUrl, async (helper) => {
const destination = {
- V1: {
+ V2: {
parents: 1,
interior: {
X1: {
@@ -591,7 +591,7 @@
itSub('Should connect to Karura and send QTZ back', async ({helper}) => {
await usingKaruraPlaygrounds(karuraUrl, async (helper) => {
const destination = {
- V1: {
+ V2: {
parents: 1,
interior: {
X2: [
@@ -653,7 +653,7 @@
const [targetAccount] = await helper.arrange.createAccounts([targetAccountBalance], alice);
const quartzMultilocation = {
- V1: {
+ V2: {
parents: 1,
interior: {
X1: {Parachain: QUARTZ_CHAIN},
@@ -716,7 +716,7 @@
const [targetAccount] = await helper.arrange.createAccounts([0n], alice);
const quartzMultilocation = {
- V1: {
+ V2: {
parents: 1,
interior: {
X1: {
@@ -797,7 +797,6 @@
let quartzParachainMultilocation: any;
let quartzAccountMultilocation: any;
let quartzCombinedMultilocation: any;
- let quartzCombinedMultilocationKarura: any; // TODO remove it when Karura goes V2
let messageSent: any;
@@ -835,15 +834,6 @@
quartzCombinedMultilocation = {
V2: {
- parents: 1,
- interior: {
- X2: [quartzParachainJunction, quartzAccountJunction],
- },
- },
- };
-
- quartzCombinedMultilocationKarura = {
- V1: {
parents: 1,
interior: {
X2: [quartzParachainJunction, quartzAccountJunction],
@@ -871,7 +861,7 @@
const id = {
Token: 'KAR',
};
- const destination = quartzCombinedMultilocationKarura;
+ const destination = quartzCombinedMultilocation;
await helper.xTokens.transfer(alice, id, testAmount, destination, 'Unlimited');
messageSent = await helper.wait.expectEvent(maxWaitBlocks, Event.XcmpQueue.XcmpMessageSent);