Skip to content

Merge pull request #236 from getditto/bytes-improv #525

Merge pull request #236 from getditto/bytes-improv

Merge pull request #236 from getditto/bytes-improv #525

Workflow file for this run

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