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

difftreelog

Merge pull request #2 from lzadjsf/ci-build-workflow-v3

Alex2022-08-01parents: #2232fc1 #80975a9.patch.diff
in: master
Re-created branch with changes related to STEP1 task.

10 files changed

added.docker/Dockerfile-chain-devdiffbeforeafterboth
--- /dev/null
+++ b/.docker/Dockerfile-chain-dev
@@ -0,0 +1,35 @@
+FROM ubuntu:20.04
+
+ENV DEBIAN_FRONTEND=noninteractive
+ENV TZ=Etc/UTC
+
+RUN apt-get update && apt-get install -y git curl libssl-dev llvm pkg-config libclang-dev clang git make cmake
+
+ENV CARGO_HOME="/cargo-home"
+ENV PATH="/cargo-home/bin:$PATH"
+
+RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain none
+
+ARG RUST_TOOLCHAIN=nightly-2022-04-07
+ARG BRANCH=develop
+ARG REPO_URL=https://github.com/UniqueNetwork/unique-chain.git
+ARG FEATURE=
+
+RUN rustup toolchain uninstall $(rustup toolchain list) && \
+    rustup toolchain install $RUST_TOOLCHAIN && \
+    rustup default $RUST_TOOLCHAIN && \
+    rustup target add wasm32-unknown-unknown --toolchain $RUST_TOOLCHAIN
+
+RUN mkdir /dev_chain && git clone $REPO_URL /dev_chain && cd /dev_chain && git checkout $BRANCH
+WORKDIR /dev_chain
+
+RUN cargo build --release
+
+EXPOSE 9844
+EXPOSE 9944
+EXPOSE 9933
+EXPOSE 9833
+EXPOSE 40333
+EXPOSE 30333
+
+CMD cargo run --release $FEATURE -- --dev -linfo --unsafe-ws-external --rpc-cors=all --unsafe-rpc-external
added.docker/Dockerfile-parachaindiffbeforeafterboth
--- /dev/null
+++ b/.docker/Dockerfile-parachain
@@ -0,0 +1,114 @@
+# ===== Rust builder =====
+FROM phusion/baseimage:focal-1.1.0 as rust-builder
+LABEL maintainer="Unique.Network"
+
+ARG RUST_TOOLCHAIN=nightly-2022-05-11
+#ARG RUST_C=1.62.0-nightly
+ARG POLKA_VERSION=release-v0.9.24
+ARG UNIQUE_BRANCH=develop
+
+#ARG USER=***
+#ARG PASS=***
+
+
+ENV RUST_TOOLCHAIN $RUST_TOOLCHAIN
+#ENV RUST_C $RUST_C
+ENV POLKA_VERSION $POLKA_VERSION
+ENV UNIQUE_BRANCH $UNIQUE_BRANCH
+
+
+#RUN echo $RUST_TOOLCHAIN
+#RUN echo $RUST_C
+#RUN echo $POLKA_VERSION
+#RUN echo $UNIQUE_BRANCH
+
+ENV CARGO_HOME="/cargo-home"
+ENV PATH="/cargo-home/bin:$PATH"
+
+RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain none
+
+RUN apt-get update && \
+    apt-get dist-upgrade -y -o Dpkg::Options::="--force-confold" && \
+    apt-get install -y cmake pkg-config libssl-dev git clang
+
+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 cargo install cargo-chef
+
+RUN mkdir unique_parachain
+WORKDIR /unique_parachain
+
+# ===== Chef =====
+FROM rust-builder as chef
+
+COPY . .
+RUN cargo chef prepare --recipe-path recipe.json
+
+# ===== BUILD ======
+FROM rust-builder as builder
+
+RUN mkdir unique_parachain
+WORKDIR /unique_parachain
+
+COPY --from=chef /unique_parachain/recipe.json recipe.json
+ARG PROFILE=release
+RUN cargo chef cook "--$PROFILE" --recipe-path recipe.json
+
+COPY . .
+RUN cargo build "--$PROFILE"
+   # && \
+   # cargo test
+
+# ===== BUILD POLKADOT =====
+FROM rust-builder as builder-polkadot
+
+RUN mkdir unique_parachain
+WORKDIR /unique_parachain
+
+RUN git clone -b $POLKA_VERSION --depth 1 https://github.com/paritytech/polkadot.git && \
+    cd polkadot && \
+    git tag -n && \
+	cargo build --release
+
+# ===== RUN ======
+
+FROM phusion/baseimage:focal-1.1.0
+
+ARG PROFILE=release
+
+RUN apt-get -y update && \
+      apt-get -y upgrade && \
+      apt-get -y install curl git && \
+      curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash && \
+      export NVM_DIR="$HOME/.nvm" && \
+      [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
+      nvm install v15.5.0 && \
+      nvm use v15.5.0
+
+RUN git clone https://github.com/paritytech/polkadot-launch
+
+RUN export NVM_DIR="$HOME/.nvm" && \
+    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
+    cd /polkadot-launch && \
+    npm install --global yarn && \
+    yarn
+
+COPY --from=builder /unique_parachain/target/$PROFILE/unique-collator /unique-chain/target/$PROFILE/
+COPY --from=builder-polkadot /unique_parachain/polkadot/target/$PROFILE/polkadot /polkadot/target/$PROFILE/
+
+EXPOSE 9844
+EXPOSE 9944
+EXPOSE 9933
+EXPOSE 9833
+EXPOSE 40333
+EXPOSE 30333
+
+CMD export NVM_DIR="$HOME/.nvm" && \
+    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
+    cd /polkadot-launch && \
+    yarn start launch-config.json
added.docker/Dockerfile-parachain-v2diffbeforeafterboth
--- /dev/null
+++ b/.docker/Dockerfile-parachain-v2
@@ -0,0 +1,96 @@
+# ===== Rust builder =====
+FROM phusion/baseimage:focal-1.1.0 as rust-builder
+LABEL maintainer="Unique.Network"
+
+ARG RUST_TOOLCHAIN={{ actual_toolchain }}
+ARG POLKA_VERSION=release-v0.9.24
+
+
+ENV RUST_TOOLCHAIN $RUST_TOOLCHAIN
+ENV POLKA_VERSION $POLKA_VERSION
+
+ENV CARGO_HOME="/cargo-home"
+ENV PATH="/cargo-home/bin:$PATH"
+
+RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain none
+
+RUN apt-get update && \
+    apt-get dist-upgrade -y -o Dpkg::Options::="--force-confold" && \
+    apt-get install -y cmake pkg-config libssl-dev git clang
+
+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
+
+####works inside repo folder###
+
+
+# ===== BUILD ======
+FROM rust-builder as builder-unique
+
+RUN mkdir unique_parachain
+WORKDIR /unique_parachain
+
+ARG PROFILE='features=quartz-runtime --release'
+
+COPY . .
+RUN cargo build --features=quartz-runtime --release
+   # && \
+   # cargo test
+
+# ===== BUILD POLKADOT =====
+FROM rust-builder as builder-polkadot
+
+RUN mkdir unique_parachain
+WORKDIR /unique_parachain
+
+RUN git clone -b $POLKA_VERSION --depth 1 https://github.com/paritytech/polkadot.git && \
+    cd polkadot && \
+    git tag -n && \
+	cargo build --release
+
+# ===== RUN ======
+
+FROM phusion/baseimage:focal-1.1.0
+
+#ARG PROFILE='--features=quartz-runtime --release'
+
+RUN apt-get -y update && \
+      apt-get -y upgrade && \
+      apt-get -y install curl git && \
+      curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash && \
+      export NVM_DIR="$HOME/.nvm" && \
+      [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
+      nvm install v15.5.0 && \
+      nvm use v15.5.0
+
+RUN git clone https://github.com/UniqueNetwork/polkadot-launch.git && \
+    cd ./polkadot-launch && \
+    git checkout feature/runtime-upgrade-testing
+
+RUN export NVM_DIR="$HOME/.nvm" && \
+    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
+    cd /polkadot-launch && \
+    npm install --global yarn && \
+    yarn
+
+COPY --from=builder-unique /unique_parachain/target/release/unique-collator /unique-chain/target/release/
+COPY --from=builder-polkadot /unique_parachain/polkadot/target/release/polkadot /polkadot/target/release/
+
+COPY ["./launch-config.json", "/polkadot-launch/launch-config.json"]
+
+
+EXPOSE 9844
+EXPOSE 9944
+EXPOSE 9933
+EXPOSE 9833
+EXPOSE 40333
+EXPOSE 30333
+
+CMD export NVM_DIR="$HOME/.nvm" && \
+    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
+    cd /polkadot-launch && \
+    yarn start launch-config.json
added.docker/docker-compose-dev.yamldiffbeforeafterboth
--- /dev/null
+++ b/.docker/docker-compose-dev.yaml
@@ -0,0 +1,19 @@
+version: "3.5"
+
+services:
+  node-o:
+    build:
+      context: .
+      dockerfile: Dockerfile-chain-dev
+    image: node-o
+    container_name: node-o
+    expose:
+      - 9944
+      - 9933
+    ports:
+      - 127.0.0.1:9944:9944
+      - 127.0.0.1:9933:9933
+    logging:
+      options:
+        max-size: "1m"
+        max-file: "3"
added.docker/docker-compose-tests-parachain.ymldiffbeforeafterboth

no changes

added.docker/docker-compose.tmp.j2diffbeforeafterboth
--- /dev/null
+++ b/.docker/docker-compose.tmp.j2
@@ -0,0 +1,13 @@
+version: "3.5"
+
+services:
+  node-o:
+    build:
+      args:
+        - "RUST_TOOLCHAIN={{ RUST_TOOLCHAIN }}"
+        - "BRANCH={{ BRANCH }}"
+        - "REPO_URL={{ REPO_URL }}"
+        - "FEATURE={{ FEATURE }}"
+
+    command: cargo run --release $FEATURE -- --dev -linfo --unsafe-ws-external --rpc-cors=all --unsafe-rpc-external
+    
modified.github/workflows/codestyle.ymldiffbeforeafterboth
--- a/.github/workflows/codestyle.yml
+++ b/.github/workflows/codestyle.yml
@@ -1,10 +1,16 @@
 name: Code style
 
-on: [push]
+on:
+  pull_request:
+    branches:
+      - develop
+    types:
+      - opened
+      - edited
 
 jobs:
   rustfmt:
-    runs-on: ubuntu-20.04
+    runs-on: self-hosted-ci
 
     steps:
       - uses: actions/checkout@v1
@@ -20,7 +26,7 @@
 
   clippy:
     if: ${{ false }}
-    runs-on: ubuntu-20.04
+    runs-on: self-hosted-ci
 
     steps:
       - uses: actions/checkout@v1
modified.github/workflows/node_build_test.ymldiffbeforeafterboth
--- a/.github/workflows/node_build_test.yml
+++ b/.github/workflows/node_build_test.yml
@@ -1,44 +1,128 @@
 name: Build & test
 
-# Controls when the action will run. 
+# Controls when the action will run.
 on:
  # Triggers the workflow on push or pull request events but only for the master branch
-  push:
-    branches: [ develop ]
- # pull_request:
+  #push:
+  #  branches: [ develop ]
+  pull_request:
+    branches:
+      - develop
+    types:
+      - opened
+      - edited
+      - reopened
+  # pull_request:
  #   branches: [ develop ]
   # Allows you to run this workflow manually from the Actions tab
   workflow_dispatch:
 
+#Define Workflow variables
+env:
+  ubuntu_version: focal
+  chains_release_dir: /opt/runner/chains_release
+  opal_chain_workdir: ./src_opal_chain
+  quartz_chain_workdir: ./src_quartz_chain
+  unique_chain_workdir: ./src_unique_chain
+  src_repo_url: https://github.com/lzadjsf/unique-chain.git
+  RUST_TOOLCHAIN: nightly-2022-05-11
+  REPO_URL: ${{ github.server_url }}/${{ github.repository }}
+
 # A workflow run is made up of one or more jobs that can run sequentially or in parallel
 jobs:
+  pre-requisites:
+    # The type of runner that the job will run on
+    runs-on: self-hosted-ci
+
+    steps:
+      #runs ssh connection
+      - name: Install dependencies
+        run: |
+          sudo apt-get install git curl libssl-dev llvm pkg-config libclang-dev clang make cmake
+          sudo apt autoremove
+          curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain none
+          . $HOME/.cargo/env && cargo install --locked --git https://github.com/chevdor/subwasm
+          rustup toolchain install ${{ env.RUST_TOOLCHAIN }}
+          rustup default ${{ env.RUST_TOOLCHAIN }}
+          rustup target add wasm32-unknown-unknown --toolchain ${{ env.RUST_TOOLCHAIN }}
+
+
   build:
     # The type of runner that the job will run on
-    runs-on: ubuntu-20.04
+    runs-on: self-hosted-ci
+
+    needs: pre-requisites
+    name: Build Container, Spin it Up an test
 
-  #  if: github.event_name == 'pull_request' && github.event.action == 'closed' && github.event.pull_request.merged == true
+    continue-on-error: true         #Do not stop testing of matrix runs failed.
+
+    strategy:
+      matrix:
+        include:
+          - network: "Opal"
+            features: " "
+          - network: "Quartz"
+            features: "--features=quartz-runtime"
+          - network: "Unique"
+            features: "--features=unique-runtime"
 
-    # Steps represent a sequence of tasks that will be executed as part of the job
     steps:
       # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
-      - uses: actions/checkout@v2
-          
-     #runs ssh connection
-      - name: Go to server
-        uses: appleboy/ssh-action@master
+      - uses: actions/checkout@v3
+
+      - name: Generate ENV related extend file for docker-compose
+        uses: cuchi/jinja2-action@v1.2.0
+        with:
+          template: .docker/docker-compose.tmp.j2
+          output_file: .docker/docker-compose.${{ matrix.network }}.yml
+          variables: |
+            REPO_URL=${{ github.server_url }}/${{ github.repository }}.git
+            RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }}
+            FEATURE=${{ matrix.features }}
+            BRANCH=${{ github.head_ref }}
+
+      - name: Show temporary file
+        run: cat .docker/docker-compose.${{ matrix.network }}.yml
+
+      - name: Build the stack
+        run: docker-compose -f ".docker/docker-compose-dev.yaml" -f ".docker/docker-compose.${{ matrix.network }}.yml" up -d --build
+
+#      - name: "Build the Docker image with Feature: ${{ env.features }}"
+#        run: docker build -t build-${{ github.head_ref }} --file .docker/Dockerfile-chain-dev --build-arg REPO_URL=${{ github.server_url }}/${{ github.repository }}.git --build-arg RUST_TOOLCHAIN=${{ env.actual_toolchain }} --build-arg FEATURE="${{ env.features }}" --build-arg BRANCH=${{ github.head_ref }} --no-cache .
+
+      - name: Wait
+        run: sleep 420s
+
+      - name: Install node
+        uses: actions/setup-node@v1
         with:
