diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..039e8965 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,65 @@ +name: build-on-self-hosted-runner +on: + workflow_dispatch: + push: + branches: + - main + paths-ignore: + - "**.md" + pull_request: + branches: + - main + paths-ignore: + - "**.md" +env: + CARGO_TERM_COLOR: always + GCP_ZONE: europe-west3-a + +jobs: + create-runner: + runs-on: ubuntu-latest + outputs: + label: ${{ steps.create-runner.outputs.label }} + steps: + - id: create-runner + uses: related-sciences/gce-github-runner@v0.10 + with: + token: ${{ secrets.GH_SA_TOKEN }} + project_id: ${{ secrets.GCP_PROJECT_ID }} + service_account_key: ${{ secrets.GCP_SA_KEY }} + image_project: ubuntu-os-cloud + image_family: ubuntu-2004-lts + machine_type: e2-highcpu-32 + disk_size: 100 + machine_zone: ${{ env.GCP_ZONE }} + ephemeral: true + + test-features: + needs: create-runner + runs-on: ${{ needs.create-runner.outputs.label }} + steps: + - uses: actions/checkout@v4 + + - name: Set HOME + run: echo "HOME=/home/ubuntu" >> ${GITHUB_ENV} + + - name: Install minimal nightly Rust + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: nightly-2023-05-22 + target: wasm32-unknown-unknown + override: true + components: rustfmt, clippy + + - name: Install Dependencies + run: sudo apt install protobuf-compiler clang build-essential -y + + - name: 🫠 rustfmt 🫠 + uses: actions-rs/cargo@v1 + with: + command: fmt + args: --check + + - name: Run tests with benchmarks + run: cargo test --features runtime-benchmarks \ No newline at end of file diff --git a/.github/workflows/collator_actions.yml b/.github/workflows/collator_actions.yml index 89415aed..360c9879 100644 --- a/.github/workflows/collator_actions.yml +++ b/.github/workflows/collator_actions.yml @@ -1,74 +1,74 @@ -name: rust -on: - workflow_dispatch: - push: - branches: - - main - paths-ignore: - - "**.md" - pull_request: - branches: - - main - paths-ignore: - - "**.md" - - env: - CARGO_TERM_COLOR: always - -jobs: - build-imbue-collator: - runs-on: ubuntu-latest - steps: - - name: Checkout sources - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Install minimal nightly Rust - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: nightly-2023-05-22 - target: wasm32-unknown-unknown - override: true - - - name: Update submodules - run: git submodule update --recursive --remote - - - name: Clean unused directories - 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: Install Protobuf - run: sudo apt install protobuf-compiler - - - name: Run tests with benchmarks - run: cargo test --features runtime-benchmarks - clippy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Install Protobuf - run: sudo apt install protobuf-compiler - - name: Install minimal nightly Rust - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: nightly-2023-05-22 - target: wasm32-unknown-unknown - override: true - - name: Install clippy - run: rustup component add clippy - - name: Ensure executable - run: chmod +x ./ci/jobs/clippy.sh - - name: Run clippy - run: ./ci/jobs/clippy.sh - rustfmt: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Install rustfmt - run: rustup component add rustfmt - - name: Ensure executable - run: chmod +x ./ci/jobs/rustfmt.sh - - name: Run rustfmt - run: ./ci/jobs/rustfmt.sh \ No newline at end of file +#name: rust +#on: +# workflow_dispatch: +# push: +# branches: +# - main +# paths-ignore: +# - "**.md" +# pull_request: +# branches: +# - main +# paths-ignore: +# - "**.md" +# +# env: +# CARGO_TERM_COLOR: always +# +#jobs: +# build-imbue-collator: +# runs-on: ubuntu-latest +# steps: +# - name: Checkout sources +# uses: actions/checkout@v4 +# with: +# submodules: recursive +# +# - name: Install minimal nightly Rust +# uses: actions-rs/toolchain@v1 +# with: +# profile: minimal +# toolchain: nightly-2023-05-22 +# target: wasm32-unknown-unknown +# override: true +# +# - name: Update submodules +# run: git submodule update --recursive --remote +# +# - name: Clean unused directories +# 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: Install Protobuf +# run: sudo apt install protobuf-compiler +# +# - name: Run tests with benchmarks +# run: cargo test --features runtime-benchmarks +# clippy: +# runs-on: ubuntu-latest +# steps: +# - uses: actions/checkout@v4 +# - name: Install Protobuf +# run: sudo apt install protobuf-compiler +# - name: Install minimal nightly Rust +# uses: actions-rs/toolchain@v1 +# with: +# profile: minimal +# toolchain: nightly-2023-05-22 +# target: wasm32-unknown-unknown +# override: true +# - name: Install clippy +# run: rustup component add clippy +# - name: Ensure executable +# run: chmod +x ./ci/jobs/clippy.sh +# - name: Run clippy +# run: ./ci/jobs/clippy.sh +# rustfmt: +# runs-on: ubuntu-latest +# steps: +# - uses: actions/checkout@v4 +# - name: Install rustfmt +# run: rustup component add rustfmt +# - name: Ensure executable +# run: chmod +x ./ci/jobs/rustfmt.sh +# - name: Run rustfmt +# run: ./ci/jobs/rustfmt.sh \ No newline at end of file diff --git a/Cargo.toml b/Cargo.toml index d095aad3..736b52bb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,7 @@ [profile.release] panic = 'unwind' split-debuginfo = "unpacked" +opt-level = 3 [workspace.package] authors = ["imbue "] @@ -24,3 +25,13 @@ members = [ "runtime/imbue-kusama", "runtime/common", ] + +# make sure dev builds with backtrace do +# not slow us down +[profile.dev.package.backtrace] +inherits = "release" + +[profile.production] +inherits = "release" +lto = true +codegen-units = 1 \ No newline at end of file diff --git a/ci/jobs/clippy.sh b/ci/jobs/clippy.sh old mode 100644 new mode 100755 diff --git a/ci/jobs/install_rust.sh b/ci/jobs/install_rust.sh new file mode 100755 index 00000000..f868801d --- /dev/null +++ b/ci/jobs/install_rust.sh @@ -0,0 +1,11 @@ +#!/bin/bash +set -euo pipefail +sudo apt -y install build-essential +sudo apt -y install --assume-yes git clang curl libssl-dev +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y +source $HOME/.cargo/env +rustup update +rustup toolchain install nightly-2023-05-22 +rustup target add wasm32-unknown-unknown --toolchain nightly-2023-05-22 +rustup component add rustfmt +rustup component add clippy diff --git a/ci/jobs/rustfmt.sh b/ci/jobs/rustfmt.sh old mode 100644 new mode 100755