Skip to content

Pixel format conversion improvement #2834

Pixel format conversion improvement

Pixel format conversion improvement #2834

Workflow file for this run

name: tests
on:
push:
branches:
- master
pull_request:
branches:
- master
permissions:
contents: read
pull-requests: read
env:
DEBIAN_FRONTEND: noninteractive
jobs:
formatting:
runs-on: ubuntu-latest
container: shssoichiro/av1an-ci:latest
steps:
- uses: actions/checkout@v6
- name: Install Rust nightly
uses: dtolnay/rust-toolchain@nightly
- uses: Swatinem/rust-cache@v2
- name: Validate formatting
run: |
cargo fmt --all -- --check
unit-tests:
runs-on: ubuntu-latest
container: shssoichiro/av1an-ci:latest
steps:
- uses: actions/checkout@v6
with:
lfs: "true"
- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Validate encoders
run: |
which aomenc
which SvtAv1EncApp
which rav1e
which vpxenc
which x265
which x264
which vspipe
which ffmpeg
- name: Build Av1an
run: |
cargo clippy --profile ci -- -D warnings
- name: Install cargo-msrv
uses: taiki-e/install-action@v2
with:
tool: cargo-msrv
- name: Validate minimum Rust version
run: |
cargo msrv verify --path av1an
cargo msrv verify --path av1an-core
- name: Testing unit tests
working-directory: ./av1an-core
run: |
cargo test --profile ci
- name: Testing integration tests
working-directory: ./av1an
run: |
cargo test --profile ci
code-coverage:
needs: [formatting, unit-tests]
runs-on: ubuntu-latest
container: shssoichiro/av1an-ci:latest
steps:
- uses: actions/checkout@v6
with:
lfs: "true"
- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Validate encoders
run: |
which aomenc
which SvtAv1EncApp
which rav1e
which vpxenc
which x265
which x264
which vspipe
which ffmpeg
- name: Install cargo-llvm-cov
uses: taiki-e/install-action@v2
with:
tool: cargo-llvm-cov
- name: Generate code coverage
run: cargo llvm-cov --profile ci --workspace --lcov --output-path lcov.log --ignore-filename-regex tests\.rs
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: lcov.log
fail_ci_if_error: false
docker:
needs: [formatting, unit-tests]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Cache Docker layers
uses: actions/cache@v5
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Build
id: docker_build
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile
push: false
tags: av1an:action
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
- name: Move cache
# Temp fix
# https://github.com/docker/build-push-action/issues/252
# https://github.com/moby/buildkit/issues/1896
run: |
rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
# Job to output if docker-publish should run or not based on if DOCKERHUB_USERNAME and DOCKERHUB_TOKEN are set
publish-check:
runs-on: ubuntu-latest
outputs:
should_publish: ${{ secrets.DOCKERHUB_USERNAME != '' && secrets.DOCKERHUB_TOKEN != '' }}
steps:
- name: Check for DOCKERHUB_USERNAME and DOCKERHUB_TOKEN
run: echo "Checking if Docker Hub secrets are configured"
docker-publish:
needs: [unit-tests, docker, publish-check]
runs-on: ubuntu-latest
if: needs.publish-check.outputs.should_publish == 'true'
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Docker meta
id: docker_meta
uses: docker/metadata-action@v5
with:
images: ${{ secrets.DOCKERHUB_USERNAME }}/av1an
tags: |
type=raw,value=latest,enable=${{ startsWith(github.ref, 'refs/tags/') }}
type=ref,event=branch
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
type=sha
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Cache Docker layers
uses: actions/cache@v5
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Build and push
id: docker_build
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile
push: true
tags: ${{ steps.docker_meta.outputs.tags }}
labels: ${{ steps.docker_meta.outputs.labels }}
cache-from: type=local,src=/tmp/.buildx-cache
- name: Image digest
run: echo ${{ steps.docker_build.outputs.digest }}