From d7a09baa650b688e8122ee759adf59fa0c99c0b2 Mon Sep 17 00:00:00 2001 From: Przemek Rzad Date: Fri, 9 Aug 2024 18:06:31 +0200 Subject: [PATCH] Add a CI job to make sure relaychain produces blocks (#16) --- .github/actions/free-disk-space/action.yml | 16 ++++ .github/actions/macos-dependencies/action.yml | 12 +++ .../actions/ubuntu-dependencies/action.yml | 15 ++++ .github/workflows/ci.yml | 78 ++++++++----------- 4 files changed, 75 insertions(+), 46 deletions(-) create mode 100644 .github/actions/free-disk-space/action.yml create mode 100644 .github/actions/macos-dependencies/action.yml create mode 100644 .github/actions/ubuntu-dependencies/action.yml diff --git a/.github/actions/free-disk-space/action.yml b/.github/actions/free-disk-space/action.yml new file mode 100644 index 0000000..d2a9a7b --- /dev/null +++ b/.github/actions/free-disk-space/action.yml @@ -0,0 +1,16 @@ +name: Free disk space +description: We've run into out-of-disk error when compiling Rust projects, so we free up some space this way. + +runs: + using: "composite" + steps: + - name: Free Disk Space + uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # 1.3.1 + with: + android: true # This alone is a 12 GB save. + # We disable the rest because it caused some problems. (they're enabled by default) + # The Android removal is enough. + dotnet: false + haskell: false + large-packages: false + swap-storage: false diff --git a/.github/actions/macos-dependencies/action.yml b/.github/actions/macos-dependencies/action.yml new file mode 100644 index 0000000..17495a5 --- /dev/null +++ b/.github/actions/macos-dependencies/action.yml @@ -0,0 +1,12 @@ +name: Install macOS dependencies +description: Installs dependencies required to compile the template on macOS + +runs: + using: "composite" + steps: + - run: | + curl https://sh.rustup.rs -sSf -y | sh + brew install protobuf + rustup target add wasm32-unknown-unknown --toolchain stable-aarch64-apple-darwin + rustup component add rust-src --toolchain stable-aarch64-apple-darwin + shell: sh diff --git a/.github/actions/ubuntu-dependencies/action.yml b/.github/actions/ubuntu-dependencies/action.yml new file mode 100644 index 0000000..c577567 --- /dev/null +++ b/.github/actions/ubuntu-dependencies/action.yml @@ -0,0 +1,15 @@ +name: Install Ubuntu dependencies +description: Installs dependencies required to compile the template in Ubuntu + +runs: + using: "composite" + steps: + - name: Rust compilation prerequisites (Ubuntu) + if: contains(matrix.os, 'ubuntu') + run: | + sudo apt update + sudo apt install -y \ + protobuf-compiler + rustup target add wasm32-unknown-unknown + rustup component add rustfmt clippy rust-src + shell: bash diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cf6dfb2..ecbbf38 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,7 +12,7 @@ concurrency: cancel-in-progress: true jobs: - ci: + build: runs-on: ${{ matrix.os }} strategy: matrix: @@ -20,35 +20,12 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Rust compilation prerequisites (Ubuntu) - if: contains(matrix.os, 'ubuntu') - run: | - sudo apt update - sudo apt install -y \ - protobuf-compiler - rustup target add wasm32-unknown-unknown - rustup component add rustfmt clippy rust-src - - - name: Install Cargo (MacOS) - if: contains(matrix.os, 'macos') - run: | - curl https://sh.rustup.rs -sSf -y | sh - brew install protobuf - rustup target add wasm32-unknown-unknown --toolchain stable-aarch64-apple-darwin - rustup component add rust-src --toolchain stable-aarch64-apple-darwin - - # We've run into out-of-disk error when compiling Polkadot in the next step, so we free up some space this way. - - name: Free Disk Space (Ubuntu) - if: contains(matrix.os, 'ubuntu') - uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # 1.3.1 - with: - android: true # This alone is a 12 GB save. - # We disable the rest because it caused some problems. (they're enabled by default) - # The Android removal is enough. - dotnet: false - haskell: false - large-packages: false - swap-storage: false + - if: contains(matrix.os, 'ubuntu') + uses: ./.github/actions/free-disk-space + - if: contains(matrix.os, 'ubuntu') + uses: ./.github/actions/ubuntu-dependencies + - if: contains(matrix.os, 'macos') + uses: ./.github/actions/macos-dependencies - name: Build the template run: cargo build @@ -68,30 +45,39 @@ jobs: run: SKIP_WASM_BUILD=1 cargo doc --workspace --no-deps timeout-minutes: 15 - # This is mentioned as example in the README: + run-node: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest] + steps: + - uses: actions/checkout@v4 + + - if: contains(matrix.os, 'ubuntu') + uses: ./.github/actions/free-disk-space + - if: contains(matrix.os, 'ubuntu') + uses: ./.github/actions/ubuntu-dependencies + - if: contains(matrix.os, 'macos') + uses: ./.github/actions/macos-dependencies + - name: Build the node individually in release mode - run: | - # Save some space from debug builds - rm -rf ./target - cargo build --package minimal-template-node --release + run: cargo build --package minimal-template-node --release timeout-minutes: 90 + - name: Make sure the node is producing blocks + run: | + ./target/release/minimal-template-node --dev 2>&1 | tee out.txt & + until curl -s '127.0.0.1:9944'; do sleep 5; done + until cat out.txt | grep -s "Imported #2"; do sleep 5; done + shell: bash + timeout-minutes: 5 + build-docker: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - # We've run into out-of-disk error when compiling Polkadot in the next step, so we free up some space this way. - - name: Free Disk Space (Ubuntu) - uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # 1.3.1 - with: - android: true # This alone is a 12 GB save. - # We disable the rest because it caused some problems. (they're enabled by default) - # The Android removal is enough. - dotnet: false - haskell: false - large-packages: false - swap-storage: false + - uses: ./.github/actions/free-disk-space - name: Build the Dockerfile run: docker build . -t polkadot-sdk-minimal-template