Windows CI runners appear to be very slow wrt. the time limits we've set for many of the tests, so fail for tests involving longer files. At the same time, MacOS tests aren't likely to add much value over Linux. This commit disables *test* runners for these environments to remove a lot of commit/PR noise. Builds are still run on these platforms.
204 lines
5.4 KiB
YAML
204 lines
5.4 KiB
YAML
name: CI
|
|
|
|
on: [push, pull_request]
|
|
|
|
jobs:
|
|
lint:
|
|
name: Lint
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v2
|
|
- name: Install toolchain
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: nightly
|
|
components: rustfmt, clippy
|
|
override: true
|
|
- name: Rustfmt
|
|
run: cargo +nightly fmt --all -- --check
|
|
- name: Clippy
|
|
uses: actions-rs/clippy-check@v1
|
|
with:
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
args: --features full-doc
|
|
|
|
test:
|
|
name: Test
|
|
runs-on: ${{ matrix.os || 'ubuntu-latest' }}
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
name:
|
|
- stable
|
|
- beta
|
|
- nightly
|
|
- macOS
|
|
- Windows
|
|
- driver only
|
|
- gateway only
|
|
- simd json
|
|
|
|
include:
|
|
- name: beta
|
|
toolchain: beta
|
|
- name: nightly
|
|
toolchain: nightly
|
|
- name: macOS
|
|
os: macOS-latest
|
|
dont-test: true
|
|
- name: Windows
|
|
os: windows-latest
|
|
dont-test: true
|
|
- name: driver only
|
|
features: driver rustls
|
|
dont-test: true
|
|
- name: gateway only
|
|
features: gateway serenity rustls
|
|
dont-test: true
|
|
- name: simd json
|
|
features: simd-json serenity rustls driver gateway serenity?/simd_json
|
|
rustflags: -C target-cpu=native
|
|
dont-test: true
|
|
|
|
steps:
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Install toolchain
|
|
id: tc
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: ${{ matrix.toolchain || 'stable' }}
|
|
profile: minimal
|
|
override: true
|
|
|
|
- name: Install dependencies
|
|
if: runner.os == 'Linux'
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y libopus-dev
|
|
|
|
- name: Install yt-dlp (Unix)
|
|
if: runner.os != 'Windows'
|
|
run: |
|
|
sudo wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O /usr/local/bin/yt-dlp
|
|
sudo chmod a+rx /usr/local/bin/yt-dlp
|
|
|
|
- name: Install yt-dlp (Windows)
|
|
if: runner.os == 'Windows'
|
|
run: choco install yt-dlp
|
|
|
|
- name: Setup cache
|
|
if: runner.os != 'macOS'
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: |
|
|
~/.cargo/registry
|
|
~/.cargo/git
|
|
target
|
|
key: ${{ runner.os }}-test-${{ steps.tc.outputs.rustc_hash }}-${{ hashFiles('**/Cargo.toml') }}
|
|
|
|
- name: Set RUSTFLAGS
|
|
if: runner.os != 'Windows'
|
|
run: echo "RUSTFLAGS=${{ matrix.rustflags || '' }}" >> $GITHUB_ENV
|
|
|
|
- name: Build all features
|
|
if: matrix.features == ''
|
|
run: cargo build --features full-doc
|
|
|
|
- name: Test all features
|
|
if: ${{ !matrix.dont-test && matrix.features == '' }}
|
|
run: cargo test --features full-doc
|
|
|
|
- name: Build some features
|
|
if: matrix.features
|
|
run: cargo build --no-default-features --features "${{ matrix.features }}"
|
|
|
|
- name: Test some features
|
|
if: ${{ !matrix.dont-test && matrix.features }}
|
|
run: cargo test --no-default-features --features "${{ matrix.features }}"
|
|
|
|
doc:
|
|
name: Build docs
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Install toolchain
|
|
id: tc
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: nightly
|
|
profile: minimal
|
|
override: true
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y libopus-dev
|
|
|
|
- name: Setup cache
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: |
|
|
~/.cargo/registry
|
|
~/.cargo/git
|
|
key: ${{ runner.os }}-docs-${{ steps.tc.outputs.rustc_hash }}-${{ hashFiles('**/Cargo.toml') }}
|
|
|
|
- name: Build docs
|
|
env:
|
|
RUSTDOCFLAGS: -D broken_intra_doc_links
|
|
run: |
|
|
cargo doc --no-deps --features full-doc
|
|
|
|
examples:
|
|
name: Examples
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Install toolchain
|
|
id: tc
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
profile: minimal
|
|
override: true
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y libopus-dev
|
|
|
|
- name: Setup cache
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: |
|
|
~/.cargo/registry
|
|
~/.cargo/git
|
|
examples/target
|
|
key: ${{ runner.os }}-examples-${{ steps.tc.outputs.rustc_hash }}-${{ hashFiles('**/Cargo.toml') }}
|
|
|
|
- name: 'Build serenity/voice'
|
|
working-directory: examples
|
|
run: cargo build -p voice
|
|
- name: 'Build serenity/voice_events_queue'
|
|
working-directory: examples
|
|
run: cargo build -p voice_events_queue
|
|
- name: 'Build serenity/voice_receive'
|
|
working-directory: examples
|
|
run: cargo build -p voice_receive
|
|
- name: 'Build serenity/voice_cached_audio'
|
|
working-directory: examples
|
|
run: cargo build -p voice_cached_audio
|
|
- name: 'Build twilight'
|
|
working-directory: examples
|
|
run: cargo build -p twilight
|