Skip to content

feat: m of n scripting poc #13242

feat: m of n scripting poc

feat: m of n scripting poc #13242

Workflow file for this run

---
name: CI
'on':
workflow_dispatch:
push:
branches:
- "ci-*"
pull_request:
types:
- opened
- reopened
- synchronize
merge_group:
env:
toolchain: nightly-2024-03-01
CARGO_HTTP_MULTIPLEXING: false
CARGO_TERM_COLOR: always
CARGO_UNSTABLE_SPARSE_REGISTRY: true
CARGO_INCREMENTAL: 0
PROTOC: protoc
TERM: unknown
## Must be a JSon string
TS_FEATURES: '["default","safe","grpc","ledger","libtor","metrics","miner_input"]'
concurrency:
# https://docs.github.com/en/actions/examples/using-concurrency-expressions-and-a-test-matrix
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
cancel-in-progress: ${{ !startsWith(github.ref, 'refs/tags/v') || github.ref != 'refs/heads/development' || github.ref != 'refs/heads/nextnet' || github.ref != 'refs/heads/stagenet' }}
jobs:
clippy:
name: clippy
runs-on: [ubuntu-20.04]
steps:
- name: checkout
uses: actions/checkout@v4
- name: toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.toolchain }}
components: clippy, rustfmt
- name: ubuntu dependencies
run: |
sudo apt-get update
sudo bash scripts/install_ubuntu_dependencies.sh
- name: Cache cargo files and outputs
if: startsWith(runner.environment,'github-hosted')
uses: Swatinem/rust-cache@v2
- name: caching (nightly)
if: startsWith(runner.environment,'self-hosted')
# Don't use rust-cache.
# Rust-cache disables a key feature of actions/cache: restoreKeys.
# Without restore keys, we lose the ability to get partial matches on caches, and end
# up with too many cache misses.
# Use a "small" suffix to use the build caches where possible, but build caches won't use this
uses: actions/cache@v4
with:
path: |
~/.cargo/registry/index
~/.cargo/registry/cache
~/.cargo/registry/CACHEDIR.TAG
~/.cargo/git
target
key: tari-${{ runner.os }}-${{ runner.cpu-model }}-${{ env.toolchain }}-nightly-${{ hashFiles('**/Cargo.lock') }}-small
restore-keys: |
tari-${{ runner.os }}-${{ runner.cpu-model }}-${{ env.toolchain }}-nightly-${{ hashFiles('**/Cargo.lock') }}-small
tari-${{ runner.os }}-${{ runner.cpu-model }}-${{ env.toolchain }}-nightly-${{ hashFiles('**/Cargo.lock') }}
tari-${{ runner.os }}-${{ runner.cpu-model }}-${{ env.toolchain }}-nightly
- name: cargo format
run: cargo fmt --all -- --check
- name: Install cargo-lints
run: cargo install cargo-lints
- name: Clippy check (with lints)
run: cargo lints clippy --all-targets --all-features
machete:
# Checks for unused dependencies.
name: machete
runs-on: [ubuntu-20.04]
steps:
- name: checkout
uses: actions/checkout@v4
- name: toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.toolchain }}
components: clippy, rustfmt
- name: ubuntu dependencies
run: |
sudo apt-get update
sudo bash scripts/install_ubuntu_dependencies.sh
- name: Cache cargo files and outputs
if: startsWith(runner.environment,'github-hosted')
uses: Swatinem/rust-cache@v2
- name: caching (machete)
if: startsWith(runner.environment,'self-hosted')
# Don't use rust-cache.
# Rust-cache disables a key feature of actions/cache: restoreKeys.
# Without restore keys, we lose the ability to get partial matches on caches, and end
# up with too many cache misses.
uses: actions/cache@v4
with:
path: |
~/.cargo/registry/index
~/.cargo/registry/cache
~/.cargo/registry/CACHEDIR.TAG
~/.cargo/git
target
key: tari-${{ runner.os }}-${{ runner.cpu-model }}-${{ env.toolchain }}-nightly-${{ hashFiles('**/Cargo.lock') }}-small
restore-keys: |
tari-${{ runner.os }}-${{ runner.cpu-model }}-${{ env.toolchain }}-nightly-${{ hashFiles('**/Cargo.lock') }}-small
tari-${{ runner.os }}-${{ runner.cpu-model }}-${{ env.toolchain }}-nightly-${{ hashFiles('**/Cargo.lock') }}
tari-${{ runner.os }}-${{ runner.cpu-model }}-${{ env.toolchain }}-nightly
- name: cargo machete
run: |
cargo install cargo-machete
cargo machete
build-stable:
# Runs cargo check with stable toolchain to determine whether the codebase is likely to build
# on stable Rust.
name: cargo check with stable
runs-on: [self-hosted, ubuntu-high-cpu]
steps:
- name: checkout
uses: actions/checkout@v4
- name: Cache cargo files and outputs
if: startsWith(runner.environment,'github-hosted')
uses: Swatinem/rust-cache@v2
- name: caching (stable)
if: startsWith(runner.environment,'self-hosted')
# Don't use rust-cache.
# Rust-cache disables a key feature of actions/cache: restoreKeys.
# Without restore keys, we lose the ability to get partial matches on caches, and end
# up with too many cache misses.
# This job runs on self-hosted, so use local-cache instead.
uses: maxnowack/local-cache@v2
with:
path: |
~/.cargo/registry/index
~/.cargo/registry/cache
~/.cargo/registry/CACHEDIR.TAG
~/.cargo/git
target
key: tari-${{ runner.os }}-${{ runner.cpu-model }}-${{ env.toolchain }}-stable-${{ hashFiles('**/Cargo.lock') }}-small
restore-keys: |
tari-${{ runner.os }}-${{ runner.cpu-model }}-${{ env.toolchain }}-stable-${{ hashFiles('**/Cargo.lock') }}-small
tari-${{ runner.os }}-${{ runner.cpu-model }}-${{ env.toolchain }}-stable-${{ hashFiles('**/Cargo.lock') }}
tari-${{ runner.os }}-${{ runner.cpu-model }}-${{ env.toolchain }}-stable
tari-${{ runner.os }}-${{ runner.cpu-model }}-${{ env.toolchain }}
- name: rust-toolchain.toml override by removing
run: rm -f rust-toolchain.toml
- name: toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- name: ubuntu dependencies
run: |
sudo apt-get update
sudo bash scripts/install_ubuntu_dependencies.sh
- name: rustup show
run: rustup show
- name: cargo check
run: cargo check --release --all-targets --workspace --exclude tari_integration_tests --locked
- name: cargo check individual features
shell: bash
run: |
FEATURES_ARRAY=( $(echo ${TS_FEATURES} | jq --raw-output '.[]' | awk '{ print $1 }') )
for FEATURE_TEST in "${FEATURES_ARRAY[@]}"; do
echo "Testing for feature ${FEATURE_TEST} ..."
cargo check --release --all-targets \
--features ${FEATURE_TEST} \
--workspace --exclude tari_integration_tests --locked
done
- name: cargo check wallet ffi separately
run: cargo check --release --package minotari_wallet_ffi --locked
- name: cargo check chat ffi separately
run: cargo check --release --package minotari_chat_ffi --locked
licenses:
name: file licenses
runs-on: [ubuntu-20.04]
steps:
- name: checkout
uses: actions/checkout@v4
- name: install ripgrep
run: |
#wget https://github.com/BurntSushi/ripgrep/releases/download/14.1.0/ripgrep_14.1.0-1_amd64.deb.sha256
wget https://github.com/BurntSushi/ripgrep/releases/download/14.1.0/ripgrep_14.1.0-1_amd64.deb
sudo dpkg -i ripgrep_14.1.0-1_amd64.deb
rg --version || exit 1
- name: run the license check
run: ./scripts/file_license_check.sh
test:
name: test
runs-on: [self-hosted, ubuntu-high-cpu]
permissions:
checks: write
pull-requests: write
strategy:
matrix:
tari_target_network: [
{ target: "testnet", network: "esmeralda" },
{ target: "nextnet", network: "nextnet" },
{ target: "mainnet", network: "stagenet" },
]
env:
TARI_TARGET_NETWORK: ${{ matrix.tari_target_network.target }}
TARI_NETWORK: ${{ matrix.tari_target_network.network }}
RUST_LOG: debug
steps:
- name: checkout
uses: actions/checkout@v4
- name: toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.toolchain }}
- name: ubuntu dependencies
run: |
sudo apt-get update
sudo bash scripts/install_ubuntu_dependencies.sh
- name: Cache cargo files and outputs
if: startsWith(runner.environment,'github-hosted')
uses: Swatinem/rust-cache@v2
- name: caching (nightly)
if: startsWith(runner.environment,'self-hosted')
# Don't use rust-cache.
# Rust-cache disables a key feature of actions/cache: restoreKeys.
# Without restore keys, we lose the ability to get partial matches on caches, and end
# up with too many cache misses.
# This job runs on self-hosted, so use local-cache instead.
uses: maxnowack/local-cache@v2
with:
path: |
~/.cargo/registry/index
~/.cargo/registry/cache
~/.cargo/registry/CACHEDIR.TAG
~/.cargo/git
target
key: tari-${{ runner.os }}-${{ runner.cpu-model }}-${{ env.toolchain }}-nightly-${{ hashFiles('**/Cargo.lock') }}-${{ matrix.tari_target_network.target }}
restore-keys: |
tari-${{ runner.os }}-${{ runner.cpu-model }}-${{ env.toolchain }}-nightly-${{ hashFiles('**/Cargo.lock') }}-${{ matrix.tari_target_network.network }}
tari-${{ runner.os }}-${{ runner.cpu-model }}-${{ env.toolchain }}-nightly-${{ hashFiles('**/Cargo.lock') }}
tari-${{ runner.os }}-${{ runner.cpu-model }}-${{ env.toolchain }}-nightly
- name: Install cargo-nextest
run: cargo install cargo-nextest --locked --force
- name: cargo test compile
run: cargo test -vv --no-run --locked --all-features --release
- name: cargo test
run: cargo nextest run --all-features --release -E "not package(tari_integration_tests)" --profile ci
- name: upload artifact
uses: actions/upload-artifact@v4 # upload test results as artifact
if: always()
with:
name: test-results-${{ matrix.tari_target_network.target }}.${{ matrix.tari_target_network.network }}
path: ${{ github.workspace }}/target/nextest/ci/junit.xml
# Allows other workflows to know the PR number
artifacts:
name: pr_2_artifact
runs-on: [ubuntu-latest]
steps:
- name: Save the PR number in an artifact
shell: bash
env:
PR_NUM: ${{ github.event.number }}
run: echo $PR_NUM > pr_num.txt
- name: Upload the PR number
uses: actions/upload-artifact@v4
with:
name: pr_num
path: ./pr_num.txt
# needed for test results
event_file:
name: "Upload Event File for Test Results"
runs-on: [ubuntu-latest]
steps:
- name: Upload
uses: actions/upload-artifact@v4
with:
name: Event File
path: ${{ github.event_path }}