2 - job: ${{ parameters.name }}
4 vmImage: ${{ parameters.vmImage }}
8 rustup_toolchain: stable-${{ parameters.target }}
10 ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/master') }}:
12 rustup_toolchain: beta-${{ parameters.target }}
15 rustup_toolchain: nightly-${{ parameters.target }}
17 ${{ if startsWith(parameters.name, 'Windows') }}:
19 rustup_toolchain: stable-${{ parameters.target }}
21 ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/master') }}:
23 rustup_toolchain: beta-${{ parameters.target }}
26 rustup_toolchain: nightly-${{ parameters.target }}
28 ${{ if and(not(startsWith(parameters.name, 'Windows')), not(endsWith(parameters.name, 'WASM'))) }}:
30 rustup_toolchain: stable-${{ parameters.target }}
32 ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/master') }}:
34 rustup_toolchain: beta-${{ parameters.target }}
37 rustup_toolchain: nightly-${{ parameters.target }}
40 - ${{ if not(startsWith(parameters.name, 'Windows')) }}:
43 curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain $RUSTUP_TOOLCHAIN
44 export PATH="$HOME/.cargo/bin:$PATH"
45 echo "##vso[task.setvariable variable=PATH;]$PATH"
46 displayName: Install Rust
47 - ${{ if and(startsWith(parameters.name, 'Linux'), not(endsWith(parameters.name, 'WASM'))) }}:
50 sudo apt-get update && sudo apt-get install -y libasound2-dev libjack-jackd2-dev
51 displayName: Install ALSA and Jack dependencies
52 - ${{ if startsWith(parameters.name, 'macOS') }}:
55 if [ "$FEATURES" = "jack" ]; then
56 curl -LOS https://github.com/jackaudio/jackaudio.github.com/releases/download/1.9.11/JackOSX.0.92_b3.zip && unzip JackOSX.0.92_b3.zip && sudo installer -pkg JackOSX.0.92_b3.pkg -target /
58 displayName: Install Jack dependencies
59 - ${{ if endsWith(parameters.name, 'WASM') }}:
62 rustup target add wasm32-unknown-unknown
63 displayName: Add wasm32-unknown-unknown target
64 - ${{ if startsWith(parameters.name, 'Windows') }}:
67 curl -sSf -o rustup-init.exe https://win.rustup.rs
68 rustup-init.exe -y --default-toolchain %RUSTUP_TOOLCHAIN%
69 set PATH=%PATH%;%USERPROFILE%\.cargo\bin
70 echo "##vso[task.setvariable variable=PATH;]%PATH%;%USERPROFILE%\.cargo\bin"
71 displayName: Install Rust (Windows)
76 displayName: Query installed versions
77 - ${{ if not(endsWith(parameters.name, 'WASM')) }}:
78 # Use bash for cross-platform env variable syntax
79 - bash: cargo build --verbose --features "$FEATURES"
81 - bash: cargo build --features "$FEATURES" --example test_list_ports
82 displayName: Build example program
83 - ${{ if not(startsWith(parameters.name, 'Linux')) }}:
84 # Tests cannot run on Linux (missing ALSA driver) or with Jack (Jack not running)
86 if [[ "$FEATURES" != *"jack"* ]]; then
87 cargo test --verbose --features "$FEATURES"
89 displayName: Run unit tests
91 if [[ "$FEATURES" != *"jack"* ]]; then
92 cargo run --features "$FEATURES" --example test_list_ports
94 displayName: Run example program
95 - ${{ if endsWith(parameters.name, 'WASM') }}:
97 - script: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh -s -- -f
98 displayName: Install wasm-pack
99 #- bash: cargo build --verbose --target wasm32-unknown-unknown --features "$FEATURES"
103 wasm-pack build --target=no-modules --dev
104 displayName: Build WASM example program
105 - bash: wasm-pack test --chrome
106 displayName: Run WASM tests