git.delta.rocks / unique-network / refs/commits / c562488d4cff

difftreelog

add astar parachain for xcm

Konstantin Astakhov2023-03-27parent: #396344d.patch.diff
in: master

7 files changed

added.docker/Dockerfile-astar.j2diffbeforeafterboth
--- /dev/null
+++ b/.docker/Dockerfile-astar.j2
@@ -0,0 +1,40 @@
+# ===== Rust builder =====
+FROM ubuntu:20.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 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 ACALA =====
+FROM rust-builder as builder-astar-bin
+
+WORKDIR /unique_parachain
+
+RUN git clone --recurse-submodules -b {{ ASTAR_BUILD_BRANCH }} --depth 1 https://github.com/AstarNetwork/Astar.git && \
+    cd Astar && \
+    cargo build --release
+
+# ===== BIN ======
+
+FROM ubuntu:20.04 as builder-astar
+
+COPY --from=builder-astar-bin /unique_parachain/Astar/target/release/astar /unique_parachain/Astar/target/release/astar
modified.docker/Dockerfile-xcm.j2diffbeforeafterboth
--- a/.docker/Dockerfile-xcm.j2
+++ b/.docker/Dockerfile-xcm.j2
@@ -57,6 +57,7 @@
 COPY --from=uniquenetwork/builder-moonbeam:{{ MOONBEAM_BUILD_BRANCH }} /unique_parachain/moonbeam/target/release/moonbeam /moonbeam/target/release/
 COPY --from=uniquenetwork/builder-cumulus:{{ CUMULUS_BUILD_BRANCH }} /unique_parachain/cumulus/target/release/polkadot-parachain /cumulus/target/release/cumulus
 COPY --from=uniquenetwork/builder-acala:{{ ACALA_BUILD_BRANCH }} /unique_parachain/Acala/target/production/acala /acala/target/release/
+COPY --from=uniquenetwork/builder-astar:{{ ASTAR_BUILD_BRANCH }} /unique_parachain/Astar/target/release/astar /astar/target/release/
 COPY --from=uniquenetwork/builder-chainql:latest /chainql/target/release/chainql /chainql/target/release/
 
 EXPOSE 9844
@@ -65,6 +66,7 @@
 EXPOSE 9946
 EXPOSE 9947
 EXPOSE 9948
