diff --git a/.github/actions/init/action.yml b/.github/actions/init/action.yml new file mode 100644 index 000000000..69bb346b5 --- /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 8219df840..000000000 --- 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 7b48c688d..000000000 --- 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 000000000..a903681aa --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,81 @@ +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 + + 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@v3 + + - uses: "./.github/actions/init" + + - name: Run tests + run: cargo test --release --locked --verbose --all + + - name: Check try-runtime build + run: cargo check --release --features=try-runtime + + 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 --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/codecov.yml b/codecov.yml new file mode 100644 index 000000000..3fae8c499 --- /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