test #210
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
# Note, this is used in the badge URL! | |
name: test | |
on: | |
push: | |
branches: [master, dev, spotty, spotty-dev] | |
paths: | |
[ | |
"**.rs", | |
"Cargo.toml", | |
"Cargo.lock", | |
"rustfmt.toml", | |
".github/workflows/*", | |
"!*.md", | |
"!contrib/*", | |
"!docs/*", | |
"!LICENSE", | |
"!*.sh", | |
] | |
pull_request: | |
paths: | |
[ | |
"**.rs", | |
"Cargo.toml", | |
"Cargo.lock", | |
"rustfmt.toml", | |
".github/workflows/*", | |
"!*.md", | |
"!contrib/*", | |
"!docs/*", | |
"!LICENSE", | |
"!*.sh", | |
] | |
schedule: | |
# Run CI every week | |
- cron: "00 01 * * 0" | |
env: | |
RUST_BACKTRACE: 1 | |
KEYMASTER_CLIENT_ID: ${{ secrets.KEYMASTER_CLIENT_ID }} | |
jobs: | |
fmt: | |
name: rustfmt | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Install toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
components: rustfmt | |
- run: cargo fmt --all -- --check | |
test-linux: | |
needs: fmt | |
name: cargo +${{ matrix.toolchain }} build (${{ matrix.os }}) | |
runs-on: ${{ matrix.os }} | |
continue-on-error: ${{ matrix.experimental }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
toolchain: | |
- 1.57 # MSRV (Minimum supported rust version) | |
- stable | |
- beta | |
experimental: [false] | |
# Ignore failures in nightly | |
include: | |
- os: ubuntu-latest | |
toolchain: nightly | |
experimental: true | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Write Build Configuration File | |
uses: DamianReeves/write-file-action@v1.0 | |
with: | |
path: ./src/client_id.txt | |
contents: ${{ env.KEYMASTER_CLIENT_ID }} | |
write-mode: overwrite | |
- name: Install toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ matrix.toolchain }} | |
override: true | |
- name: Get Rustc version | |
id: get-rustc-version | |
run: echo "::set-output name=version::$(rustc -V)" | |
shell: bash | |
- name: Cache Rust dependencies | |
uses: actions/cache@v2 | |
with: | |
path: | | |
~/.cargo/registry/index | |
~/.cargo/registry/cache | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-${{ steps.get-rustc-version.outputs.version }}-${{ hashFiles('Cargo.lock') }} | |
- name: Install developer package dependencies | |
run: sudo apt-get update && sudo apt-get install libpulse-dev portaudio19-dev libasound2-dev libsdl2-dev gstreamer1.0-dev libgstreamer-plugins-base1.0-dev libavahi-compat-libdnssd-dev | |
- run: cargo build --workspace --examples | |
- run: cargo test --workspace | |
- run: cargo install cargo-hack | |
- run: cargo hack --workspace --remove-dev-deps | |
- run: cargo build -p librespot-core --no-default-features | |
- run: cargo build -p librespot-core | |
- run: cargo hack build --each-feature -p librespot-discovery | |
- run: cargo hack build --each-feature -p librespot-playback | |
- run: cargo hack build --each-feature | |
test-windows: | |
needs: fmt | |
name: cargo build (${{ matrix.os }}) | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [windows-latest] | |
toolchain: [stable] | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Write Build Configuration File | |
uses: DamianReeves/write-file-action@v1.0 | |
with: | |
path: ./src/client_id.txt | |
contents: ${{ env.KEYMASTER_CLIENT_ID }} | |
write-mode: overwrite | |
- name: Install toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ matrix.toolchain }} | |
profile: minimal | |
override: true | |
- name: Get Rustc version | |
id: get-rustc-version | |
run: echo "::set-output name=version::$(rustc -V)" | |
shell: bash | |
- name: Cache Rust dependencies | |
uses: actions/cache@v2 | |
with: | |
path: | | |
~/.cargo/registry/index | |
~/.cargo/registry/cache | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-${{ steps.get-rustc-version.outputs.version }}-${{ hashFiles('Cargo.lock') }} | |
- run: cargo build --workspace --examples | |
- run: cargo test --workspace | |
- run: cargo install cargo-hack | |
- run: cargo hack --workspace --remove-dev-deps | |
- run: cargo build --no-default-features | |
- run: cargo build | |
test-cross-arm: | |
needs: fmt | |
runs-on: ${{ matrix.os }} | |
continue-on-error: false | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: ubuntu-latest | |
target: armv7-unknown-linux-gnueabihf | |
toolchain: stable | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Write Build Configuration File | |
uses: DamianReeves/write-file-action@v1.0 | |
with: | |
path: ./src/client_id.txt | |
contents: ${{ env.KEYMASTER_CLIENT_ID }} | |
write-mode: overwrite | |
- name: Install toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
target: ${{ matrix.target }} | |
toolchain: ${{ matrix.toolchain }} | |
override: true | |
- name: Get Rustc version | |
id: get-rustc-version | |
run: echo "::set-output name=version::$(rustc -V)" | |
shell: bash | |
- name: Cache Rust dependencies | |
uses: actions/cache@v2 | |
with: | |
path: | | |
~/.cargo/registry/index | |
~/.cargo/registry/cache | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-${{ matrix.target }}-${{ steps.get-rustc-version.outputs.version }}-${{ hashFiles('Cargo.lock') }} | |
- name: Install cross | |
run: cargo install cross || true | |
- name: Build | |
run: cross build --target ${{ matrix.target }} --no-default-features |