name: Rust-CI on: push: branches: [ "main", "dev", "develop", "x", "xy" , "xyz" ] pull_request: branches: [ "main" ] env: CARGO_TERM_COLOR: always jobs: build-on-linux: name: build / linux / ffmpeg ${{ matrix.ffmpeg_version }} runs-on: ubuntu-latest container: jrottenberg/ffmpeg:${{ matrix.ffmpeg_version }}-ubuntu strategy: matrix: ffmpeg_version: ["4.3", "4.4", "5.0", "5.1", "6.0", "6.1", "7.0"] fail-fast: false steps: - name: Checkout uses: actions/checkout@v3 - name: Install dependencies run: | apt update apt install -y --no-install-recommends clang curl pkg-config - name: Setup Rust uses: dtolnay/rust-toolchain@v1 with: toolchain: stable - name: Build run: cargo build build-on-macos: name: build / macos / ffmpeg latest runs-on: macos-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Install dependencies run: | brew install ffmpeg pkg-config - name: Setup Rust uses: dtolnay/rust-toolchain@v1 with: toolchain: stable - name: Build run: cargo build build-on-windows: name: build / windows / ffmpeg latest runs-on: windows-latest env: FFMPEG_DOWNLOAD_URL: https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full-shared.7z steps: - name: Checkout uses: actions/checkout@v3 - 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: Setup Rust uses: dtolnay/rust-toolchain@v1 with: toolchain: stable - name: Build run: cargo build test-on-linux: name: test / linux / ffmpeg ${{ matrix.ffmpeg_version }} runs-on: ubuntu-latest container: jrottenberg/ffmpeg:${{ matrix.ffmpeg_version }}-ubuntu strategy: matrix: ffmpeg_version: ["4.3", "4.4", "5.0", "5.1", "6.0", "6.1", "7.0"] fail-fast: false steps: - name: Checkout uses: actions/checkout@v3 - name: Install dependencies run: | apt update apt install -y --no-install-recommends clang curl pkg-config - name: Setup Rust uses: dtolnay/rust-toolchain@v1 with: toolchain: stable - name: Run Tests with All Features run: cargo test --all-features - name: Run Tests in Release Mode run: cargo test --release test-on-macos: name: test / macos / ffmpeg latest runs-on: macos-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Install dependencies run: | brew install ffmpeg pkg-config - name: Setup Rust uses: dtolnay/rust-toolchain@v1 with: toolchain: stable - name: Run Tests with All Features run: cargo test --all-features - name: Run Tests in Release Mode run: cargo test --release test-on-windows: name: test / windows / ffmpeg latest runs-on: windows-latest env: FFMPEG_DOWNLOAD_URL: https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full-shared.7z steps: - name: Checkout uses: actions/checkout@v3 - 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: Setup Rust uses: dtolnay/rust-toolchain@v1 with: toolchain: stable - name: Run Tests with All Features run: cargo test --all-features - name: Run Tests in Release Mode run: cargo test --release lints: runs-on: ubuntu-latest container: jrottenberg/ffmpeg:6-ubuntu steps: - name: Checkout uses: actions/checkout@v3 - name: Install dependencies run: | apt update apt install -y --no-install-recommends clang curl pkg-config - name: Setup Rust uses: dtolnay/rust-toolchain@v1 with: toolchain: stable components: rustfmt, clippy - name: Rustfmt run: cargo fmt --all -- --check - name: Clippy run: cargo clippy --all --all-targets --all-features -- -D warnings