name: Rust on: push: branches: [ master ] pull_request: branches: [ master ] env: CARGO_TERM_COLOR: always jobs: build-test-lint-linux: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: submodules: recursive - uses: actions-rs/toolchain@v1 with: toolchain: nightly-2022-02-16 override: false - name: Packages run: sudo apt-get update && sudo apt-get install build-essential yasm libavutil-dev libavcodec-dev libavformat-dev libavfilter-dev libavfilter-dev libavdevice-dev libswresample-dev libfftw3-dev ffmpeg - name: Check format run: cargo fmt -- --check - name: Build run: cargo build --verbose - name: Run tests run: cargo test --verbose - name: Run example tests run: cargo test --verbose --examples - name: Build benches run: cargo +nightly-2022-02-16 bench --verbose --features=bench --no-run - name: Build examples run: cargo build --examples --verbose --features=serde - name: Lint run: cargo clippy --examples --features=serde -- -D warnings build-test-lint-windows: name: Windows - build, test and lint runs-on: windows-latest strategy: matrix: include: - ffmpeg_version: latest ffmpeg_download_url: https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full-shared.7z fail-fast: false env: FFMPEG_DOWNLOAD_URL: ${{ matrix.ffmpeg_download_url }} steps: - uses: actions/checkout@v2 - name: Install dependencies run: | $VCINSTALLDIR = $(& "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -latest -property installationPath) Add-Content $env:GITHUB_ENV "LIBCLANG_PATH=${VCINSTALLDIR}\VC\Tools\LLVM\x64\bin`n" Invoke-WebRequest "${env:FFMPEG_DOWNLOAD_URL}" -OutFile ffmpeg-release-full-shared.7z 7z x ffmpeg-release-full-shared.7z mkdir ffmpeg mv ffmpeg-*/* ffmpeg/ Add-Content $env:GITHUB_ENV "FFMPEG_DIR=${pwd}\ffmpeg`n" Add-Content $env:GITHUB_PATH "${pwd}\ffmpeg\bin`n" - name: Set up Rust uses: actions-rs/toolchain@v1 with: toolchain: stable override: true components: rustfmt, clippy - name: Build run: cargo build --examples - name: Test run: cargo test --examples --features=serde - name: Lint run: cargo clippy --examples --features=serde -- -D warnings - name: Check format run: cargo fmt -- --check