diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6df75834..af625cff 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -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/action@v3.0.1 + # with: + # extra_args: --all-files + # + # - uses: taiki-e/install-action@v2 + # with: + # tool: bindgen-cli@0.72.1 + # - 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/action@v3.0.1 - with: - extra_args: --all-files - uses: taiki-e/install-action@v2 with: - tool: bindgen-cli@0.72.1 - - name: Check if bindings are up-to-date - working-directory: crates/codspeed/src/instrument_hooks - run: | - ./update-bindings.sh + tool: cross@0.2.5 - 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 }} @@ -67,162 +87,162 @@ jobs: tool: cross@0.2.5 - 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 ) }} diff --git a/README.md b/README.md index 81187a2c..08e18e05 100644 --- a/README.md +++ b/README.md @@ -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