Skip to content

Improve: Use revamped Reloaded GitHub Actions & Fix Compile Warnings #165

Improve: Use revamped Reloaded GitHub Actions & Fix Compile Warnings

Improve: Use revamped Reloaded GitHub Actions & Fix Compile Warnings #165

Workflow file for this run

name: Test, Upload Coverage and Release Rust
on:
push:
branches: [ main, master, optimize-for-size ]
tags:
- '*'
paths:
- 'src-rust/**'
pull_request:
branches: [ main, master, optimize-for-size ]
paths:
- 'src-rust/**'
workflow_dispatch:
env:
build-with-pgo: false
jobs:
build-and-test-linux:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target: [x86_64-unknown-linux-gnu, i686-unknown-linux-gnu, aarch64-unknown-linux-gnu]
features: ["c_exports", "c_exports,size_opt", "c_exports,size_opt,no_format", "c_exports,size_opt,no_format,all_private"]
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Build C Libraries and Run Tests
uses: Reloaded-Project/devops-rust-lightweight-binary@v1
with:
rust-project-path: src-rust
crate-name: ${{ github.event.repository.name }}
target: ${{ matrix.target }}
use-pgo: ${{ env.build-with-pgo }}
use-cross: ${{ matrix.target != 'x86_64-unknown-linux-gnu' }}
features: ${{ matrix.features }}
build-library: true
run-tests-and-coverage: true
codecov-token: ${{ secrets.CODECOV_TOKEN }}
build-and-test-macos-x86:
runs-on: macos-13
strategy:
fail-fast: false
matrix:
features: ["c_exports", "c_exports,size_opt", "c_exports,size_opt,no_format", "c_exports,size_opt,no_format,all_private"]
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Build C Libraries and Run Tests
uses: Reloaded-Project/devops-rust-lightweight-binary@v1
with:
rust-project-path: src-rust
crate-name: ${{ github.event.repository.name }}
target: x86_64-apple-darwin
use-pgo: ${{ env.build-with-pgo }}
use-cross: false
features: ${{ matrix.features }}
build-library: true
run-tests-and-coverage: true
codecov-token: ${{ secrets.CODECOV_TOKEN }}
build-and-test-macos-arm:
runs-on: macos-14
strategy:
fail-fast: false
matrix:
features: ["c_exports", "c_exports,size_opt", "c_exports,size_opt,no_format", "c_exports,size_opt,no_format,all_private"]
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Build C Libraries and Run Tests
uses: Reloaded-Project/devops-rust-lightweight-binary@v1
with:
rust-project-path: src-rust
crate-name: ${{ github.event.repository.name }}
target: aarch64-apple-darwin
use-pgo: ${{ env.build-with-pgo }}
use-cross: false
features: ${{ matrix.features }}
build-library: true
run-tests-and-coverage: true
codecov-token: ${{ secrets.CODECOV_TOKEN }}
build-and-test-windows:
strategy:
fail-fast: false
matrix:
include:
# Native Windows builds with testing
- os: windows-latest
target: x86_64-pc-windows-msvc
run_tests: true
- os: windows-latest
target: i686-pc-windows-msvc
run_tests: true
# aarch64 Windows build without testing
- os: windows-latest
target: aarch64-pc-windows-msvc
run_tests: false # no native runner
# Wine builds (on Linux)
- os: ubuntu-latest
target: x86_64-pc-windows-gnu
run_tests: true
- os: ubuntu-latest
target: i686-pc-windows-gnu
run_tests: true
features: ["c_exports,external_processes", "c_exports,size_opt,external_processes", "c_exports,size_opt,no_format,external_processes", "c_exports,size_opt,no_format", "c_exports,size_opt,no_format,all_private"]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Build C Libraries and Run Tests
uses: Reloaded-Project/devops-rust-lightweight-binary@v1
with:
rust-project-path: src-rust
crate-name: ${{ github.event.repository.name }}
target: ${{ matrix.target }}
use-pgo: ${{ env.build-with-pgo }}
use-cross: ${{ matrix.os == 'ubuntu-latest' || matrix.target == 'aarch64-pc-windows-msvc' }}
features: ${{ matrix.features }}
build-library: true
run-tests-and-coverage: ${{ matrix.run_tests }}
codecov-token: ${{ secrets.CODECOV_TOKEN }}
# Note: The GitHub Runner Images will contain an up to date Rust Stable Toolchain
# thus as per recommendation of cargo-semver-checks, we're using stable here.
- name: Run cargo-semver-checks
if: github.event_name == 'pull_request' || startsWith(github.ref, 'refs/tags/')
run: |
rustup target add ${{ matrix.target }}
cargo install cargo-semver-checks --locked
cargo semver-checks --target ${{ matrix.target }} --features ${{ matrix.features }}
build-c-headers:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Generate C++ bindings
uses: Reloaded-Project/devops-rust-cbindgen@v1
with:
rust-project-path: src-rust
config-file: cbindgen_cpp.toml
output-header-file: bindings_cpp.hpp
- name: Generate C bindings
uses: Reloaded-Project/devops-rust-cbindgen@v1
with:
rust-project-path: src-rust
config-file: cbindgen_c.toml
output-header-file: bindings_c.h
publish-crate:
permissions:
contents: write
needs: [build-and-test-linux, build-and-test-macos-x86, build-and-test-macos-arm, build-and-test-windows, build-c-headers]
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Publish Rust Crate and Artifacts
uses: Reloaded-Project/devops-publish-action@v1
with:
crates-io-token: ${{ secrets.CRATES_IO_TOKEN }}
rust-project-paths: |
src-rust