git.delta.rocks / unique-network / refs/commits / 2b87ab82cef9

difftreelog

add ci for hydradx

Konstantin Astakhov2023-12-12parent: #98dd35a.patch.diff
in: master

3 files changed

modified.baedeker/xcm-unique.jsonnetdiffbeforeafterboth
after · .baedeker/xcm-unique.jsonnet
1local2m = import 'baedeker-library/mixin/spec.libsonnet',3;45function(relay_spec)67local relay = {8	name: 'relay',9	bin: 'bin/polkadot',10	validatorIdAssignment: 'staking',11	spec: {Genesis:{12		chain: relay_spec,13		modify:: m.genericRelay($, hrmp = std.join([], [14			// [[$.parachains[a].paraId, $.parachains[b].paraId, 8, 512], [$.parachains[b].paraId, $.parachains[a].paraId, 8, 512]],15			// for [a, b] in [16				// ['unique', 'acala'],17				// ['unique', 'moonbeam'],18				// ['unique', 'statemint'],19				// ['unique', 'astar'],20				// ['unique', 'polkadex'],21			// ]22		])),23	}},24	nodes: {25		[name]: {26			bin: $.bin,27			wantedKeys: 'relay',28			extraArgs: [29				"-lxcm=trace"30			],31		},32		for name in ['alice', 'bob', 'charlie', 'dave', 'eve', 'ferdie', 'gregory', 'holly']33	},34};3536local unique = {37	name: 'unique',38	bin: 'bin/unique',39	paraId: 1001,40	spec: {Genesis:{41		modify:: m.genericPara($),42	}},43	nodes: {44		[name]: {45			bin: $.bin,46			wantedKeys: 'para',47			extraArgs: [48				"-lxcm=trace"49			],50		},51		for name in ['alice', 'bob']52	},53};5455local acala = {56	name: 'acala',57	bin: 'bin/acala',58	paraId: 1002,59	spec: {Genesis:{60		chain: 'acala-dev',61		modify:: bdk.mixer([62			m.genericPara($),63			function(prev) prev {id+: '-local'},64		]),65	}},66	nodes: {67		[name]: {68			bin: $.bin,69			wantedKeys: 'para',70			extraArgs: [71				"-lxcm=trace"72			],73		},74		for name in ['alice', 'bob']75	},76};7778local moonbeam = {79	name: 'moonbeam',80	bin: 'bin/moonbeam',81	signatureSchema: 'Ethereum',82	paraId: 1003,83	spec: {Genesis:{84		chain: 'moonbeam-local',85		specFilePrefix: 'moonbeam-local-',86		modify:: m.genericPara($),87	}},88	nodes: {89		[name]: {90			bin: $.bin,91			wantedKeys: 'para-nimbus',92			extraArgs: [93				"-lxcm=trace"94			],95		},96		for name in ['alith', 'baltathar']97	},98};99100local statemint = {101	name: 'statemint',102	bin: 'bin/cumulus',103	paraId: 1004,104	spec: {Genesis:{105		chain: 'statemint-local',106		modify:: m.genericPara($),107	}},108	nodes: {109		[name]: {110			bin: $.bin,111			wantedKeys: 'para-ed',112			extraArgs: [113				"-lxcm=trace"114			],115		},116		for name in ['alice', 'bob']117	},118};119120local astar = {121	name: 'astar',122	bin: 'bin/astar',123	paraId: 1005,124	spec: {Genesis:{125		chain: 'astar-dev',126		modify:: m.genericPara($),127	}},128	nodes: {129		[name]: {130			bin: $.bin,131			wantedKeys: 'para',132			extraArgs: [133				"-lxcm=trace"134			],135		},136		for name in ['alice', 'bob']137	},138};139140local polkadex = {141	name: 'polkadex',142	bin: 'bin/polkadex',143	paraId: 1006,144	spec: {Genesis:{145		chain: 'mainnet',146		modify:: m.genericPara($),147	}},148	nodes: {149		[name]: {150			bin: $.bin,151			wantedKeys: 'para',152			extraArgs: [153				"-lxcm=trace"154			],155		},156		for name in ['alice', 'bob']157	},158};159160local hydraDx = {161	name: 'hydraDx',162	bin: 'bin/hydradx',163	paraId: 1007,164	spec: {Genesis:{165		chain: 'local',166		modify:: m.genericPara($),167	}},168	nodes: {169		[name]: {170			bin: $.bin,171			wantedKeys: 'para',172			legacyRpc: true,173			extraArgs: [174				"-lxcm=trace"175			],176		},177		for name in ['alice', 'bob']178	},179};180181182relay + {183	parachains: {184		[para.name]: para,185		for para in [unique, acala, moonbeam, statemint, astar, polkadex, hydraDx]186	},187}
added.docker/Dockerfile-hydradx.j2diffbeforeafterboth
--- /dev/null
+++ b/.docker/Dockerfile-hydradx.j2
@@ -0,0 +1,46 @@
+# ===== 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
+
+RUN 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 ACALA =====
+FROM rust-builder as builder-hydradx-bin
+
+WORKDIR /unique_parachain
+
+RUN git clone --depth 1 -b {{ HYDRADX_BUILD_BRANCH }} https://github.com/galacticcouncil/HydraDX-node.git
+
+RUN --mount=type=cache,target=/cargo-home/registry \
+    --mount=type=cache,target=/cargo-home/git \
+    --mount=type=cache,target=/unique_parachain/parachain/target \
+    cd parachain && \
+    CARGO_INCREMENTAL=0 cargo build --release --locked && \
+    mkdir /unique_parachain/Hydradx && \
+    mv ./target/release/hydradx /unique_parachain/Hydradx/hydradx
+
+# ===== BIN ======
+
+FROM ubuntu:22.04 as builder-hydradx
+
+COPY --from=builder-hydradx-bin /unique_parachain/Hydradx/hydradx /bin/hydradx
+ENTRYPOINT ["/bin/hydradx"]
modified.github/workflows/xcm.ymldiffbeforeafterboth
--- a/.github/workflows/xcm.yml
+++ b/.github/workflows/xcm.yml
@@ -37,9 +37,9 @@
         id: create_matrix
         with:
           matrix: |
-            network {opal}, relay_branch {${{ env.UNIQUEWEST_MAINNET_BRANCH }}}, acala_version {${{ env.ACALA_BUILD_BRANCH }}}, moonbeam_version {${{ env.MOONBEAM_BUILD_BRANCH }}}, cumulus_version {${{ env.WESTMINT_BUILD_BRANCH }}}, astar_version {${{ env.ASTAR_BUILD_BRANCH }}}, polkadex_version {${{ env.POLKADEX_BUILD_BRANCH }}}, runtest {testXcmOpal}, runtime_features {opal-runtime}
-            network {quartz}, relay_branch {${{ env.KUSAMA_MAINNET_BRANCH }}}, acala_version {${{ env.KARURA_BUILD_BRANCH }}}, moonbeam_version {${{ env.MOONRIVER_BUILD_BRANCH }}}, cumulus_version {${{ env.STATEMINE_BUILD_BRANCH }}}, astar_version {${{ env.SHIDEN_BUILD_BRANCH }}}, polkadex_version {${{ env.POLKADEX_BUILD_BRANCH }}}, runtest {testFullXcmQuartz}, runtime_features {quartz-runtime}
-            network {unique}, relay_branch {${{ env.POLKADOT_MAINNET_BRANCH }}}, acala_version {${{ env.ACALA_BUILD_BRANCH }}}, moonbeam_version {${{ env.MOONBEAM_BUILD_BRANCH }}}, cumulus_version {${{ env.STATEMINT_BUILD_BRANCH }}}, astar_version {${{ env.ASTAR_BUILD_BRANCH }}}, polkadex_version {${{ env.POLKADEX_BUILD_BRANCH }}}, runtest {testFullXcmUnique}, runtime_features {unique-runtime}
+            network {opal}, relay_branch {${{ env.UNIQUEWEST_MAINNET_BRANCH }}}, acala_version {${{ env.ACALA_BUILD_BRANCH }}}, moonbeam_version {${{ env.MOONBEAM_BUILD_BRANCH }}}, cumulus_version {${{ env.WESTMINT_BUILD_BRANCH }}}, astar_version {${{ env.ASTAR_BUILD_BRANCH }}}, polkadex_version {${{ env.POLKADEX_BUILD_BRANCH }}}, hydradx_version {${{ env.HYDRADX_BUILD_BRANCH }}}, runtest {testXcmOpal}, runtime_features {opal-runtime}
+            network {quartz}, relay_branch {${{ env.KUSAMA_MAINNET_BRANCH }}}, acala_version {${{ env.KARURA_BUILD_BRANCH }}}, moonbeam_version {${{ env.MOONRIVER_BUILD_BRANCH }}}, cumulus_version {${{ env.STATEMINE_BUILD_BRANCH }}}, astar_version {${{ env.SHIDEN_BUILD_BRANCH }}}, polkadex_version {${{ env.POLKADEX_BUILD_BRANCH }}}, hydradx_version {${{ env.HYDRADX_BUILD_BRANCH }}}, runtest {testFullXcmQuartz}, runtime_features {quartz-runtime}
+            network {unique}, relay_branch {${{ env.POLKADOT_MAINNET_BRANCH }}}, acala_version {${{ env.ACALA_BUILD_BRANCH }}}, moonbeam_version {${{ env.MOONBEAM_BUILD_BRANCH }}}, cumulus_version {${{ env.STATEMINT_BUILD_BRANCH }}}, astar_version {${{ env.ASTAR_BUILD_BRANCH }}}, polkadex_version {${{ env.POLKADEX_BUILD_BRANCH }}}, hydradx_version {${{ env.HYDRADX_BUILD_BRANCH }}}, runtest {testFullXcmUnique}, runtime_features {unique-runtime}
 
   xcm:
     needs: prepare-execution-marix
@@ -280,6 +280,40 @@
             fi
         shell: bash
 
+      # Check Hydradx version and build it if it doesn't exist in repository
+      - name: Generate ENV related extend Dockerfile file for Hydradx
+        uses: cuchi/jinja2-action@v1.2.0
+        with:
+          template: .docker/Dockerfile-hydradx.j2
+          output_file: .docker/Dockerfile-hydradx.${{ matrix.hydradx_version }}.yml
+          variables: |
+            RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}
+            HYDRADX_BUILD_BRANCH=${{ matrix.hydradx_version }}
+
+      - name: Check if the dockerhub repository contains the needed HYDRADX version
+        run: |
+          # aquire token
+            TOKEN=$(curl -s -H "Content-Type: application/json" -X POST -d '{"username": "'${{ secrets.CORE_DOCKERHUB_USERNAME }}'", "password": "'${{ secrets.CORE_DOCKERHUB_TOKEN }}'"}' https://hub.docker.com/v2/users/login/ | jq -r .token)
+            export TOKEN=$TOKEN
+
+          # Get TAGS from DOCKERHUB repository
+            HYDRADX_TAGS=$(curl -s -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/uniquenetwork/builder-hydradx/tags/?page_size=100 | jq -r '."results"[]["name"]')
+          # Show TAGS
+            echo "HYDRADX TAGS:"
+            echo $HYDRADX_TAGS
+          # Check correct version HYDRADX and build it if it doesn't exist in HYDRADX TAGS
+            if [[ ${HYDRADX_TAGS[*]} =~ (^|[[:space:]])"${{ matrix.hydradx_version }}"($|[[:space:]]) ]]; then
+                echo "Repository has needed HYDRADX version";
+                docker pull uniquenetwork/builder-hydradx:${{ matrix.hydradx_version }}
+            else
+                echo "Repository has not needed HYDRADX version, so build it";
+                cd .docker/ && docker build --file ./Dockerfile-hydradx.${{ matrix.hydradx_version }}.yml --tag uniquenetwork/builder-hydradx:${{ matrix.hydradx_version }} .
+                echo "Push needed HYDRADX version to the repository";
+                docker push uniquenetwork/builder-hydradx:${{ matrix.hydradx_version }}
+            fi
+        shell: bash
+
+
       - name: Build unique-chain
         run: |
           docker build --file .docker/Dockerfile-unique \
@@ -318,6 +352,7 @@
             snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/cumulus':{dockerImage:'uniquenetwork/builder-cumulus:${{ matrix.cumulus_version }}'}})
             snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/astar':{dockerImage:'uniquenetwork/builder-astar:${{ matrix.astar_version }}'}})
             snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/polkadex':{dockerImage:'uniquenetwork/builder-polkadex:${{ matrix.polkadex_version }}'}})
+            snippet:(import 'baedeker-library/ops/rewrites.libsonnet').rewriteNodePaths({'bin/hydradx':{dockerImage:'uniquenetwork/builder-hydradx:${{ matrix.hydradx_version }}'}})
 
       - name: Upload network config
         uses: actions/upload-artifact@v3