Skip to content

begin next development iteration #1043

begin next development iteration

begin next development iteration #1043

Workflow file for this run

name: cargo-build
on:
push:
pull_request:
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: full
jobs:
# First stage: these are quick jobs that give immediate feedback on a PR.
check:
name: check-${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ ubuntu-latest, macos-latest ]
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-rust
- uses: Swatinem/rust-cache@v2
with:
shared-key: check-${{ matrix.os }}
- name: cargo check
run: |
cargo check --all-targets
check-powerset:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-rust
- uses: Swatinem/rust-cache@v2
- uses: swlynch99/cargo-sweep-action@v1
- uses: taiki-e/install-action@cargo-hack
- name: check powerset
run: |
cargo hack --feature-powerset check --locked
clippy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-rust
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@v2
with:
tool: clippy-sarif,sarif-fmt
- name: run clippy
run: |
cargo clippy --all-targets --all-features --message-format json \
| clippy-sarif \
| tee clippy.sarif \
| sarif-fmt
shell: bash
continue-on-error: true
- uses: actions/upload-artifact@v3
with:
name: clippy-sarif
path: clippy.sarif
clippy-upload:
runs-on: ubuntu-latest
needs: [ clippy ]
permissions:
security-events: write
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v3
with:
name: clippy-sarif
- uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: clippy.sarif
audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-rust
- uses: Swatinem/rust-cache@v2
with:
shared-key: check-ubuntu-latest
save-if: false
- name: install cargo-audit
run: cargo install cargo-audit
- run: |
cargo audit
rustfmt:
name: rustfmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-rust
- name: cargo fmt
shell: bash
run: |
cargo fmt --all -- --check
# Second group of checks: These are more expensive than the first set so we
# gate them on the check action succeeding.
build:
name: build-${{ matrix.os }}-${{ matrix.profile }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ ubuntu-latest, macos-latest ]
profile: [ release, debug ]
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/setup-rust
- uses: Swatinem/rust-cache@v2
with:
shared-key: build-${{ matrix.os }}-${{ matrix.profile }}
- name: Update cargo flags
if: ${{ matrix.profile == 'release' }}
run: echo 'FLAGS=--release' >> $GITHUB_ENV
shell: bash
- name: Update cargo flags
if: ${{ matrix.profile == 'debug' }}
run: echo 'FLAGS=' >> $GITHUB_ENV
shell: bash
- name: build
shell: bash
run: |
cargo build --workspace --all-targets --locked ${{ env.FLAGS }}
- name: test
shell: bash
run: |
cargo test --workspace --tests --bins --locked ${{ env.FLAGS }}
- name: doctests
if: ${{ matrix.profile == 'debug' }}
shell: bash
run: |
cargo test --workspace --locked -- --test-threads 16
- name: generate bin artifact
if: ${{ matrix.profile == 'release' && matrix.os == 'ubuntu-latest' }}
shell: bash
run: |
mkdir install
cp target/release/rpc-perf install
- uses: actions/upload-artifact@v3
if: ${{ matrix.profile == 'release' && matrix.os == 'ubuntu-latest' }}
with:
name: binaries
path: install
# Smoke tests are even more expensive, so they run last.
smoketest-cache:
name: smoketest-cache
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/setup-rust
- uses: Swatinem/rust-cache@v2
with:
shared-key: smoketest-ubuntu-latest
- name: install memcached
shell: bash
run: |
sudo apt-get update
sudo apt-get install memcached
- name: build
shell: bash
run: |
cargo build --workspace --all-targets --locked --release
- name: test
shell: bash
run: |
memcached -t 1 -p 11211 -m 256 &
target/release/rpc-perf configs/smoketest-cache.toml
smoketest-oltp:
name: smoketest-oltp
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/setup-rust
- uses: Swatinem/rust-cache@v2
with:
shared-key: smoketest-ubuntu-latest
- name: build
shell: bash
run: |
cargo build --workspace --all-targets --locked --release
- name: start mysql
shell: bash
run: |
sudo systemctl start mysql
- name: install sysbench
shell: bash
run: |
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | sudo bash
sudo apt -y install sysbench
- name: configure sysbench
shell: bash
run: |
echo "mysql-user=root" >> sysbench.config
echo "mysql-password=root" >> sysbench.config
echo "time=60" >> sysbench.config
echo "db-driver=mysql" >> sysbench.config
- name: prepare database
shell: bash
run: |
mysql --user=root --password=root -e "create database sbtest";
sysbench --config-file=sysbench.config oltp_point_select --tables=1 --table-size=100000 prepare
- name: warmup database
shell: bash
run: |
sysbench --config-file=sysbench.config oltp_point_select --tables=1 --table-size=100000 prewarm
- name: test
shell: bash
run: |
target/release/rpc-perf configs/smoketest-oltp.toml
check-success:
name: verify all tests pass
runs-on: ubuntu-latest
needs:
- build
- check
- rustfmt
- clippy
- clippy-upload
- audit
- smoketest-cache
- smoketest-oltp
steps:
- name: no-op
run: |
echo "All checks passed!"