+EXPOSE 9949
 
 CMD export NVM_DIR="$HOME/.nvm" PATH="$PATH:/chainql/target/release" && \
     [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
modified.docker/docker-compose.tmp-xcm-tests.j2diffbeforeafterboth
--- a/.docker/docker-compose.tmp-xcm-tests.j2
+++ b/.docker/docker-compose.tmp-xcm-tests.j2
@@ -11,6 +11,7 @@
       - 9946
       - 9947
       - 9948
+      - 9949
     ports:
       - 127.0.0.1:9844:9844
       - 127.0.0.1:9933:9933      
@@ -18,6 +19,7 @@
       - 127.0.0.1:9946:9946
       - 127.0.0.1:9947:9947
       - 127.0.0.1:9948:9948
+      - 127.0.0.1:9949:9949
     logging:
       options:
         max-size: "1m"
added.docker/xcm-config/6validators.jsonnetdiffbeforeafterboth
--- /dev/null
+++ b/.docker/xcm-config/6validators.jsonnet
@@ -0,0 +1,56 @@
+function(spec)
+  spec {
+    genesis+: {
+      runtime+: {
+        staking+: {
+          validatorCount: 6,
+          invulnerables: [
+            '5GNJqTPyNqANBkUVMN1LPPrxXnFouWXoe2wNSmmEoLctxiZY',
+            '5HpG9w8EBLe5XCrbczpwq5TSXvedjrBGCwqxK1iQ7qUsSWFc',
+            '5Ck5SLSHYac6WFt5UZRSsdJjwmpSZq85fd5TRNAdZQVzEAPT',
+            '5HKPmK9GYtE1PSLsS1qiYU9xQ9Si1NcEhdeCq9sw5bqu4ns8',
+            '5FCfAonRZgTFrTd9HREEyeJjDpT397KMzizE6T3DvebLFE7n',
+            '5CRmqmsiNFExV6VbdmPJViVxrWmkaXXvBrSX8oqBT8R9vmWk',
+          ],
+          stakers: [
+            [
+              '5GNJqTPyNqANBkUVMN1LPPrxXnFouWXoe2wNSmmEoLctxiZY',
+              '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY',
+              100000000000000,
+              'Validator',
+            ],
+            [
+              '5HpG9w8EBLe5XCrbczpwq5TSXvedjrBGCwqxK1iQ7qUsSWFc',
+              '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty',
+              100000000000000,
+              'Validator',
+            ],
+            [
+              '5Ck5SLSHYac6WFt5UZRSsdJjwmpSZq85fd5TRNAdZQVzEAPT',
+              '5FLSigC9HGRKVhB9FiEo4Y3koPsNmBmLJbpXg2mp1hXcS59Y',
+              100000000000000,
+              'Validator',
+            ],
+            [
+              '5HKPmK9GYtE1PSLsS1qiYU9xQ9Si1NcEhdeCq9sw5bqu4ns8',
+              '5DAAnrj7VHTznn2AWBemMuyBwZWs6FNFjdyVXUeYum3PTXFy',
+              100000000000000,
+              'Validator',
+            ],
+            [
+              '5FCfAonRZgTFrTd9HREEyeJjDpT397KMzizE6T3DvebLFE7n',
+              '5HGjWAeFDfFCWPsjFQdVV2Msvz2XtMktvgocEZcCj68kUMaw',
+              100000000000000,
+              'Validator',
+            ],
+            [
+              '5CRmqmsiNFExV6VbdmPJViVxrWmkaXXvBrSX8oqBT8R9vmWk',
+              '5CiPPseXPECbkjWCa6MnjNokrgYjMqmKndv2rSnekmSK2DjL',
+              100000000000000,
+              'Validator',
+            ],
+          ],
+        },
+      },
+    },
+  }
\ No newline at end of file
modified.docker/xcm-config/launch-config-xcm-quartz.j2diffbeforeafterboth
before · .docker/xcm-config/launch-config-xcm-quartz.j2
1{2    "relaychain": {3        "bin": "/polkadot/target/release/polkadot",4        "chain": "{{ RELAY_CHAIN_TYPE }}-local",5        "chainInitializer": [6                "chainql",7                "--tla-code=spec=import '${spec}'",8                "5validators.jsonnet"9            ],	10        "nodes": [11            {12                "name": "alice",13                "wsPort": 9844,14                "rpcPort": 9843,15                "port": 30444,16                "flags": [17                    "--unsafe-rpc-external",18                    "--unsafe-ws-external",19                    "-lparachain::candidate_validation=debug"20                ]21            },22            {23                "name": "bob",24                "wsPort": 9855,25                "rpcPort": 9854,26                "port": 30555,27                "flags": [28                    "--unsafe-rpc-external",29                    "--unsafe-ws-external",30                    "-lparachain::candidate_validation=debug"31                ]32            },33            {34                "name": "charlie",35                "wsPort": 9866,36                "rpcPort": 9865,37                "port": 30666,38                "flags": [39                    "--unsafe-rpc-external",40                    "--unsafe-ws-external",41                    "-lparachain::candidate_validation=debug"42                ]43            },44            {45                "name": "dave",46                "wsPort": 9877,47                "rpcPort": 9876,48                "port": 30777,49                "flags": [50                    "--unsafe-rpc-external",51                    "--unsafe-ws-external",52                    "-lparachain::candidate_validation=debug"53                ]54            },55            {56                "name": "eve",57                "wsPort": 9888,58                "rpcPort": 9887,59                "port": 30888,60                "flags": [61                    "--unsafe-rpc-external",62                    "--unsafe-ws-external",63                    "-lparachain::candidate_validation=debug"64                ]65            }6667        ],68        "genesis": {69            "runtime": {70                "runtime_genesis_config": {71                    "parachainsConfiguration": {72                        "config": {73                            "validation_upgrade_frequency": 1,74                            "validation_upgrade_delay": 175                        }76                    }77                }78            }79        }80    },81    "parachains": [82        {83            "bin": "/unique-chain/target/release/unique-collator",84            "id": "2095",85            "balance": "1000000000000000000000000",86            "nodes": [87                {88                    "port": 31200,89                    "wsPort": 9944,90                    "rpcPort": 9933,91                    "name": "alice",92                    "flags": [93                       "-lxcm=trace,parity_ws::handler=debug,jsonrpsee_core=trace,jsonrpsee-core=trace,jsonrpsee_ws_server=debug",94                       "--unsafe-rpc-external",95                       "--unsafe-ws-external"96		    ]97                }98            ]99        },100        {101            "bin": "/acala/target/release/acala",102            "id": "2000",103            "chain":  "karura-dev",104            "balance": "1000000000000000000000",105            "chainInitializer": [106                "chainql",107                "-e",108                "(import '${spec}') {id+: '-local'}"109            ],	              110            "nodes": [111                {112                    "wsPort": 9946,113                    "port": 31202,114                    "name": "alice",115                    "flags": [116                       "--unsafe-rpc-external",117                       "--unsafe-ws-external"118                     ]119                }120              ]121        },122        {123            "bin": "/moonbeam/target/release/moonbeam",124            "id": 2023,125            "balance": "1000000000000000000000",126            "chain": "moonriver-local",127            "specNamePrefix": "moonriver-local-",128            "nodes": [129                {130                    "wsPort": 9947,131                    "port": 31203,132                    "name": "alice",133                    "flags": [134                       "--unsafe-rpc-external",135                       "--unsafe-ws-external",136                        "--",137                        "--execution=wasm"138                    ]139                }140            ]141        },142        {143            "bin": "/cumulus/target/release/cumulus",144            "id": "1000",145            "chain": "statemine-local",146            "balance": "1000000000000000000000000",147            "nodes": [148                {149                    "wsPort": 9948,150                    "port": 31204,151                    "name": "alice",152                    "flags": [153                       "--unsafe-rpc-external",154                       "--unsafe-ws-external"155                    ]156                }157            ]158        }159    ],160    "simpleParachains": [],161    "hrmpChannels": [162        {163            "sender": 2095,164            "recipient": 2000,165            "maxCapacity": 8,166            "maxMessageSize": 512167        },168        {169            "sender": 2000,170            "recipient": 2095,171            "maxCapacity": 8,172            "maxMessageSize": 512173        },174        {175            "sender": 2095,176            "recipient": 2023,177            "maxCapacity": 8,178            "maxMessageSize": 512179        },180        {181            "sender": 2023,182            "recipient": 2095,183            "maxCapacity": 8,184            "maxMessageSize": 512185        },186        {187            "sender": 2095,188            "recipient": 1000,189            "maxCapacity": 8,190            "maxMessageSize": 512191        },192        {193            "sender": 1000,194            "recipient": 2095,195            "maxCapacity": 8,196            "maxMessageSize": 512197        }198    ],199    "finalization": false200}201
after · .docker/xcm-config/launch-config-xcm-quartz.j2
1{2    "relaychain": {3        "bin": "/polkadot/target/release/polkadot",4        "chain": "{{ RELAY_CHAIN_TYPE }}-local",5        "chainInitializer": [6                "chainql",7                "--tla-code=spec=import '${spec}'",8                "6validators.jsonnet"9            ],	10        "nodes": [11            {12                "name": "alice",13                "wsPort": 9844,14                "rpcPort": 9843,15                "port": 30444,16                "flags": [17                    "--unsafe-rpc-external",18                    "--unsafe-ws-external",19                    "-lparachain::candidate_validation=debug"20                ]21            },22            {23                "name": "bob",24                "wsPort": 9855,25                "rpcPort": 9854,26                "port": 30555,27                "flags": [28                    "--unsafe-rpc-external",29                    "--unsafe-ws-external",30                    "-lparachain::candidate_validation=debug"31                ]32            },33            {34                "name": "charlie",35                "wsPort": 9866,36                "rpcPort": 9865,37                "port": 30666,38                "flags": [39                    "--unsafe-rpc-external",40                    "--unsafe-ws-external",41                    "-lparachain::candidate_validation=debug"42                ]43            },44            {45                "name": "dave",46                "wsPort": 9877,47                "rpcPort": 9876,48                "port": 30777,49                "flags": [50                    "--unsafe-rpc-external",51                    "--unsafe-ws-external",52                    "-lparachain::candidate_validation=debug"53                ]54            },55            {56                "name": "eve",57                "wsPort": 9888,58                "rpcPort": 9887,59                "port": 30888,60                "flags": [61                    "--unsafe-rpc-external",62                    "--unsafe-ws-external",63                    "-lparachain::candidate_validation=debug"64                ]65            },66            {67                "name": "ferdie",68                "wsPort": 9899,69                "rpcPort": 9898,70                "port": 30999,71                "flags": [72                    "--unsafe-rpc-external",73                    "--unsafe-ws-external",74                    "-lparachain::candidate_validation=debug"75                ]76            }7778        ],79        "genesis": {80            "runtime": {81                "runtime_genesis_config": {82                    "parachainsConfiguration": {83                        "config": {84                            "validation_upgrade_frequency": 1,85                            "validation_upgrade_delay": 186                        }87                    }88                }89            }90        }91    },92    "parachains": [93        {94            "bin": "/unique-chain/target/release/unique-collator",95            "id": "2095",96            "balance": "1000000000000000000000000",97            "nodes": [98                {99                    "port": 31200,100                    "wsPort": 9944,101                    "rpcPort": 9933,102                    "name": "alice",103                    "flags": [104                       "-lxcm=trace,parity_ws::handler=debug,jsonrpsee_core=trace,jsonrpsee-core=trace,jsonrpsee_ws_server=debug",105                       "--unsafe-rpc-external",106                       "--unsafe-ws-external"107		    ]108                }109            ]110        },111        {112            "bin": "/acala/target/release/acala",113            "id": "2000",114            "chain":  "karura-dev",115            "balance": "1000000000000000000000",116            "chainInitializer": [117                "chainql",118                "-e",119                "(import '${spec}') {id+: '-local'}"120            ],	              121            "nodes": [122                {123                    "wsPort": 9946,124                    "port": 31202,125                    "name": "alice",126                    "flags": [127                       "--unsafe-rpc-external",128                       "--unsafe-ws-external"129                     ]130                }131              ]132        },133        {134            "bin": "/moonbeam/target/release/moonbeam",135            "id": 2023,136            "balance": "1000000000000000000000",137            "chain": "moonriver-local",138            "specNamePrefix": "moonriver-local-",139            "nodes": [140                {141                    "wsPort": 9947,142                    "port": 31203,143                    "name": "alice",144                    "flags": [145                       "--unsafe-rpc-external",146                       "--unsafe-ws-external",147                        "--",148                        "--execution=wasm"149                    ]150                }151            ]152        },153        {154            "bin": "/cumulus/target/release/cumulus",155            "id": "1000",156            "chain": "statemine-local",157            "balance": "1000000000000000000000000",158            "nodes": [159                {160                    "wsPort": 9948,161                    "port": 31204,162                    "name": "alice",163                    "flags": [164                       "--unsafe-rpc-external",165                       "--unsafe-ws-external"166                    ]167                }168            ]169        }170        {171            "bin": "/astar/target/release/astar",172            "id": "2007",173            "chain": "astar-dev",174            "balance": "1000000000000000000000000",175            "nodes": [176                {177                    "wsPort": 9949,178                    "port": 31205,179                    "name": "alice",180                    "flags": [181                       "--unsafe-rpc-external",182                       "--unsafe-ws-external"183                    ]184                }185            ]186        }187    ],188    "simpleParachains": [],189    "hrmpChannels": [190        {191            "sender": 2095,192            "recipient": 2000,193            "maxCapacity": 8,194            "maxMessageSize": 512195        },196        {197            "sender": 2000,198            "recipient": 2095,199            "maxCapacity": 8,200            "maxMessageSize": 512201        },202        {203            "sender": 2095,204            "recipient": 2023,205            "maxCapacity": 8,206            "maxMessageSize": 512207        },208        {209            "sender": 2023,210            "recipient": 2095,211            "maxCapacity": 8,212            "maxMessageSize": 512213        },214        {215            "sender": 2095,216            "recipient": 1000,217            "maxCapacity": 8,218            "maxMessageSize": 512219        },220        {221            "sender": 1000,222            "recipient": 2095,223            "maxCapacity": 8,224            "maxMessageSize": 512225        },226        {227            "sender": 2007,228            "recipient": 1000,229            "maxCapacity": 8,230            "maxMessageSize": 512231        },232        {233            "sender": 1000,234            "recipient": 2007,235            "maxCapacity": 8,236            "maxMessageSize": 512237        }        238    ],239    "finalization": false240}241
modified.docker/xcm-config/launch-config-xcm-unique.j2diffbeforeafterboth
--- a/.docker/xcm-config/launch-config-xcm-unique.j2
+++ b/.docker/xcm-config/launch-config-xcm-unique.j2
@@ -5,7 +5,7 @@
         "chainInitializer": [
                 "chainql",
                 "--tla-code=spec=import '${spec}'",
-                "5validators.jsonnet"
+                "6validators.jsonnet"
             ],	
         "nodes": [
             {
@@ -62,7 +62,18 @@
                     "--unsafe-ws-external",
                     "-lparachain::candidate_validation=debug"
                 ]
-            }
+            },
+            {
+                "name": "ferdie",
+                "wsPort": 9899,
+                "rpcPort": 9898,
+                "port": 30999,
+                "flags": [
+                    "--unsafe-rpc-external",
+                    "--unsafe-ws-external",
+                    "-lparachain::candidate_validation=debug"
+                ]
+            }            
 
         ],
         "genesis": {
@@ -93,7 +104,7 @@
                         "-lxcm=trace,parity_ws::handler=debug,jsonrpsee_core=trace,jsonrpsee-core=trace,jsonrpsee_ws_server=debug",
                         "--unsafe-rpc-external",
                         "--unsafe-ws-external"
-		    ]
+		            ]
                 }
             ]
         },
