difftreelog
add ci for hydradx
in: master
3 files changed
.baedeker/xcm-unique.jsonnetdiffbeforeafterboth1local2m = 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}.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"]
.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