-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #11 from r0gue-io/frank/ci-build-workflow
ci: add build workflow
- Loading branch information
Showing
2 changed files
with
157 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,125 @@ | ||
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/[email protected] | ||
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 | ||
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 |