-
Notifications
You must be signed in to change notification settings - Fork 3
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 #46 from n0-computer/ci-win-android-cross
chore/fix: add CI for more platforms and targets, fix build error on 32bit systems
- Loading branch information
Showing
8 changed files
with
268 additions
and
27 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 |
---|---|---|
|
@@ -8,15 +8,256 @@ on: | |
|
||
env: | ||
CARGO_TERM_COLOR: always | ||
RUST_BACKTRACE: 1 | ||
RUSTFLAGS: -Dwarnings | ||
RUSTDOCFLAGS: -Dwarnings | ||
MSRV: "1.76" | ||
|
||
jobs: | ||
build: | ||
build_and_test_nix: | ||
timeout-minutes: 30 | ||
name: "Build and test" | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
os: [ubuntu-latest, macOS-latest] | ||
rust: [stable] | ||
# once feature flags are used more, enable testing with all combinations | ||
# features: [all, none, default] | ||
features: [none, default] | ||
runs-on: ${{ matrix.os }} | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Install ${{ matrix.rust }} rust | ||
uses: dtolnay/rust-toolchain@master | ||
with: | ||
toolchain: ${{ matrix.rust }} | ||
|
||
- name: Install cargo-nextest | ||
uses: taiki-e/install-action@v2 | ||
with: | ||
tool: nextest | ||
|
||
- name: Select features | ||
run: | | ||
case "${{ matrix.features }}" in | ||
all) | ||
echo "FEATURES=--all-features" >> "$GITHUB_ENV" | ||
;; | ||
none) | ||
echo "FEATURES=--no-default-features" >> "$GITHUB_ENV" | ||
;; | ||
default) | ||
echo "FEATURES=" >> "$GITHUB_ENV" | ||
;; | ||
*) | ||
exit 1 | ||
esac | ||
- name: build tests | ||
run: | | ||
cargo nextest run --workspace --exclude willow-fuzz ${{ env.FEATURES }} --lib --bins --tests --no-run | ||
- name: run tests | ||
run: | | ||
cargo nextest run --workspace --exclude willow-fuzz ${{ env.FEATURES }} --lib --bins --tests --no-fail-fast | ||
env: | ||
RUST_LOG: ${{ runner.debug && 'TRACE' || 'DEBUG'}} | ||
|
||
- name: run doctests | ||
if: ${{ matrix.features == 'all' }} | ||
env: | ||
RUST_LOG: ${{ runner.debug && 'TRACE' || 'DEBUG'}} | ||
run: | | ||
cargo test --workspace --exclude willow-fuzz --all-features --doc | ||
build_and_test_windows: | ||
timeout-minutes: 30 | ||
name: "Build and test (Windows)" | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
os: [windows-latest] | ||
rust: [stable] | ||
# once feature flags are used more, enable testing with all combinations | ||
# features: [all, none, default] | ||
features: [default, none] | ||
target: | ||
- x86_64-pc-windows-msvc | ||
runs-on: ${{ matrix.os }} | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
with: | ||
ref: ${{ inputs.git-ref }} | ||
|
||
- name: Install ${{ matrix.rust }} | ||
run: | | ||
rustup toolchain install ${{ matrix.rust }} | ||
rustup toolchain default ${{ matrix.rust }} | ||
rustup target add ${{ matrix.target }} | ||
rustup set default-host ${{ matrix.target }} | ||
- name: Install cargo-nextest | ||
shell: powershell | ||
run: | | ||
$tmp = New-TemporaryFile | Rename-Item -NewName { $_ -replace 'tmp$', 'zip' } -PassThru | ||
Invoke-WebRequest -OutFile $tmp https://get.nexte.st/latest/windows | ||
$outputDir = if ($Env:CARGO_HOME) { Join-Path $Env:CARGO_HOME "bin" } else { "~/.cargo/bin" } | ||
$tmp | Expand-Archive -DestinationPath $outputDir -Force | ||
$tmp | Remove-Item | ||
- name: Select features | ||
run: | | ||
switch ("${{ matrix.features }}") { | ||
"all" { | ||
echo "FEATURES=--all-features" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append | ||
} | ||
"none" { | ||
echo "FEATURES=--no-default-features" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append | ||
} | ||
"default" { | ||
echo "FEATURES=" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append | ||
} | ||
default { | ||
Exit 1 | ||
} | ||
} | ||
- uses: msys2/setup-msys2@v2 | ||
|
||
- name: build tests | ||
run: | | ||
cargo nextest run --workspace --exclude willow-fuzz ${{ env.FEATURES }} --lib --bins --tests --target ${{ matrix.target }} --no-run | ||
- name: run tests | ||
run: | | ||
cargo nextest run --workspace --exclude willow-fuzz ${{ env.FEATURES }} --lib --bins --tests --target ${{ matrix.target }} --no-fail-fast | ||
env: | ||
RUST_LOG: ${{ runner.debug && 'TRACE' || 'DEBUG'}} | ||
|
||
- name: run doctests | ||
if: ${{ matrix.features == 'all' }} | ||
env: | ||
RUST_LOG: ${{ runner.debug && 'TRACE' || 'DEBUG'}} | ||
run: | | ||
cargo test --workspace --exclude willow-fuzz --all-features --doc | ||
cross_build_and_test: | ||
name: Build and test (cross) | ||
timeout-minutes: 30 | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
target: | ||
- i686-unknown-linux-gnu | ||
- aarch64-unknown-linux-gnu | ||
# note that there are known bugs in arm cross-compile qemu runners | ||
# if issues appear we might have to disable these | ||
# - see https://github.com/cross-rs/cross/issues/1311 | ||
- armv7-linux-androideabi@23 | ||
- aarch64-linux-android@23 | ||
include: | ||
- target: i686-unknown-linux-gnu | ||
name: Linux 32bit | ||
- target: aarch64-unknown-linux-gnu | ||
name: Linux aarch64 | ||
- target: armv7-linux-androideabi@23 | ||
name: Android armv7 | ||
- target: aarch64-linux-android@23 | ||
name: Android aarch64 | ||
|
||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Install Rust | ||
run: rustup update stable | ||
- name: Install cross-compilation tools | ||
uses: taiki-e/setup-cross-toolchain-action@v1 | ||
with: | ||
target: ${{ matrix.target }} | ||
- name: Cleanup Docker | ||
continue-on-error: true | ||
run: | | ||
docker kill $(docker ps -q) | ||
# setup-cross-toolchain-action sets the `CARGO_BUILD_TARGET` environment variable, | ||
# so there is no need for an explicit `--target` flag. | ||
- name: Build tests | ||
run: cargo build --workspace --exclude willow-fuzz | ||
- name: Run tests | ||
run: cargo test --verbose --workspace --exclude willow-fuzz | ||
|
||
fuzz_tests: | ||
timeout-minutes: 30 | ||
name: "Run fuzz tests" | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
os: [ubuntu-latest] | ||
rust: [nightly] | ||
runs-on: ${{ matrix.os }} | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Install ${{ matrix.rust }} rust | ||
uses: dtolnay/rust-toolchain@master | ||
with: | ||
toolchain: ${{ matrix.rust }} | ||
|
||
- name: build and run fuzz tests | ||
run: | | ||
cargo test -p willow-fuzz | ||
check_fmt: | ||
timeout-minutes: 30 | ||
name: Chec fmt | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
|
||
- uses: dtolnay/rust-toolchain@stable | ||
with: | ||
components: rustfmt | ||
|
||
- name: fmt | ||
run: cargo fmt --all -- --check | ||
|
||
check_docs: | ||
timeout-minutes: 30 | ||
name: Check docs | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Build | ||
run: cargo build --verbose | ||
- name: Run tests | ||
run: cargo test --verbose | ||
- uses: dtolnay/rust-toolchain@master | ||
with: | ||
toolchain: nightly-2024-05-02 | ||
- name: Install sccache | ||
uses: mozilla-actions/[email protected] | ||
|
||
- name: Docs | ||
run: cargo doc --workspace --all-features --no-deps --document-private-items | ||
env: | ||
RUSTDOCFLAGS: --cfg docsrs | ||
|
||
clippy_check: | ||
name: Check clippy | ||
timeout-minutes: 30 | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: dtolnay/rust-toolchain@stable | ||
with: | ||
components: clippy | ||
- name: Install sccache | ||
uses: mozilla-actions/[email protected] | ||
|
||
- name: clippy check (all features) | ||
run: cargo clippy --workspace --all-features --all-targets --bins --tests --benches | ||
|
||
- name: clippy check (no features) | ||
run: cargo clippy --workspace --no-default-features --lib --bins --tests | ||
|
||
- name: clippy check (default features) | ||
run: cargo clippy --workspace --all-targets |
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
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 |
---|---|---|
@@ -1,5 +1,3 @@ | ||
#![feature(new_uninit)] | ||
|
||
pub mod cinn25519; | ||
pub mod identity_id; | ||
pub mod namespace_id; |
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
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
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
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
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 |
---|---|---|
@@ -1,2 +1,2 @@ | ||
[toolchain] | ||
channel = "nightly" | ||
channel = "stable" |