Skip to content

refactor!: crates architecture #1605

refactor!: crates architecture

refactor!: crates architecture #1605

Workflow file for this run

name: Examples
on:
push:
branches:
- main
pull_request:
schedule:
- cron: "0 4 * * 0,3" # 4 a.m. UTC every Sun and Wed, keep actions-cache available
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
project-name:
[asset_storage, chess, counter, management_canister, print, profile]
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: "recursive"
- name: Cache
uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
examples/${{ matrix.project-name }}/target/
key: ${{ runner.os }}-${{ matrix.project-name }}
restore-keys: |
${{ runner.os }}-
- name: Install cargo-binstall
uses: cargo-bins/cargo-binstall@main
- name: Install ic-wasm
run: cargo binstall ic-wasm
- name: Install candid-extractor
run: cargo binstall candid-extractor
- name: Install DFX
uses: dfinity/setup-dfx@main
- name: Install bitcoin
if: ${{ matrix.project-name == 'management_canister' }}
run: |
CWD=$(pwd)
cd "$(mktemp -d)"
BITCOIN_CORE_VERSION=22.0
BITCOIN_CORE_FILENAME="bitcoin-$BITCOIN_CORE_VERSION-x86_64-linux-gnu.tar.gz"
BITCOIN_CORE_TARBALL_SHA="59ebd25dd82a51638b7a6bb914586201e67db67b919b2a1ff08925a7936d1b16"
wget -nv "https://bitcoin.org/bin/bitcoin-core-$BITCOIN_CORE_VERSION/$BITCOIN_CORE_FILENAME"
echo "$BITCOIN_CORE_TARBALL_SHA $BITCOIN_CORE_FILENAME" | shasum -c
tar xzf "$BITCOIN_CORE_FILENAME"
cd "bitcoin-$BITCOIN_CORE_VERSION/bin"
sudo install -m 0755 -o root -g root -t /usr/local/bin *
cd "$CWD"
- name: Run Tests
shell: bash
run: |
./examples/bats/bats-core/bin/bats -r examples/${{ matrix.project-name }}
env:
RUST_BACKTRACE: 1
- name: cargo fmt # no clippy because build.rs using ic-cdk-bindgen would fail
run: |
pushd examples/${{ matrix.project-name }}
cargo fmt --check
popd
aggregate:
name: examples:required
if: ${{ always() }}
needs: test
runs-on: ubuntu-latest
steps:
- name: Check step result directly
if: ${{ needs.test.result != 'success' }}
run: exit 1