-          host: ${{ secrets.SERVER_IP }}
-          username: ${{ secrets.SERVER_USERNAME }}
-          key: ${{ secrets.KEY }}
-          port: ${{ secrets.SERVER_PORT }}
-          command_timeout: 300m
-          script: |
-            eval $(ssh-agent -s)
-            ssh-add /home/devops/.ssh/git_hub
-            git clone git@github.com:UniqueNetwork/unique-chain.git
-            cd unique-chain
-            git checkout develop
-            # git pull --all
-            chmod +x ci_node.sh
-            ./ci_node.sh
-            rm -rf /home/polkadot/unique-chain
+          node-version: 14.x
+
+      - name: Install dependencies
+        run: |
+          cd tests
+          yarn install
+          yarn add mochawesome
+          yarn --pure-lockfile
+
+      - name: Run tests
+        run: |
+          cd tests
+          ./scripts/ci-check-docker-state.sh
+          NOW=$(date +%s) && yarn test --reporter mochawesome --reporter-options reportFilename=test-${NOW}
+        env:
+          RPC_URL: http://127.0.0.1:9933/
+
+      - name: Test Report
+        uses: phoenix-actions/test-reporting@v8
+        id: test-report               # Set ID reference for step
+        if: success() || failure()    # run this step even if previous step failed
+        with:
+          name: Tests ${{ matrix.network }}            # Name of the check run which will be created
+          path: tests/mochawesome-report/test-*.json    # Path to test results
+          reporter: mochawesome-json
+          fail-on-error: 'false'
+
+      - name: Stop running containers
+        if: always()                   # run this step always
+        run: docker-compose -f ".docker/docker-compose-dev.yaml" -f ".docker/docker-compose.${{ matrix.network }}.yml" down
modified.github/workflows/notify.ymldiffbeforeafterboth
--- a/.github/workflows/notify.yml
+++ b/.github/workflows/notify.yml
@@ -1,13 +1,17 @@
 name: telegram message
 on:
