Skip to content

Examples

Examples #1646

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
env:
ic-wasm-version: 0.4.0
jobs:
build-candid-extractor:
runs-on: ubuntu-24.04
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Cache
uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-candid-extractor-${{ hashFiles('Cargo.lock', 'rust-toolchain.toml') }}
restore-keys: |
${{ runner.os }}-candid-extractor-
${{ runner.os }}-
- name: Build candid-extractor
run: cargo build -p candid-extractor --release
- uses: actions/upload-artifact@v4
with:
name: candid-extractor
path: target/release/candid-extractor
test:
runs-on: ubuntu-24.04
needs: build-candid-extractor
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 }}-${{ hashFiles('Cargo.lock', 'rust-toolchain.toml') }}
restore-keys: |
${{ runner.os }}-${{ matrix.project-name }}-
${{ runner.os }}-
- name: Install ic-wasm
# might already in cache
run: |
wget https://github.com/dfinity/ic-wasm/releases/download/${{env.ic-wasm-version }}/ic-wasm-linux64
chmod 755 ic-wasm-linux64
mv ic-wasm-linux64 /usr/local/bin/ic-wasm
- name: Download candid-extractor
uses: actions/download-artifact@v4
with:
name: candid-extractor
- name: Install candid-extractor
run: |
chmod 755 candid-extractor
mv candid-extractor /usr/local/bin/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-24.04
steps:
- name: Check step result directly
if: ${{ needs.test.result != 'success' }}
run: exit 1