name: Test, Upload Coverage and Release Rust
on:
push:
branches: [ main ]
tags:
- '*'
pull_request:
branches: [ main ]
workflow_dispatch:
jobs:
build-and-test:
strategy:
matrix:
include:
- { os: ubuntu-latest, target: x86_64-unknown-linux-gnu, use-cross: false, features: "std,external-codecs", use-tarpaulin: true }
- { os: ubuntu-latest, target: i686-unknown-linux-gnu, use-cross: false, features: "std,external-codecs", use-tarpaulin: true }
- { os: ubuntu-latest, target: aarch64-unknown-linux-gnu, use-cross: true, features: "std,external-codecs", use-tarpaulin: true }
- { os: ubuntu-latest, target: armv7-unknown-linux-gnueabihf, use-cross: true, features: "std,external-codecs", use-tarpaulin: true }
- { os: windows-latest, target: x86_64-pc-windows-msvc, use-cross: false, features: "std,external-codecs", use-tarpaulin: true }
- { os: windows-latest, target: i686-pc-windows-msvc, use-cross: false, features: "std,external-codecs", use-tarpaulin: true }
- { os: windows-latest, target: aarch64-pc-windows-msvc, use-cross: false, features: "std,external-codecs", use-tarpaulin: false }
- { os: macos-15-intel, target: x86_64-apple-darwin, use-cross: false, features: "std,external-codecs", use-tarpaulin: true }
- { os: macos-latest, target: aarch64-apple-darwin, use-cross: false, features: "std,external-codecs", use-tarpaulin: true }
- { os: ubuntu-latest, target: x86_64-unknown-linux-gnu, use-cross: false, features: "std,external-codecs,enable-asm", use-tarpaulin: true }
- { os: ubuntu-latest, target: i686-unknown-linux-gnu, use-cross: false, features: "std,external-codecs,enable-asm", use-tarpaulin: true }
- { os: ubuntu-latest, target: aarch64-unknown-linux-gnu, use-cross: true, features: "std,external-codecs,enable-asm", use-tarpaulin: true }
- { os: ubuntu-latest, target: armv7-unknown-linux-gnueabihf, use-cross: true, features: "std,external-codecs,enable-asm", use-tarpaulin: true }
- { os: windows-latest, target: x86_64-pc-windows-msvc, use-cross: false, features: "std,external-codecs,enable-asm", use-tarpaulin: true }
- { os: windows-latest, target: i686-pc-windows-msvc, use-cross: false, features: "std,external-codecs,enable-asm", use-tarpaulin: true }
- { os: windows-latest, target: aarch64-pc-windows-msvc, use-cross: false, features: "std,external-codecs,enable-asm", use-tarpaulin: false }
- { os: macos-15-intel, target: x86_64-apple-darwin, use-cross: false, features: "std,external-codecs,enable-asm", use-tarpaulin: true }
- { os: macos-latest, target: aarch64-apple-darwin, use-cross: false, features: "std,external-codecs,enable-asm", use-tarpaulin: true }
- { os: ubuntu-latest, target: x86_64-unknown-linux-gnu, use-cross: false, features: "std,external-codecs,st", use-tarpaulin: true }
- { os: ubuntu-latest, target: i686-unknown-linux-gnu, use-cross: false, features: "std,external-codecs,st", use-tarpaulin: true }
- { os: ubuntu-latest, target: aarch64-unknown-linux-gnu, use-cross: true, features: "std,external-codecs,st", use-tarpaulin: true }
- { os: ubuntu-latest, target: armv7-unknown-linux-gnueabihf, use-cross: true, features: "std,external-codecs,st", use-tarpaulin: true }
- { os: windows-latest, target: x86_64-pc-windows-msvc, use-cross: false, features: "std,external-codecs,st", use-tarpaulin: true }
- { os: windows-latest, target: i686-pc-windows-msvc, use-cross: false, features: "std,external-codecs,st", use-tarpaulin: true }
- { os: windows-latest, target: aarch64-pc-windows-msvc, use-cross: false, features: "std,external-codecs,st", use-tarpaulin: false }
- { os: macos-15-intel, target: x86_64-apple-darwin, use-cross: false, features: "std,external-codecs,st", use-tarpaulin: true }
- { os: macos-latest, target: aarch64-apple-darwin, use-cross: false, features: "std,external-codecs,st", use-tarpaulin: true }
- { os: ubuntu-latest, target: powerpc-unknown-linux-gnu, use-cross: true, features: "std,external-codecs,st", use-tarpaulin: false }
- { os: ubuntu-latest, target: powerpc64-unknown-linux-gnu, use-cross: true, features: "std,external-codecs,st", use-tarpaulin: false }
- { os: ubuntu-latest, target: powerpc64le-unknown-linux-gnu, use-cross: true, features: "std,external-codecs,st", use-tarpaulin: false }
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Run Tests and Upload Coverage
uses: Reloaded-Project/devops-rust-test-and-coverage@v1
if: matrix.target != 'aarch64-pc-windows-msvc'
with:
upload-coverage: false
codecov-token: ${{ secrets.CODECOV_TOKEN }}
target: ${{ matrix.target }}
use-cross: ${{ matrix.use-cross }}
features: ${{ matrix.features }}
no-default-features: true
use-tarpaulin: ${{ matrix.use-tarpaulin }}
install-binstall: true
publish-crate:
permissions:
contents: write
needs: [build-and-test]
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
steps:
- name: Publish Rust Crate and Artifacts
uses: Reloaded-Project/devops-publish-action@v1
with:
crates-io-token: ${{ secrets.CRATES_IO_TOKEN }}
rust-project-paths: |
.