-  push:
-    branches: [ develop ]  
+  pull_request:
+    branches:
+      - develop
+    types:
+      - opened
+      - edited
 jobs:
-  build:    
-    runs-on: ubuntu-latest    
-    steps:        
+  build:
+    runs-on: self-hosted-ci
+    steps:
     - uses: avkviring/telegram-github-action@v0.0.13
       env:
-        telegram_to: ${{ secrets.TELEGRAM_TO }}  
+        telegram_to: ${{ secrets.TELEGRAM_TO }}
         telegram_token: ${{ secrets.TELEGRAM_TOKEN }}
         event: ${{ toJson(github.event) }}
modified.github/workflows/tests_codestyle.ymldiffbeforeafterboth
--- a/.github/workflows/tests_codestyle.yml
+++ b/.github/workflows/tests_codestyle.yml
@@ -1,14 +1,19 @@
 name: Tests code style
 
-on: [push]
-
+on:
+  pull_request:
+    branches:
+      - develop
+    types:
+      - opened
+      - edited
 jobs:
   build:
-    runs-on: ubuntu-20.04
+    runs-on: self-hosted-ci
 
     steps:
     - uses: actions/checkout@v2
     - name: Install modules
       run: cd tests && yarn
     - name: Run ESLint
-      run: cd tests && yarn eslint --ext .ts,.js src/
\ No newline at end of file
+      run: cd tests && yarn eslint --ext .ts,.js src/