@@ -115,7 +126,7 @@
                     "flags": [
                         "--unsafe-rpc-external",
                         "--unsafe-ws-external"
-		    ]
+		            ]
                 }
               ]
         },
@@ -133,7 +144,7 @@
                     "flags": [
                         "--unsafe-rpc-external",
                         "--unsafe-ws-external",
-  			"--",
+  			            "--",
                         "--execution=wasm"
                     ]
                 }
@@ -152,7 +163,24 @@
                     "flags": [
                         "--unsafe-rpc-external",
                         "--unsafe-ws-external"
-		    ]
+		            ]
+                }
+            ]
+        },
+        {
+            "bin": "/astar/target/release/astar",
+            "id": "2006",
+            "chain": "astar-dev",
+            "balance": "1000000000000000000000000",
+            "nodes": [
+                {
+                    "wsPort": 9949,
+                    "port": 31205,
+                    "name": "alice",
+                    "flags": [
+                       "--unsafe-rpc-external",
+                       "--unsafe-ws-external"
+                    ]
                 }
             ]
         }
@@ -194,7 +222,19 @@
             "recipient": 2037,
             "maxCapacity": 8,
             "maxMessageSize": 512
-        }
+        },
+        {
+            "sender": 2006,
+            "recipient": 1000,
+            "maxCapacity": 8,
+            "maxMessageSize": 512
+        },
+        {
+            "sender": 1000,
+            "recipient": 2006,
+            "maxCapacity": 8,
+            "maxMessageSize": 512
+        }        
     ],
     "finalization": false
 }
