From 4325de7f3960a80568e650d0fd51c8aa8090d655 Mon Sep 17 00:00:00 2001
From: cgeek <cem.moreau@gmail.com>
Date: Sat, 4 Jan 2025 15:10:12 +0100
Subject: [PATCH] fix(#278): update client specs when producing a new client

---
 .gitlab-ci.yml | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0f4f3f7b8..ff1d2eb14 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -436,9 +436,17 @@ build_raw_specs:
     - export FEATURES="--features $RUNTIME --no-default-features"
     - echo "FEATURES = $FEATURES"
     - apt-get update
-    - apt-get install -y clang cmake protobuf-compiler
+    - apt-get install -y clang cmake protobuf-compiler jq
     # Print chainspec to file
-    - cargo xtask print-spec $NETWORK_RELEASE > ${RUNTIME}.json
+    - cargo xtask print-spec $NETWORK_RELEASE > ${RUNTIME}-printed.json
+    # Merge client specs into chainspec file (to update bootnodes for example)
+    # 1. Download yq to create a json client spec file
+    - wget https://github.com/mikefarah/yq/releases/download/v4.44.6/yq_linux_arm64 -O yq
+    - chmod +x ./yq
+    # 2. YML -> JSON for the client specs
+    - cat node/specs/${RUNTIME}_client-specs.yaml | ./yq --output-format json > node/specs/${RUNTIME}_client-specs.json
+    # 3. Merge the client spec file into chainspec file and create the final spec file (e.g. gdev.json)
+    - jq -s '.[0] * .[1]' node/specs/${RUNTIME}_client-specs.json ${RUNTIME}-printed.json > ${RUNTIME}.json
     # Produce raw spec file
     - mkdir -p $CI_PROJECT_DIR/release
     - cargo run -Zgit=shallow-deps ${FEATURES} -- build-spec --chain=${RUNTIME}.json --disable-default-bootnode --raw > $RELEASE_FILE_RAW_SPEC
-- 
GitLab