Skip to content

fix fmt

fix fmt #221

name: Build and run tests
on:
push:
branches:
- main
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
branches:
- main
- "feat/**"
- "support/**"
paths:
- ".github/workflows/build-and-test.yml"
- ".github/workflows/shared-build-wasm.yml"
- ".github/actions/**"
- "**.rs"
- "**.toml"
- "bindings/**"
- "!bindings/**.md"
- "bindings/wasm/iota_interaction_ts/README.md" # the Readme contain txm tests
env:
RUST_BACKTRACE: full
CARGO_INCREMENTAL: 0 # disabled to reduce target cache size and improve sccache (https://github.com/mozilla/sccache#known-caveats)
SCCACHE_CACHE_SIZE: 2G
SCCACHE_IDLE_TIMEOUT: 0
# SCCACHE_RECACHE: 1 # uncomment to clear sccache cache, then re-comment
IOTA_VERSION: ${{github.event.schedule && (github.event.schedule == '5 0 * * *' && 'testnet' || 'devnet')}}
jobs:
check-for-run-condition:
runs-on: ubuntu-24.04
outputs:
should-run: ${{ !github.event.pull_request || github.event.pull_request.draft == false }}
steps:
- run: |
# this run step does nothing, but is needed to get the job output
check-for-modification:
needs: check-for-run-condition
if: ${{ needs.check-for-run-condition.outputs.should-run == 'true' }}
runs-on: ubuntu-24.04
outputs:
core-modified: ${{ steps.change-detection.outputs.core-modified }} # map step output to job output
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Run change detection
id: change-detection
run: |
echo comparing $(git rev-parse HEAD^) and $(git rev-parse HEAD)
#https://git-scm.com/docs/git-diff#Documentation/git-diff.txt-emgitdiffemltoptionsgt--ltpathgt82308203
if [[ $(git diff HEAD^ HEAD -- ':!bindings') != '' ]]; then
# modified
CORE_MODIFIED=true
else
# unmodified
CORE_MODIFIED=false
fi
echo CORE_MODIFIED=$CORE_MODIFIED
echo "core-modified=$CORE_MODIFIED" >> $GITHUB_OUTPUT
build-and-test:
runs-on: ${{ matrix.os }}
needs: [check-for-run-condition, check-for-modification]
if: ${{ needs.check-for-run-condition.outputs.should-run == 'true' && needs.check-for-modification.outputs.core-modified == 'true' }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-24.04, macos-latest, windows-latest]
include:
- os: ubuntu-24.04
sccache-path: /home/runner/.cache/sccache
- os: macos-latest
sccache-path: /Users/runner/Library/Caches/Mozilla.sccache
- os: windows-latest
sccache-path: C:\\Users\\runner\\AppData\\Local\\Mozilla\\sccache\\cache
env:
SCCACHE_DIR: ${{ matrix.sccache-path }}
RUSTC_WRAPPER: sccache
IOTA_SERVER_LOGFILE: >-
${{
matrix.os != 'windows-latest' &&
format(
'iota-server-logs-build-and-test-{0}-{1}-{2}-{3}.log',
matrix.os == 'ubuntu-24.04' && 'linux' || 'macos',
github.run_id,
github.run_number,
github.run_attempt
) ||
''
}}
steps:
- name: git configure long path
if: matrix.os == 'windows-latest'
run: git config --global core.longpaths true
- uses: actions/checkout@v3
- name: Ensure, OpenSSL is available in Windows
if: matrix.os == 'windows-latest'
run: |
echo "VCPKG_ROOT=$env:VCPKG_INSTALLATION_ROOT" | Out-File -FilePath $env:GITHUB_ENV -Append
vcpkg install openssl:x64-windows-static-md
- name: Setup Rust and cache
uses: "./.github/actions/rust/rust-setup"
with:
os: ${{ runner.os }}
job: ${{ github.job }}
cargo-cache-enabled: true
target-cache-enabled: true
sccache-enabled: true
sccache-path: ${{ matrix.sccache-path }}
- name: Setup sccache
uses: "./.github/actions/rust/sccache/setup-sccache"
with:
os: ${{matrix.os}}
- name: Check --no-default-features
if: matrix.os == 'ubuntu-24.04'
run: |
cargo metadata --format-version 1 | \
jq -r '.workspace_members[]' | \
awk '{print $1}' | \
xargs -I {} cargo check -p {} --no-default-features
- name: Check default features
if: matrix.os == 'ubuntu-24.04'
run: |
cargo metadata --format-version 1 | \
jq -r '.workspace_members[]' | \
awk '{print $1}' | \
xargs -I {} cargo check -p {}
# Clean debug target to avoid bloating the GitHub Actions cache.
# The previous builds cannot be re-used at all for the full --all-features --release build anyway.
- name: Clean target
if: matrix.os == 'ubuntu-24.04'
run: cargo clean
# Build the library, tests, and examples without running them to avoid recompilation in the run tests step
- name: Build with default features
run: cargo build --workspace --tests --examples --release
- name: Run tests
if: matrix.os != 'windows-latest'
run: cargo test --workspace --release -- --test-threads=1
- name: Stop sccache
uses: "./.github/actions/rust/sccache/stop-sccache"
with:
os: ${{matrix.os}}
build-wasm:
needs: check-for-run-condition
if: ${{ needs.check-for-run-condition.outputs.should-run == 'true' }}
uses: "./.github/workflows/shared-build-wasm.yml"
with:
run-unit-tests: false
output-artifact-name: iota-wasm-bindings-build