modified.github/workflows/xcm.ymldiffbeforeafterboth
--- a/.github/workflows/xcm.yml
+++ b/.github/workflows/xcm.yml
@@ -41,8 +41,8 @@
         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 }}}, runtest {testXcmOpal}
-            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 }}}, runtest {testXcmQuartz}
-            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 }}}, runtest {testXcmUnique}
+            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 }}}, runtest {testXcmQuartz}
+            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 }}}, runtest {testXcmUnique}
 
   xcm-build:
     
@@ -183,7 +183,6 @@
                 docker push uniquenetwork/builder-moonbeam:${{ matrix.moonbeam_version }}
             fi
         shell: bash
-
 
       # Check CUMULUS version and build it if it doesn't exist in repository
       - name: Generate ENV related extend Dockerfile file for CUMULUS
@@ -218,6 +217,41 @@
             fi
         shell: bash
 
+
+      # Check ASTAR version and build it if it doesn't exist in repository
+      - name: Generate ENV related extend Dockerfile file for ASTAR
+        uses: cuchi/jinja2-action@v1.2.0
+        with:
+          template: .docker/Dockerfile-astar.j2
+          output_file: .docker/Dockerfile-astar.${{ matrix.astar_version }}.yml
+          variables: |
+            RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}
+            ASTAR_BUILD_BRANCH=${{ matrix.astar_version }}
+
+      - name: Check if the dockerhub repository contains the needed MOONBEAM 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
+            ASTAR_TAGS=$(curl -s -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/uniquenetwork/builder-astar/tags/?page_size=100 | jq -r '."results"[]["name"]')
+          # Show TAGS
+            echo "ASTAR TAGS:"
+            echo $ASTAR_TAGS
+          # Check correct version ASTAR and build it if it doesn't exist in ASTAR TAGS
+            if [[ ${ASTAR_TAGS[*]} =~ (^|[[:space:]])"${{ matrix.astar_version }}"($|[[:space:]]) ]]; then
+                echo "Repository has needed ASTAR version";
+                docker pull uniquenetwork/builder-astar:${{ matrix.astar_version }}
+            else
+                echo "Repository has not needed ASTAR version, so build it";
+                cd .docker/ && docker build --no-cache --file ./Dockerfile-astar.${{ matrix.astar_version }}.yml --tag uniquenetwork/builder-astar:${{ matrix.astar_version }} .
+                echo "Push needed ASTAR version to the repository";
+                docker push uniquenetwork/builder-astar:${{ matrix.astar_version }}
+            fi
+        shell: bash
+
+
       - name: Generate ENV related extend launch-config file
         uses: cuchi/jinja2-action@v1.2.0
         with: