This change was done as the v2 version still used the node v12 runtime. This runtime is deprecated by github. There are no other breaking changes done by the action. With the update to v3 now node v16 is used as runtime. You can read more about the changes from v2 to v3 here: https://github.com/actions/checkout/releases/tag/v3.0.0
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@v3
|
|
- 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@v3
|
|
|
|
- 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@v3
|
|
|
|
- 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@v3
|
|
|
|
- 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
|