Skip to content

Test Build Workflow #280

Test Build Workflow

Test Build Workflow #280

name: Test Build Workflow
on:
schedule:
- cron: '0 0 * * *' # Run daily at midnight
workflow_dispatch:
push:
branches: [ master ]
tags:
- 'v1'
- 'v1-test'
paths:
- 'action.yml'
- '.github/workflows/test-build-workflow.yml'
pull_request:
branches: [ master ]
paths:
- 'action.yml'
- '.github/workflows/test-build-workflow.yml'
jobs:
test-binary-build:
strategy:
matrix:
include:
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
use-pgo: true
use-cross: false
- os: ubuntu-latest
target: i686-unknown-linux-gnu
use-pgo: true
use-cross: false
- os: ubuntu-latest
target: aarch64-unknown-linux-gnu
use-pgo: true # x64 host to aarch64 simulated guest via cross
use-cross: true
- os: ubuntu-latest
target: armv7-unknown-linux-gnueabihf
use-pgo: true # x64 host to armv7 simulated guest via cross
use-cross: true
- os: windows-latest
target: x86_64-pc-windows-msvc
use-pgo: true
use-cross: false
- os: windows-latest
target: i686-pc-windows-msvc
use-pgo: true
use-cross: false
- os: windows-latest
target: aarch64-pc-windows-msvc
use-pgo: false # no virtualization support (proprietary OS)
use-cross: false
- os: macos-13 # x86
target: x86_64-apple-darwin
use-pgo: true
use-cross: false
- os: macos-14 # M1
target: aarch64-apple-darwin
use-pgo: true
use-cross: false
runs-on: ${{ matrix.os }}
steps:
- name: Checkout Test Repository
uses: actions/checkout@v4
with:
repository: Sewer56/prs-rs
ref: 149060527e685360687d7332742ac016b39af8a7
- name: Test Binary Build
uses: Reloaded-Project/devops-rust-lightweight-binary@v1-test
with:
target: ${{ matrix.target }}
use-pgo: ${{ matrix.use-pgo }}
use-cross: ${{ matrix.use-cross }}
rust-project-path: "tools/cli"
crate-name: "prs-rs-cli"
upload-artifacts: false
test-library-build:
strategy:
matrix:
include:
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
use-pgo: true
use-cross: false
use-tarpaulin: true
- os: ubuntu-latest
target: i686-unknown-linux-gnu
use-pgo: true
use-cross: false
use-tarpaulin: true
- os: ubuntu-latest
target: aarch64-unknown-linux-gnu
use-pgo: true # x64 host to aarch64 simulated guest via cross
use-cross: true
use-tarpaulin: true
- os: ubuntu-latest
target: armv7-unknown-linux-gnueabihf
use-pgo: true # x64 host to armv7 simulated guest via cross
use-cross: true
use-tarpaulin: true
- os: windows-latest
target: x86_64-pc-windows-msvc
use-pgo: true
use-cross: false
use-tarpaulin: true
- os: windows-latest
target: i686-pc-windows-msvc
use-pgo: true
use-cross: false
use-tarpaulin: true
# no native github actions runner or cross-rs image
#- os: windows-latest
# target: aarch64-pc-windows-msvc
# use-pgo: false # no native runner
# use-cross: false
# use-tarpaulin: true
- os: macos-13 # x86
target: x86_64-apple-darwin
use-pgo: true
use-cross: false
use-tarpaulin: true
- os: macos-14 # M1
target: aarch64-apple-darwin
use-pgo: true
use-cross: false
use-tarpaulin: true
runs-on: ${{ matrix.os }}
steps:
- name: Checkout Test Repository
uses: actions/checkout@v4
with:
repository: Sewer56/prs-rs
ref: 149060527e685360687d7332742ac016b39af8a7
- name: Test Library Build
uses: Reloaded-Project/devops-rust-lightweight-binary@v1-test
with:
crate-name: prs-rs
target: ${{ matrix.target }}
use-pgo: ${{ matrix.use-pgo }}
use-cross: ${{ matrix.use-cross }}
use-tarpaulin: ${{ matrix.use-tarpaulin }}
features: "c-exports"
build-library: true
upload-artifacts: false
run-tests-and-coverage: true
upload-coverage-to-codecov: false
# This tests gathering PGO data on a host, and building for a different target.
test-pgo-with-cross-compile:
runs-on: ubuntu-latest
steps:
- name: Checkout Test Repository
uses: actions/checkout@v4
with:
repository: Sewer56/prs-rs
ref: 149060527e685360687d7332742ac016b39af8a7
- name: Test PGO with Cross-Compilation (Binary)
uses: Reloaded-Project/devops-rust-lightweight-binary@v1-test
with:
rust-project-path: tools/cli
pgo-project-path: .
crate-name: prs-rs-cli
target: aarch64-unknown-linux-gnu # x64 host to aarch64 simulated guest
use-pgo: true
use-cross: true
pgo-benchmark-name: my_benchmark
upload-artifacts: false
- name: Test PGO with Cross-Compilation (Library)
uses: Reloaded-Project/devops-rust-lightweight-binary@v1-test
with:
crate-name: prs-rs
target: aarch64-unknown-linux-gnu # x64 host to to aarch64 simulated guest
use-pgo: true
use-cross: true
pgo-benchmark-name: my_benchmark
upload-artifacts: false
build-library: true
test-library-feature-build:
runs-on: ubuntu-latest
steps:
- name: Checkout Test Repository
uses: actions/checkout@v4
with:
repository: Sewer56/prs-rs
ref: 149060527e685360687d7332742ac016b39af8a7
- name: Test Library Feature Build
uses: Reloaded-Project/devops-rust-lightweight-binary@v1-test
with:
crate-name: prs-rs
target: x86_64-unknown-linux-gnu
features: c-exports,std
upload-artifacts: false
build-library: true
test-library-no-default-features:
runs-on: ubuntu-latest
steps:
- name: Checkout Test Repository
uses: actions/checkout@v4
with:
repository: Sewer56/prs-rs
ref: 149060527e685360687d7332742ac016b39af8a7
- name: Test Library No Default Features
uses: Reloaded-Project/devops-rust-lightweight-binary@v1-test
with:
crate-name: prs-rs
target: x86_64-unknown-linux-gnu
no-default-features: true
features: std
upload-artifacts: false
build-library: true
test-binary-pgo-with-library:
runs-on: ubuntu-latest
steps:
- name: Checkout Test Repository
uses: actions/checkout@v4
with:
repository: Sewer56/prs-rs
ref: 149060527e685360687d7332742ac016b39af8a7
- name: Test Binary PGO with Library
uses: Reloaded-Project/devops-rust-lightweight-binary@v1-test
with:
rust-project-path: tools/cli
pgo-project-path: .
crate-name: prs-rs-cli
target: x86_64-unknown-linux-gnu
use-pgo: true
pgo-benchmark-name: my_benchmark
upload-artifacts: false
test-library-pgo:
runs-on: ubuntu-latest
steps:
- name: Checkout Test Repository
uses: actions/checkout@v4
with:
repository: Sewer56/prs-rs
ref: 149060527e685360687d7332742ac016b39af8a7
- name: Test Library PGO
uses: Reloaded-Project/devops-rust-lightweight-binary@v1-test
with:
crate-name: prs-rs
target: x86_64-unknown-linux-gnu
use-pgo: true
pgo-benchmark-name: my_benchmark
upload-artifacts: false
build-library: true
test-custom-rustflags:
runs-on: ubuntu-latest
steps:
- name: Checkout Test Repository
uses: actions/checkout@v4
with:
repository: Sewer56/prs-rs
ref: 149060527e685360687d7332742ac016b39af8a7
- name: Test Custom RUSTFLAGS (Binary)
uses: Reloaded-Project/devops-rust-lightweight-binary@v1-test
with:
rust-project-path: tools/cli
crate-name: prs-rs-cli
target: x86_64-unknown-linux-gnu
additional-rustflags: -C opt-level=3
upload-artifacts: false
- name: Test Custom RUSTFLAGS (Library)
uses: Reloaded-Project/devops-rust-lightweight-binary@v1-test
with:
crate-name: prs-rs
target: x86_64-unknown-linux-gnu
additional-rustflags: -C opt-level=3
upload-artifacts: false
build-library: true
test-custom-build-std:
runs-on: ubuntu-latest
steps:
- name: Checkout Test Repository
uses: actions/checkout@v4
with:
repository: Sewer56/prs-rs
ref: 149060527e685360687d7332742ac016b39af8a7
- name: Test Custom RUSTFLAGS (Binary)
uses: Reloaded-Project/devops-rust-lightweight-binary@v1-test
with:
rust-project-path: tools/cli
crate-name: prs-rs-cli
target: x86_64-unknown-linux-gnu
additional-rustflags: -C opt-level=3
upload-artifacts: false
size-optimized-std: true
- name: Test Custom RUSTFLAGS (Library)
uses: Reloaded-Project/devops-rust-lightweight-binary@v1-test
with:
crate-name: prs-rs
target: x86_64-unknown-linux-gnu
additional-rustflags: -C opt-level=3
upload-artifacts: false
build-library: true
size-optimized-std: true
# Can build a project in a workspace.
test-workspace-build:
runs-on: ubuntu-latest
steps:
- name: Checkout Test Repository
uses: actions/checkout@v4
with:
repository: Sewer56/dxt-lossless-transform
ref: d47afd9a7c2fa71495b6d942853b0fe41f258e26
- name: Test Workspace Build
uses: Reloaded-Project/devops-rust-lightweight-binary@v1-test
with:
rust-project-path: projects/dxt-lossless-transform-cli
workspace-path: "."
crate-name: dxt-lossless-transform-cli
target: x86_64-unknown-linux-gnu
upload-artifacts: true
test-artifact-upload:
runs-on: ubuntu-latest
steps:
- name: Checkout Test Repository
uses: actions/checkout@v4
with:
repository: Sewer56/prs-rs
ref: 149060527e685360687d7332742ac016b39af8a7
- name: Test Artifact Upload (Binary)
uses: Reloaded-Project/devops-rust-lightweight-binary@v1-test
with:
rust-project-path: tools/cli
crate-name: prs-rs-cli
target: x86_64-unknown-linux-gnu
- name: Download Binary Artifact
uses: actions/download-artifact@v4
with:
name: prs-rs-cli-x86_64-unknown-linux-gnu-
- name: Assert Binary Artifact
shell: bash
run: |
if [ ! -f prs-rs-cli ]; then
echo "Binary artifact not found"
exit 1
fi
- name: Test Artifact Upload (Library)
uses: Reloaded-Project/devops-rust-lightweight-binary@v1-test
with:
crate-name: prs-rs
target: x86_64-unknown-linux-gnu
build-library: true
- name: Download Library Artifact
uses: actions/download-artifact@v4
with:
name: C-Library-prs-rs-x86_64-unknown-linux-gnu-
- name: Assert Library Artifact
shell: bash
run: |
if [ ! -f libprs_rs.a ] || [ ! -f libprs_rs.so ]; then
echo "Library artifacts not found"
exit 1
fi