--- a/.docker/Dockerfile-chain-dev +++ b/.docker/Dockerfile-chain-dev @@ -10,8 +10,7 @@ RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain none -ARG RUST_TOOLCHAIN=nightly-2022-05-11 -ARG POLKA_VERSION=release-v0.9.24 +ARG RUST_TOOLCHAIN= ARG BRANCH= ARG REPO_URL= ARG FEATURE= --- a/.docker/Dockerfile-parachain +++ b/.docker/Dockerfile-parachain @@ -2,35 +2,38 @@ FROM ubuntu:20.04 as rust-builder LABEL maintainer="Unique.Network" -ARG RUST_TOOLCHAIN=nightly-2022-05-11 +ARG RUST_TOOLCHAIN= ENV RUST_TOOLCHAIN $RUST_TOOLCHAIN 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 install -y cmake pkg-config libssl-dev git clang && \ + apt-get install -y curl cmake pkg-config libssl-dev git clang && \ 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 ====== FROM rust-builder as builder-unique ARG PROFILE=release ARG FEATURE= +ARG REPO_URL= +ARG BRANCH= RUN mkdir /unique_parachain WORKDIR /unique_parachain @@ -38,16 +41,17 @@ RUN git clone $REPO_URL -b $BRANCH RUN cargo build $FEATURE --$PROFILE + # ===== BUILD POLKADOT ===== FROM rust-builder as builder-polkadot -ARG POLKA_VERSION=release-v0.9.24 -ENV POLKA_VERSION $POLKA_VERSION +ARG POLKADOT_BUILD_BRANCH= +ENV POLKADOT_BUILD_BRANCH $POLKADOT_BUILD_BRANCH RUN mkdir /unique_parachain WORKDIR /unique_parachain -RUN git clone -b $POLKA_VERSION --depth 1 https://github.com/paritytech/polkadot.git && \ +RUN git clone -b $POLKADOT_BUILD_BRANCH --depth 1 https://github.com/paritytech/polkadot.git && \ cd polkadot && \ cargo build --release @@ -56,7 +60,6 @@ FROM ubuntu:20.04 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" && \ --- /dev/null +++ b/.docker/docker-compose-master.yaml @@ -0,0 +1,19 @@ +version: "3.5" + +services: + blockchain_nodes: + build: + context: ../ + dockerfile: .docker/Dockerfile-parachain + image: blockchain_nodes + container_name: blockchain_nodes + expose: + - 9944 + - 9933 + ports: + - 127.0.0.1:9944:9944 + - 127.0.0.1:9933:9933 + logging: + options: + max-size: "1m" + max-file: "3" --- /dev/null +++ b/.docker/docker-compose.tmp-master.j2 @@ -0,0 +1,11 @@ +version: "3.5" + +services: + blockchain_nodes: + build: + args: + - "RUST_TOOLCHAIN={{ RUST_TOOLCHAIN }}" + - "BRANCH={{ BRANCH }}" + - "REPO_URL={{ REPO_URL }}" + - "FEATURE={{ FEATURE }}" + - "POLKADOT_BUILD_BRANCH={{ POLKADOT_BUILD_BRANCH }}" --- a/.docker/docker-compose.tmp.j2 +++ b/.docker/docker-compose.tmp.j2 @@ -8,6 +8,6 @@ - "BRANCH={{ BRANCH }}" - "REPO_URL={{ REPO_URL }}" - "FEATURE={{ FEATURE }}" - - "POLKA_VERSION={{ POLKA_VERSION }}" + - "POLKADOT_BUILD_BRANCH={{ POLKADOT_BUILD_BRANCH }}" - command: cargo run --release $FEATURE -- --dev -linfo --unsafe-ws-external --rpc-cors=all --unsafe-rpc-external + command: cargo run --release {{ FEATURE }} -- --dev -linfo --unsafe-ws-external --rpc-cors=all --unsafe-rpc-external --- /dev/null +++ b/.github/workflows/build-test-master.yml @@ -0,0 +1,122 @@ +name: MASTER - Build & Test + +# Controls when the action will run. +on: + # Triggers the workflow on push or pull request events but only for the master branch + pull_request: + branches: + - master + types: + - opened + - reopened + - synchronize #commit(s) pushed to the pull request + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +#Define Workflow variables +env: + 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: + + build: + # The type of runner that the job will run on + runs-on: self-hosted-ci + + + name: Build Container, Spin it Up an test + + 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: + - name: Skip if pull request is in Draft + # `if: github.event.pull_request.draft == true` should be kept here, at + # the step level, rather than at the job level. The latter is not + # recommended because when the PR is moved from "Draft" to "Ready to + # review" the workflow will immediately be passing (since it was skipped), + # even though it hasn't actually ran, since it takes a few seconds for + # the workflow to start. This is also disclosed in: + # https://github.community/t/dont-run-actions-on-draft-pull-requests/16817/17 + # That scenario would open an opportunity for the check to be bypassed: + # 1. Get your PR approved + # 2. Move it to Draft + # 3. Push whatever commits you want + # 4. Move it to "Ready for review"; now the workflow is passing (it was + # skipped) and "Check reviews" is also passing (it won't be updated + # until the workflow is finished) + if: github.event.pull_request.draft == true + run: exit 1 + + - name: Clean Workspace + uses: AutoModality/action-clean@v1.1.0 + + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v3 + with: + ref: ${{ github.head_ref }} + + - name: Read .env file + uses: xom9ikk/dotenv@v1.0.2 + + - name: Generate ENV related extend file for docker-compose + uses: cuchi/jinja2-action@v1.2.0 + with: + template: .docker/docker-compose.tmp-master.j2 + output_file: .docker/docker-compose.${{ matrix.network }}.yml + variables: | + REPO_URL=${{ github.server_url }}/${{ github.repository }}.git + RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} + POLKADOT_BUILD_BRANCH=${{ env.POLKADOT_BUILD_BRANCH }} + FEATURE=${{ matrix.features }} + BRANCH=${{ github.head_ref }} + + - name: Show build configuration + run: cat .docker/docker-compose.${{ matrix.network }}.yml + + - name: Build the stack + run: docker-compose -f ".docker/docker-compose-master.yml" -f ".docker/docker-compose.${{ matrix.network }}.yml" up -d --build + + - uses: actions/setup-node@v3 + with: + node-version: 16 + + - name: Run tests + run: | + cd tests + yarn install + yarn add mochawesome + echo "Ready to start tests" + node scripts/readyness.js + 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 + 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: Read output variables + run: | + echo "url is ${{ steps.test-report.outputs.runHtmlUrl }}" + + - name: Stop running containers + if: always() # run this step always + run: docker-compose -f ".docker/docker-compose-master.yml" -f ".docker/docker-compose.${{ matrix.network }}.yml" down --- a/.github/workflows/node_build_test.yml +++ b/.github/workflows/node_build_test.yml @@ -16,10 +16,9 @@ #Define Workflow variables env: - RUST_TOOLCHAIN: nightly-2022-05-11 REPO_URL: ${{ github.server_url }}/${{ github.repository }} - POLKA_VERSION: release-v0.9.24 + # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: build: @@ -34,7 +33,7 @@ matrix: include: - network: "Opal" - features: "--features=opal-runtime" + features: " " - network: "Quartz" features: "--features=quartz-runtime" - network: "Unique" @@ -59,11 +58,17 @@ if: github.event.pull_request.draft == true run: exit 1 + - name: Clean Workspace + uses: AutoModality/action-clean@v1.1.0 + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v3 with: ref: ${{ github.head_ref }} #Checking out head commit + - name: Read .env file + uses: xom9ikk/dotenv@v1.0.2 + - name: Generate ENV related extend file for docker-compose uses: cuchi/jinja2-action@v1.2.0 with: @@ -72,8 +77,8 @@ variables: | REPO_URL=${{ github.server_url }}/${{ github.repository }}.git RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} - POLKA_VERSION=${{ env.POLKA_VERSION }} - FEATURE='${{ matrix.features }}' + POLKADOT_BUILD_BRANCH=${{ env.POLKADOT_BUILD_BRANCH }} + FEATURE=${{ matrix.features }} BRANCH=${{ github.head_ref }} - name: Show build configuration @@ -99,6 +104,7 @@ - name: Test Report uses: phoenix-actions/test-reporting@v8 + id: test-report 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