Rust: avoid emitting trailing whitespace #2096
Workflow file for this run
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: | |
pull_request: | |
merge_group: | |
defaults: | |
run: | |
shell: bash | |
# Cancel any in-flight jobs for the same PR/branch so there's only one active | |
# at a time | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build: | |
name: Build wit-bindgen | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
include: | |
- build: x86_64-linux | |
os: ubuntu-latest | |
- build: x86_64-macos | |
os: macos-latest | |
- build: aarch64-macos | |
os: macos-latest | |
target: aarch64-apple-darwin | |
- build: x86_64-windows | |
os: windows-latest | |
- build: aarch64-linux | |
os: ubuntu-latest | |
target: aarch64-unknown-linux-gnu | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- run: rustup update stable --no-self-update && rustup default stable | |
- uses: bytecodealliance/wasmtime/.github/actions/[email protected] | |
with: | |
name: ${{ matrix.build }} | |
- run: | | |
echo CARGO_BUILD_TARGET=${{ matrix.target }} >> $GITHUB_ENV | |
rustup target add ${{ matrix.target }} | |
if: matrix.target != '' | |
- run: $CENTOS cargo build --release | |
- run: ./ci/build-tarballs.sh "${{ matrix.build }}" "${{ matrix.target }}" | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: bins-${{ matrix.build }} | |
path: dist | |
test: | |
name: Test | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Rust | |
run: rustup update stable --no-self-update && rustup default stable | |
- name: Install wasm32-unknown-unknown target | |
run: rustup target add wasm32-unknown-unknown | |
- name: Install wasm32-wasi target | |
run: rustup target add wasm32-wasi | |
- uses: ./.github/actions/install-wasi-sdk | |
- run: | | |
curl.exe -LO https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.ps1 | |
powershell -File dotnet-install.ps1 -Channel 8.0.1xx -Verbose | |
echo DOTNET_ROOT=$LOCALAPPDATA'\Microsoft\dotnet' >> $GITHUB_ENV | |
export DOTNET_ROOT=$LOCALAPPDATA\\Microsoft\\dotnet | |
echo $LOCALAPPDATA'\Microsoft\dotnet' >> $GITHUB_PATH | |
echo $LOCALAPPDATA'\Microsoft\dotnet\tools' >> $GITHUB_PATH | |
$LOCALAPPDATA/Microsoft/dotnet/dotnet --info | |
echo nativeaot-llvm requires emscripten for its version of clang as wasi-sdk 20 does not work see https://github.com/WebAssembly/wasi-sdk/issues/326 | |
curl.exe -OL https://github.com/emscripten-core/emsdk/archive/refs/heads/main.zip | |
unzip main.zip | |
cd emsdk-main | |
./emsdk.bat install 3.1.47 | |
./emsdk.bat activate 3.1.47 | |
if : matrix.os == 'windows-latest' | |
- run: ci/download-teavm.sh | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: '16' | |
- uses: actions/setup-java@v4 | |
with: | |
java-version: '18' | |
distribution: 'adopt' | |
- uses: actions/setup-go@v4 | |
with: | |
go-version: '1.20' | |
- uses: acifani/setup-tinygo@v1 | |
with: | |
tinygo-version: 0.30.0 | |
- name: All but Windows, cargo test --workspace | |
if : matrix.os != 'windows-latest' | |
run: cargo test --workspace | |
- name: Windows, set EMSDK and run cargo test | |
if : matrix.os == 'windows-latest' | |
run: | | |
source ./emsdk-main/emsdk_env.sh | |
cargo test --workspace | |
check: | |
name: Check | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Rust | |
run: rustup update stable --no-self-update && rustup default stable | |
- name: Install wasm32-unknown-unknown target | |
run: rustup target add wasm32-unknown-unknown | |
- name: Install wasm32-wasi target | |
run: rustup target add wasm32-wasi | |
# Verify the output of the `./ci/rebuild-libcabi-realloc.sh` script is | |
# up-to-date. | |
- uses: ./.github/actions/install-wasi-sdk | |
- run: ./ci/rebuild-libcabi-realloc.sh | |
- run: git diff --exit-code | |
# Test various feature combinations, make sure they all build | |
- run: cargo build | |
- run: cargo build --no-default-features | |
- run: cargo build --no-default-features --features rust | |
- run: cargo build --no-default-features --features c | |
- run: cargo build --no-default-features --features teavm-java | |
- run: cargo build --no-default-features --features go | |
- run: cargo build --no-default-features --features csharp | |
- run: cargo build --no-default-features --features markdown | |
# Verity that documentation can be generated for the rust bindings crate. | |
- run: cargo doc -p wit-bindgen --no-deps | |
env: | |
RUSTDOCFLAGS: --cfg=docsrs | |
rustfmt: | |
name: Rustfmt | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Rust | |
run: rustup update stable && rustup default stable && rustup component add rustfmt | |
- name: Format source code | |
run: cargo fmt -- --check | |
verify-publish: | |
if: github.repository_owner == 'bytecodealliance' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- run: rustup update stable && rustup default stable | |
- run: rustc ci/publish.rs | |
# Make sure the tree is publish-able as-is | |
- run: ./publish verify | |
# Make sure we can bump version numbers for the next release | |
- run: ./publish bump | |
# "Join node" which the merge queue waits on. | |
ci-status: | |
name: Record the result of testing and building steps | |
runs-on: ubuntu-latest | |
needs: | |
- test | |
- rustfmt | |
- build | |
- verify-publish | |
- check | |
if: always() | |
steps: | |
- name: Successful test and build | |
if: ${{ !(contains(needs.*.result, 'failure')) }} | |
run: exit 0 | |
- name: Failing test and build | |
if: ${{ contains(needs.*.result, 'failure') }} | |
run: exit 1 | |
- name: Report failure on cancellation | |
if: ${{ contains(needs.*.result, 'cancelled') || cancelled() }} | |
run: exit 1 |