Merge pull request #236 from getditto/bytes-improv #525
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
name: CI | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref || github.run_id }} | |
cancel-in-progress: true | |
env: | |
URL_ROOT_PATH: /safer_ffi/ | |
jobs: | |
# Check no_std # | |
check-nostd: | |
name: 'Check `#![no_std]`' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Install Rust toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: nightly-2023-09-14 | |
override: true | |
components: rust-src | |
- name: Clone repo | |
uses: actions/checkout@v2 | |
- uses: actions-rs/cargo@v1 | |
name: '`cargo +nightly check` without `std` nor `alloc`' | |
with: | |
command: check | |
args: | | |
--no-default-features | |
--target x86_64-unknown-linux-gnu -Zbuild-std=core | |
- uses: actions-rs/cargo@v1 | |
name: '`cargo +nightly check` without `std` ' | |
with: | |
command: check | |
args: | | |
--no-default-features --features alloc | |
--target x86_64-unknown-linux-gnu -Zbuild-std=core,alloc | |
# == CHECK == # | |
check: | |
name: Check nightly stable and MSRV | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: | |
- ubuntu-latest | |
- macos-latest | |
# - windows-latest | |
rust: | |
- 1.72.1 | |
- stable | |
# - nightly | |
steps: | |
- name: Install Rust toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ matrix.rust }} | |
override: true | |
# - name: Instal LLVM | |
# run: choco install -y llvm | |
# if: runner.os == 'Windows' | |
- name: Clone repo | |
uses: actions/checkout@v2 | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: check | |
args: --features log | |
releasable-to-crates-io: | |
name: Check the package can be released to crates.io | |
runs-on: ubuntu-latest | |
needs: check | |
steps: | |
- name: Install Rust toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: 1.72.1 | |
override: true | |
- name: Clone repo | |
uses: actions/checkout@v2 | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: package | |
args: --allow-dirty --no-verify | |
check-features: | |
name: Check all the features combinations on MSRV | |
runs-on: ubuntu-latest | |
needs: check | |
strategy: | |
fail-fast: false | |
matrix: | |
feature--std: ['', '--features alloc', '--features std'] | |
feature--async-fn: ['', '--features async-fn'] | |
feature--headers: ['', '--features headers'] | |
feature--dyn-traits: ['', '--features dyn-traits', '--features futures', '--features tokio'] | |
# feature--log: ['', '--features log'] | |
feature--js: ['', '--features js'] | |
feature--stabby: ['', '--features stabby'] | |
steps: | |
- name: Install Rust toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: 1.72.1 | |
override: true | |
- name: Clone repo | |
uses: actions/checkout@v2 | |
- uses: actions-rs/cargo@v1 | |
with: | |
command: check | |
args: | | |
--no-default-features | |
${{ matrix.feature--std }} | |
${{ matrix.feature--async-fn }} | |
${{ matrix.feature--headers }} | |
${{ matrix.feature--dyn-traits }} | |
${{ matrix.feature--js }} | |
${{ matrix.feature--stabby }} | |
# == BUILD & TEST == # | |
build-and-test: | |
name: Build and test | |
runs-on: ${{ matrix.os }} | |
needs: [check] | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-latest | |
- macos-latest | |
- windows-latest | |
rust: | |
- 1.72.1 | |
- stable | |
# - nightly | |
steps: | |
- name: Install Rust toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: default | |
override: true | |
toolchain: ${{ matrix.rust }} | |
target: wasm32-unknown-unknown | |
- name: Clone repo | |
uses: actions/checkout@v2 | |
- name: Cargo test | |
uses: actions-rs/cargo@v1 | |
env: | |
RUSTC_BOOTSTRAP: 1 | |
RUSTFLAGS: -Zmacro-backtrace | |
RUST_BACKTRACE: full | |
with: | |
command: test | |
args: --features docs | |
- name: FFI test (C & C#?) | |
run: make -C ffi_tests | |
if: runner.os != 'Windows' | |
env: | |
RUSTC_BOOTSTRAP: 1 | |
RUSTFLAGS: -Zmacro-backtrace | |
RUST_BACKTRACE: full | |
- name: FFI test (js) | |
run: make -C js_tests | |
if: runner.os != 'Windows' | |
env: | |
RUSTC_BOOTSTRAP: 1 | |
RUSTFLAGS: -Zmacro-backtrace | |
RUST_BACKTRACE: full | |
all-good: | |
name: All the required checks | |
needs: | |
- check-nostd | |
- check | |
- check-features | |
- build-and-test | |
- releasable-to-crates-io | |
runs-on: ubuntu-latest | |
if: ${{ always() }} | |
steps: | |
- name: Job Checks | |
run: | | |
RESULT=$(echo "${{ join(needs.*.result, '') }}" | sed -e "s/success//g") | |
if [ -n "$RESULT" ]; then | |
echo "One or more jobs failed" | |
exit 1 | |
fi | |
echo "All jobs succeeded" | |
# Deploy to Github pages # | |
deploy: | |
if: github.ref == 'refs/heads/master' | |
runs-on: ubuntu-20.04 | |
needs: | |
- build-and-test | |
steps: | |
- name: Install Rust toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: default | |
override: true | |
toolchain: 1.72.1 | |
- name: Install `mdbook` | |
uses: peaceiris/actions-mdbook@v1 | |
with: | |
mdbook-version: '0.4.4' | |
- name: Clone repo | |
uses: actions/checkout@v2 | |
- name: Build docs | |
uses: actions-rs/cargo@v1 | |
with: | |
command: doc | |
args: --features docs | |
env: | |
RUSTC_BOOTSTRAP: 1 | |
- name: Build guide and documentation | |
run: | | |
(cd guide | |
(cd src && sed -e "s,{ROOT_PATH},${URL_ROOT_PATH}," links.md.template > links.md) | |
mdbook build | |
mkdir -p book/{assets,rustdoc} | |
cp -r assets/* book/assets/ | |
cp -r ../target/doc/* book/rustdoc/ | |
) | |
- name: Deploy to Github Pages | |
uses: peaceiris/actions-gh-pages@v3 | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
publish_dir: ./guide/book |