Skip to content

Update links to C2PA spec to 1.3 (#292) #67

Update links to C2PA spec to 1.3 (#292)

Update links to C2PA spec to 1.3 (#292) #67

Workflow file for this run

name: CI
on:
pull_request:
push:
branches: main
schedule:
- cron: "0 18 * * 1,4,6" # 1800 UTC every Monday, Thursday, Saturday
jobs:
tests:
name: Unit tests
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [windows-latest, macos-latest, ubuntu-latest]
rust_version: [stable, 1.70.0]
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust_version }}
components: llvm-tools-preview
- name: Cache Rust dependencies
uses: Swatinem/rust-cache@v1
- name: Install cargo-llvm-cov
uses: taiki-e/install-action@cargo-llvm-cov
- name: Generate code coverage
run: cargo llvm-cov --all-features --workspace --lcov --output-path lcov.info
- name: Upload code coverage results
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: true
verbose: true
tests-cross:
name: Unit tests
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target: [aarch64-unknown-linux-gnu]
rust_version: [stable, 1.70.0]
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust_version }}
targets: ${{ matrix.target }}
- name: Install cross-compilation toolset
run: cargo install cross
- name: Cache Rust dependencies
uses: Swatinem/rust-cache@v1
# Note that we do not run code coverage because
# it isn't readily accessible from cross-compilation
# environment. (A PR to fix this would be welcomed!)
- name: Run unit tests (cross build)
run: cross test --all-targets --all-features --target ${{ matrix.target }}
tests-wasm:
name: Unit tests (WASM)
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
- name: Install wasm-pack
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
- name: Run Wasm tests
run: wasm-pack test --chrome --headless
working-directory: ./sdk
test-direct-minimal-versions:
name: Unit tests with minimum versions of direct dependencies
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [windows-latest, macos-latest, ubuntu-latest]
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly
components: llvm-tools-preview
- name: Cache Rust dependencies
uses: Swatinem/rust-cache@v1
- name: Run tests
run: cargo +nightly test -Z direct-minimal-versions --all-targets --all-features
publish-preflight:
name: Preflight crate publish
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
rust_version: [stable]
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust_version }}
components: llvm-tools-preview
- name: Cache Rust dependencies
uses: Swatinem/rust-cache@v1
- name: Dry-run of crate publish
run: cargo publish -p c2pa --dry-run
clippy_check:
name: Clippy
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
- name: Install clippy
run: rustup component add clippy
- name: Cache Rust dependencies
uses: Swatinem/rust-cache@v1
- name: Cargo clippy
uses: actions-rs/clippy-check@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
args: --all-features --all-targets -- -D warnings
env:
RUST_BACKTRACE: "1"
cargo_fmt:
name: Enforce Rust code format
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly
components: rustfmt
- name: Check format
uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
docs_rs:
name: Preflight docs.rs build
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install nightly Rust toolchain
# Nightly is used here because the docs.rs build
# uses nightly and we use doc_cfg features that are
# not in stable Rust as of this writing (Rust 1.62).
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly
- name: Run cargo docs
# This is intended to mimic the docs.rs build
# environment. The goal is to fail PR validation
# if the subsequent release would result in a failed
# documentation build on docs.rs.
run: cargo +nightly doc --all-features --no-deps
env:
RUSTDOCFLAGS: --cfg docsrs
DOCS_RS: 1
cargo-deny:
name: License / vulnerability audit
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
checks:
- advisories
- bans licenses sources
# Prevent sudden announcement of a new advisory from failing CI:
continue-on-error: ${{ matrix.checks == 'advisories' }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Audit crate dependencies
uses: EmbarkStudios/cargo-deny-action@v1
with:
command: check ${{ matrix.checks }}
unused_deps:
name: Check for unused dependencies
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly
- name: Run cargo-udeps
uses: aig787/cargo-udeps-action@v1
with:
version: latest
args: --all-targets --all-features
unknown-features-cfg:
name: Check for unknown features in cfg attributes and macros
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly
- name: Check for unknown features
env:
RUSTFLAGS: "-D unexpected-cfgs"
run: cargo +nightly check -Z unstable-options -Z check-cfg=features --tests
version_bump:
name: Ensure (MINOR) tag is used when making an API breaking change
# Change all of these steps to (MAJOR) after 1.0 release
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
- name: Get latest existing tag
uses: actions-ecosystem/action-get-latest-tag@v1
id: get-latest-tag
with:
semver_only: true
- name: Set new version
uses: paulhatch/semantic-version@v5.0.2
id: set-version
with:
tag_prefix: "v"
version_format: "${major}.${minor}.${patch}"
major_pattern: "(MAJOR)"
minor_pattern: "(MINOR)"
- name: Generate changelog since last tag
uses: mathiasvr/command-output@v1
## NEEDS UPDATE for set-output deprecation.
## See https://github.com/mathiasvr/command-output/issues/4.
id: changelog
with:
run: git log --format="* %s" ${{ steps.get-latest-tag.outputs.tag }}..HEAD
- name: "Bump crate version (NOTE: Not pushed back to repo!)"
continue-on-error: true # If no change to crate version, ignore git commit error
run: |
sed -i "s/^version = \"[^\"]*\"$/version = \"$VERSION\"/;" sdk/Cargo.toml
git config user.email "nobody@example.com"
git config --global user.name "PR validation bot"
git add .
git commit -m "DO NOT PUSH BACK TO PR: Bump crate version"
env:
VERSION: ${{ steps.set-version.outputs.version }}
- name: If this step fails, change title of the PR to include (MINOR) tag
uses: obi1kenobi/cargo-semver-checks-action@v1
with:
crate-name: c2pa