Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
366 changes: 193 additions & 173 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,33 +6,53 @@ on:
workflow_dispatch:

jobs:
lint:
# lint:
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# with:
# submodules: true
# - uses: moonrepo/setup-rust@v1
# with:
# components: rustfmt, clippy
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# - uses: pre-commit/[email protected]
# with:
# extra_args: --all-files
#
# - uses: taiki-e/install-action@v2
# with:
# tool: [email protected]
# - name: Check if bindings are up-to-date
# working-directory: crates/codspeed/src/instrument_hooks
# run: |
# ./update-bindings.sh
#
# if ! git diff --exit-code bindings.rs; then
# echo "Error: FFI bindings are out of date!"
# exit 1
# fi

test-without-cross:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true

- uses: moonrepo/setup-rust@v1
with:
components: rustfmt, clippy
targets: ${{ matrix.job.target }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: pre-commit/[email protected]
with:
extra_args: --all-files

- uses: taiki-e/install-action@v2
with:
tool: [email protected]
- name: Check if bindings are up-to-date
working-directory: crates/codspeed/src/instrument_hooks
run: |
./update-bindings.sh
tool: [email protected]

if ! git diff --exit-code bindings.rs; then
echo "Error: FFI bindings are out of date!"
exit 1
fi
- name: Build codspeed
run: cross build -p codspeed --target x86_64-unknown-linux-gnu

test-codspeed:
runs-on: ${{ matrix.job.os }}
Expand Down Expand Up @@ -67,162 +87,162 @@ jobs:
tool: [email protected]

- name: Build codspeed
run: cross build -p codspeed --target ${{ matrix.job.target }}

msrv-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: moonrepo/setup-rust@v1
with:
bins: cargo-msrv
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Check cospeed MSRV
run: cargo msrv --path crates/codspeed verify -- cargo check --all-features --config codspeed=true
- name: Check bencher_compat MSRV
run: cargo msrv --path crates/bencher_compat verify -- cargo check --all-features --config codspeed=true
- name: Check criterion_compat MSRV
run: cargo msrv --path crates/criterion_compat verify -- cargo check --all-features --config codspeed=true
- name: Check divan_compat MSRV
run: cargo msrv --path crates/divan_compat verify -- cargo check --all-features --config codspeed=true

tests-without-cargo-codspeed:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: moonrepo/setup-rust@v1
with:
bins: cargo-nextest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: cargo nextest run --workspace --exclude cargo-codspeed

test-cargo-codspeed:
runs-on: ubuntu-latest
strategy:
matrix:
partition: [1, 2, 3, 4, 5]
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: moonrepo/setup-rust@v1
with:
bins: cargo-nextest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: cargo nextest run -p cargo-codspeed --partition hash:${{ matrix.partition }}/5

compat-integration-test-instrumentation:
runs-on: ubuntu-latest
strategy:
matrix:
build-args:
- "-p codspeed"
- "-p codspeed-bencher-compat"
- "--features async_futures -p codspeed-criterion-compat"
- "-p codspeed-divan-compat"
- "-p codspeed-divan-compat-examples"
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: moonrepo/setup-rust@v1
with:
cache-target: release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- run: cargo install --path crates/cargo-codspeed --locked

- run: cargo codspeed build ${{ matrix.build-args }}

- name: Run the benchmarks
uses: CodSpeedHQ/action@main
env:
MY_ENV_VAR: "YES"
with:
run: cargo codspeed run
mode: instrumentation
token: ${{ secrets.CODSPEED_TOKEN }}

compat-integration-test-walltime:
runs-on: codspeed-macro
strategy:
matrix:
package:
- codspeed-divan-compat
- codspeed-divan-compat-examples
- codspeed-criterion-compat
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: moonrepo/setup-rust@v1
with:
cache-target: release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- run: cargo install --path crates/cargo-codspeed --locked

- run: |
# Remove the cargo config else it forces instrumentation mode
rm -f .cargo/config.toml
cargo codspeed build -p ${{ matrix.package }}

- name: Run the benchmarks
uses: CodSpeedHQ/action@main
env:
MY_ENV_VAR: "YES"
with:
run: cargo codspeed run
mode: walltime
token: ${{ secrets.CODSPEED_TOKEN }}

musl-build-check:
strategy:
matrix:
include:
- target: x86_64-unknown-linux-musl
runner: ubuntu-24.04
- target: aarch64-unknown-linux-musl
runner: codspeedhq-arm64-ubuntu-24.04

runs-on: ${{ matrix.runner }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: moonrepo/setup-rust@v1
with:
targets: ${{ matrix.target }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Install musl tools
run: sudo apt-get update && sudo apt-get install -y musl-tools

- run: cargo build --locked --release --bin cargo-codspeed --target ${{ matrix.target }}

check:
runs-on: ubuntu-latest
if: always()
needs:
- lint
- test-codspeed
- tests-without-cargo-codspeed
- test-cargo-codspeed
- msrv-check
- compat-integration-test-instrumentation
- compat-integration-test-walltime
- musl-build-check
steps:
- uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJson( needs ) }}
run: cross clean && cross build -p codspeed --target ${{ matrix.job.target }}
#
# msrv-check:
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# with:
# submodules: true
# - uses: moonrepo/setup-rust@v1
# with:
# bins: cargo-msrv
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# - name: Check cospeed MSRV
# run: cargo msrv --path crates/codspeed verify -- cargo check --all-features --config codspeed=true
# - name: Check bencher_compat MSRV
# run: cargo msrv --path crates/bencher_compat verify -- cargo check --all-features --config codspeed=true
# - name: Check criterion_compat MSRV
# run: cargo msrv --path crates/criterion_compat verify -- cargo check --all-features --config codspeed=true
# - name: Check divan_compat MSRV
# run: cargo msrv --path crates/divan_compat verify -- cargo check --all-features --config codspeed=true
#
# tests-without-cargo-codspeed:
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# with:
# submodules: true
# - uses: moonrepo/setup-rust@v1
# with:
# bins: cargo-nextest
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# - run: cargo nextest run --workspace --exclude cargo-codspeed
#
# test-cargo-codspeed:
# runs-on: ubuntu-latest
# strategy:
# matrix:
# partition: [1, 2, 3, 4, 5]
# steps:
# - uses: actions/checkout@v4
# with:
# submodules: true
# - uses: moonrepo/setup-rust@v1
# with:
# bins: cargo-nextest
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# - run: cargo nextest run -p cargo-codspeed --partition hash:${{ matrix.partition }}/5
#
# compat-integration-test-instrumentation:
# runs-on: ubuntu-latest
# strategy:
# matrix:
# build-args:
# - "-p codspeed"
# - "-p codspeed-bencher-compat"
# - "--features async_futures -p codspeed-criterion-compat"
# - "-p codspeed-divan-compat"
# - "-p codspeed-divan-compat-examples"
# steps:
# - uses: actions/checkout@v4
# with:
# submodules: true
# - uses: moonrepo/setup-rust@v1
# with:
# cache-target: release
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
#
# - run: cargo install --path crates/cargo-codspeed --locked
#
# - run: cargo codspeed build ${{ matrix.build-args }}
#
# - name: Run the benchmarks
# uses: CodSpeedHQ/action@main
# env:
# MY_ENV_VAR: "YES"
# with:
# run: cargo codspeed run
# mode: instrumentation
# token: ${{ secrets.CODSPEED_TOKEN }}
#
# compat-integration-test-walltime:
# runs-on: codspeed-macro
# strategy:
# matrix:
# package:
# - codspeed-divan-compat
# - codspeed-divan-compat-examples
# - codspeed-criterion-compat
# steps:
# - uses: actions/checkout@v4
# with:
# submodules: true
# - uses: moonrepo/setup-rust@v1
# with:
# cache-target: release
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
#
# - run: cargo install --path crates/cargo-codspeed --locked
#
# - run: |
# # Remove the cargo config else it forces instrumentation mode
# rm -f .cargo/config.toml
# cargo codspeed build -p ${{ matrix.package }}
#
# - name: Run the benchmarks
# uses: CodSpeedHQ/action@main
# env:
# MY_ENV_VAR: "YES"
# with:
# run: cargo codspeed run
# mode: walltime
# token: ${{ secrets.CODSPEED_TOKEN }}
#
# musl-build-check:
# strategy:
# matrix:
# include:
# - target: x86_64-unknown-linux-musl
# runner: ubuntu-24.04
# - target: aarch64-unknown-linux-musl
# runner: codspeedhq-arm64-ubuntu-24.04
#
# runs-on: ${{ matrix.runner }}
# steps:
# - uses: actions/checkout@v4
# with:
# submodules: true
# - uses: moonrepo/setup-rust@v1
# with:
# targets: ${{ matrix.target }}
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
#
# - name: Install musl tools
# run: sudo apt-get update && sudo apt-get install -y musl-tools
#
# - run: cargo build --locked --release --bin cargo-codspeed --target ${{ matrix.target }}
#
# check:
# runs-on: ubuntu-latest
# if: always()
# needs:
# - lint
# - test-codspeed
# - tests-without-cargo-codspeed
# - test-cargo-codspeed
# - msrv-check
# - compat-integration-test-instrumentation
# - compat-integration-test-walltime
# - musl-build-check
# steps:
# - uses: re-actors/alls-green@release/v1
# with:
# jobs: ${{ toJson( needs ) }}
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,5 @@ This mono-repo contains the integration crates for using CodSpeed in Rust:
- [`codspeed-bencher-compat`](./crates/bencher_compat/): Bencher compatibility layer for CodSpeed
- [`codspeed-divan-compat`](./crates/divan_compat/): Divan compatibility layer for CodSpeed
- [`codspeed`](./crates/codspeed/): The core library used to integrate with Codspeed runners

Test