From 9e02a64830a87b49c6f64387d6dfff441ce85f55 Mon Sep 17 00:00:00 2001 From: Yaroslav Bolyukin Date: Fri, 05 May 2023 08:40:07 +0000 Subject: [PATCH] Merge pull request #931 from UniqueNetwork/ci/chainql-to-dot-env chainql in env file --- --- /dev/null +++ b/.docker/Dockerfile-chainql.j2 @@ -0,0 +1,40 @@ +# ===== 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 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 CHAINQL ===== +FROM rust-builder as builder-chainql-bin + +RUN mkdir chainql +WORKDIR /chainql + +RUN git clone -b {{ CHAINQL }} --depth 1 https://github.com/UniqueNetwork/chainql.git . && \ + cargo build --release + +# ===== RUN ====== + +FROM ubuntu:22.04 as builder-chainql + +COPY --from=builder-chainql-bin /chainql/target/release/chainql /chainql/target/release/chainql --- a/.docker/Dockerfile-parachain-upgrade-data.j2 +++ b/.docker/Dockerfile-parachain-upgrade-data.j2 @@ -66,7 +66,7 @@ COPY --from=builder-unique-target /unique_parachain/.docker/forkless-config/fork.jsonnet /polkadot-launch/fork.jsonnet COPY --from=builder-unique-target /unique_parachain/.docker/forkless-config/typeNames.jsonnet /polkadot-launch/typeNames.jsonnet -COPY --from=uniquenetwork/builder-chainql:latest /chainql/target/release/chainql /chainql/target/release/ +COPY --from=uniquenetwork/builder-chainql:{{ CHAINQL }} /chainql/target/release/chainql /chainql/target/release/ COPY --from=polkadot /unique_parachain/polkadot/target/release/polkadot /polkadot/target/release/ COPY --from=polkadot /unique_parachain/polkadot/target/release/wbuild/westend-runtime/westend_runtime.compact.compressed.wasm /polkadot/target/release/wbuild/westend-runtime/westend_runtime.compact.compressed.wasm --- a/.docker/Dockerfile-xcm.j2 +++ b/.docker/Dockerfile-xcm.j2 @@ -60,7 +60,7 @@ 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/ +COPY --from=uniquenetwork/builder-chainql:{{ CHAINQL }} /chainql/target/release/chainql /chainql/target/release/ EXPOSE 9844 EXPOSE 9933 --- a/.env +++ b/.env @@ -1,6 +1,7 @@ RUST_TOOLCHAIN=nightly-2022-11-15 POLKADOT_LAUNCH_BRANCH=unique-network RELAY_CHAIN_TYPE=westend +CHAINQL=v0.3.1 POLKADOT_MAINNET_BRANCH=release-v0.9.37 STATEMINT_BUILD_BRANCH=release-parachains-v9370 --- a/.github/workflows/forkless-update-data.yml +++ b/.github/workflows/forkless-update-data.yml @@ -83,6 +83,7 @@ POLKADOT_BUILD_BRANCH=${{ matrix.relay_branch }} POLKADOT_LAUNCH_BRANCH=${{ env.POLKADOT_LAUNCH_BRANCH }} REPLICA_FROM=${{ matrix.replica_from_address }} + CHAINQL=${{ env.CHAINQL }} - name: Show build configuration run: cat .docker/Dockerfile-parachain-upgrade-data.${{ matrix.network }}.yml --- a/.github/workflows/xcm.yml +++ b/.github/workflows/xcm.yml @@ -251,9 +251,43 @@ fi shell: bash - - name: Pull chainql docker image - run: docker pull uniquenetwork/builder-chainql:latest + # Check CHAINQL version and build it if it doesn't exist in repository + - name: Generate ENV related extend Dockerfile file for CHAINQL + uses: cuchi/jinja2-action@v1.2.0 + with: + template: .docker/Dockerfile-chainql.j2 + output_file: .docker/Dockerfile-chainql.${{ env.CHAINQL }}.yml + variables: | + RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} + CHAINQL=${{ env.CHAINQL }} + + - name: Check if the dockerhub repository contains the needed CHAINQL 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 + CHAINQL_TAGS=$(curl -s -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/uniquenetwork/builder-chainql/tags/?page_size=100 | jq -r '."results"[]["name"]') + # Show TAGS + echo "CHAINQL TAGS:" + echo $CHAINQL_TAGS + # Check correct version CHAINQL and build it if it doesn't exist in CHAINQL TAGS + if [[ ${CHAINQL_TAGS[*]} =~ (^|[[:space:]])"${{ env.CHAINQL }}"($|[[:space:]]) ]]; then + echo "Repository has needed CHAINQL version"; + docker pull uniquenetwork/builder-chainql:${{ env.CHAINQL }} + else + echo "Repository has not needed CHAINQL version, so build it"; + cd .docker/ && docker build --no-cache --file ./Dockerfile-chainql.${{ env.CHAINQL }}.yml --tag uniquenetwork/builder-chainql:${{ env.CHAINQL }} . + echo "Push needed CHAINQL version to the repository"; + docker push uniquenetwork/builder-chainql:${{ env.CHAINQL }} + fi + shell: bash + + # - name: Pull chainql docker image + # run: docker pull uniquenetwork/builder-chainql:${{ env.CHAINQL }} + - name: Generate ENV related extend launch-config file uses: cuchi/jinja2-action@v1.2.0 with: @@ -281,6 +315,7 @@ ASTAR_BUILD_BRANCH=${{ matrix.astar_version }} MOONBEAM_BUILD_BRANCH=${{ matrix.moonbeam_version }} CUMULUS_BUILD_BRANCH=${{ matrix.cumulus_version }} + CHAINQL=${{ env.CHAINQL }} - name: Show build Dockerfile run: cat .docker/Dockerfile-xcm.${{ matrix.network }}.yml -- gitstuff