diff --git a/.github/actions/init/action.yml b/.github/actions/init/action.yml new file mode 100644 index 00000000..69bb346b --- /dev/null +++ b/.github/actions/init/action.yml @@ -0,0 +1,27 @@ +name: Initialize +description: This action initializes a runner for use in other actions. +inputs: + cache-key: + description: "The key to be used for the cache" + +runs: + using: "composite" + steps: + - name: Setup Ubuntu dependencies + shell: bash + run: sudo apt update && sudo apt install -y protobuf-compiler + + - name: Free up space on runner + shell: bash + run: | + sudo rm -rf /usr/share/dotnet + sudo rm -rf /opt/ghc + sudo rm -rf "/usr/local/share/boost" + sudo rm -rf "$AGENT_TOOLSDIRECTORY" + + - name: Rust Cache + uses: Swatinem/rust-cache@v2.7.3 + with: + cache-on-failure: true + cache-all-crates: true + key: ${{ inputs.cache-key }} \ No newline at end of file diff --git a/.github/templates/setup-worker/action.yaml b/.github/templates/setup-worker/action.yaml deleted file mode 100644 index 8219df84..00000000 --- a/.github/templates/setup-worker/action.yaml +++ /dev/null @@ -1,32 +0,0 @@ -name: setup-worker -description: | - This action sets up a worker for use in other actions. It installs the - necessary dependencies for building the project. - -inputs: - rust-components: - description: Comma-separated list of components to be additionally installed for a new rust toolchain - required: false - -runs: - using: "composite" - - steps: - - name: Setup Ubuntu dependencies - shell: bash - run: sudo apt update && sudo apt install -y git clang curl libssl-dev llvm libudev-dev cmake protobuf-compiler - - - name: Free up space on runner - shell: bash - run: | - sudo rm -rf /usr/share/dotnet - sudo rm -rf /opt/ghc - sudo rm -rf "/usr/local/share/boost" - sudo rm -rf "$AGENT_TOOLSDIRECTORY" - - - name: Rust Setup - shell: bash - run: | - rustup toolchain install stable --profile minimal --component rustfmt clippy - rustup default stable - rustup target add wasm32-unknown-unknown \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 7b48c688..00000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,127 +0,0 @@ -name: Build, test and lint - -on: - push: - branches: [ main ] - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - -jobs: - lint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Setup worker - uses: "./.github/templates/setup-worker" - with: - rust-components: rustfmt - - - name: Check formatting - run: cargo +stable fmt --all -- --check - - check: - needs: lint - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Setup worker - uses: "./.github/templates/setup-worker" - - - name: Cache Build artefacts - uses: actions/cache@v3 - with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - target/ - key: ${{ runner.os }}-cargo-release-${{ hashFiles('**/Cargo.lock') }} - restore-keys: ${{ runner.os }}-cargo-release - - - name: Rust Cache - uses: Swatinem/rust-cache@v2.5.0 - with: - cache-on-failure: true - cache-all-crates: true - - - name: Check Build - run: | - cargo check --release --locked --features=runtime-benchmarks - - clippy: - needs: lint - runs-on: ubuntu-latest - permissions: - checks: write - env: - SKIP_WASM_BUILD: 1 - steps: - - name: Free up space on runner - run: | - sudo rm -rf /usr/share/dotnet - sudo rm -rf /opt/ghc - sudo rm -rf "/usr/local/share/boost" - sudo rm -rf "$AGENT_TOOLSDIRECTORY" - - - uses: actions/checkout@v3 - - - name: Setup worker - uses: "./.github/templates/setup-worker" - - - name: Cache Build artefacts - uses: actions/cache@v3 - with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - target/ - key: ${{ runner.os }}-cargo-clippy-${{ hashFiles('**/Cargo.lock') }} - restore-keys: ${{ runner.os }}-cargo-clippy - - - name: Annotate with Clippy warnings - uses: actions-rs/clippy-check@v1 - with: - token: ${{ secrets.GITHUB_TOKEN }} - args: --release --locked --features=runtime-benchmarks - - test: - needs: lint - runs-on: ubuntu-latest - steps: - # Tests with benchmarks require a lot of disk space - - name: Free Disk Space (Ubuntu) - uses: jlumbroso/free-disk-space@main - with: - android: true - dotnet: true - haskell: true - large-packages: false - swap-storage: false - - - uses: actions/checkout@v3 - - - name: Setup worker - uses: "./.github/templates/setup-worker" - - - name: Cache Build artefacts - uses: actions/cache@v3 - with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - target/ - key: ${{ runner.os }}-cargo-debug-${{ hashFiles('**/Cargo.lock') }} - restore-keys: ${{ runner.os }}-cargo-debug - - - name: Run tests - run: cargo test --release --locked --verbose --all - - - name: Check try-runtime build - run: cargo check --release --features=try-runtime diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..a56a6bfb --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,89 @@ +name: ci + +on: + push: + branches: [ main ] + pull_request: + types: [ opened, synchronize, reopened, ready_for_review ] + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Check formatting + run: cargo +stable fmt --all -- --check + + check: + needs: lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: "./.github/actions/init" + + - name: Check Build + run: | + cargo check --release --locked --features=runtime-benchmarks,try-runtime + + clippy: + needs: lint + runs-on: ubuntu-latest + permissions: + checks: write + env: + SKIP_WASM_BUILD: 1 + steps: + - uses: actions/checkout@v4 + + - uses: "./.github/actions/init" + + - name: Annotate with Clippy warnings + uses: actions-rs/clippy-check@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + args: --release --locked --features=runtime-benchmarks + + test: + needs: lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: "./.github/actions/init" + + - name: Run tests + run: cargo test --release --locked --workspace --features=runtime-benchmarks --exclude integration-tests + + integration-tests: + needs: lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: "./.github/actions/init" + + - name: Run integration tests + run: cargo test --release --locked --package integration-tests + + coverage: + needs: lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: "./.github/actions/init" + + - name: Install cargo-llvm-cov + uses: taiki-e/install-action@cargo-llvm-cov + + - name: Generate code coverage + run: cargo llvm-cov --all-features --workspace --exclude integration-tests --lib --bins --codecov --output-path codecov.json + + - name: Upload to codecov.io + uses: codecov/codecov-action@v4 + with: + token: ${{ secrets.CODECOV_TOKEN }} + files: codecov.json + fail_ci_if_error: true \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 4179ad37..9b0a66f2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10609,13 +10609,14 @@ dependencies = [ [[package]] name = "rococo-runtime" -version = "8.0.0" +version = "8.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d089e93be2b8b76dd0d4b794a6a995ca3a1d6cb0ea3dd1cd42462f048bcfc926" +checksum = "cfa4cc054efdd3bfbec965da01b1ae16475031308c109c173347717091f6e3a5" dependencies = [ "binary-merkle-tree", "frame-benchmarking", "frame-executive", + "frame-metadata-hash-extension", "frame-support", "frame-system", "frame-system-benchmarking", diff --git a/codecov.yml b/codecov.yml new file mode 100644 index 00000000..3fae8c49 --- /dev/null +++ b/codecov.yml @@ -0,0 +1,14 @@ +# https://docs.codecov.com/docs/common-recipe-list +coverage: + status: + project: + default: + target: auto + threshold: 0% +comment: + layout: " diff, flags, files" + behavior: default + require_changes: false + require_base: false + require_head: true + hide_project_coverage: false \ No newline at end of file