Update CI to test with a newer Rust version #372
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
# Main "useful" actions config file | |
# Cache config comes from https://github.com/actions/cache/blob/main/examples.md#rust---cargo | |
# actions-rs/toolchain configures rustup | |
# actions-rs/cargo actually runs cargo | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
name: Rust Validation | |
env: | |
RUSTDOCFLAGS: -D warnings | |
RUSTFLAGS: -D warnings -C debuginfo=1 | |
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse | |
jobs: | |
clippy: | |
name: "Clippy (cargo clippy)" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- run: rustup default 1.78.0 && rustup component add clippy && rustup update | |
- uses: Swatinem/rust-cache@v2 | |
- run: cargo clippy --all-features --all-targets | |
- run: cargo clippy --no-default-features --all-targets | |
msrv: | |
name: "Check MSRV" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- run: rustup default 1.65.0 && rustup update | |
- uses: Swatinem/rust-cache@v2 | |
- run: cargo check --all-features --all-targets | |
- run: cargo check --no-default-features --all-targets | |
test: | |
strategy: | |
fail-fast: true | |
matrix: | |
include: | |
# - build: linux | |
# os: ubuntu-latest | |
# target: x86_64-unknown-linux-musl | |
# extension: '' | |
# - build: macos | |
# os: macos-latest | |
# target: x86_64-apple-darwin | |
# extension: '' | |
- build: windows-msvc | |
os: windows-latest | |
target: x86_64-pc-windows-msvc | |
name: "Test on ${{ matrix.os }} (cargo test)" | |
runs-on: ${{ matrix.os }} | |
env: | |
# MYSQLCLIENT_LIB_DIR: C:\mysql\lib | |
# MYSQLCLIENT_LIB_DIR: 'C:\tools\mysql\current\lib' | |
MYSQLCLIENT_LIB_DIR_x86_64-pc-windows-msvc: 'C:Program Files\MySQL\MySQL Server 8.0\lib' | |
MYSQLCLIENT_STATIC_x86_64-pc-windows-msvc: 1 | |
steps: | |
- uses: actions/checkout@v2 | |
- name: List files | |
run: | | |
pwd | |
ls | |
echo 'ls /' | |
ls / | |
echo "ls tools" | |
ls C:\tools | |
echo "ls msoidjfoijs" | |
echo $env:MYSQLCLIENT_LIB_DIR_x86_64-pc-windows-msvc | |
# echo "mysql vers"c | |
# mysql --version | |
# echo "mariadb vers" | |
# mariadb --version | |
- run: 'ls "C:Program Files\MySQL\MySQL Server 8.0\"' | |
- run: 'ls "C:Program Files\MySQL\MySQL Server 8.0\bin"' | |
- run: 'ls "C:Program Files\MySQL\MySQL Server 8.0\lib"' | |
- run: '"C:Program Files\MySQL\MySQL Server 8.0\bin\mysql" --version' | |
- run: ls $env:MYSQLCLIENT_LIB_DIR_x86_64-pc-windows-msvc | |
- if: runner.os == 'Windows' | |
run: choco install mariadb | |
# use a version later than MSRV for trybuild consistency | |
- run: rustup default 1.70 && rustup update | |
- uses: Swatinem/rust-cache@v2 | |
- run: cargo test | |
integration: | |
name: "Integration testing (docker)" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- run: rustup default stable && rustup update | |
- uses: Swatinem/rust-cache@v2 | |
- name: Cache Docker layers | |
uses: actions/cache@v2 | |
id: cache-docker | |
with: | |
path: /tmp/.buildx-cache | |
key: ${{ runner.os }}-buildx-${{ github.sha }} | |
restore-keys: | | |
${{ runner.os }}-buildx- | |
- name: Enable logging-debug-calls | |
run: | | |
perl -0777 -i -pe 's/(udf =.*features = \[)/\1"logging-debug-calls",\3/g' udf-examples/Cargo.toml | |
cat udf-examples/Cargo.toml | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Build Image | |
uses: docker/build-push-action@v3 | |
with: | |
load: true | |
tags: mdb-example-so:latest | |
file: Dockerfile.examples | |
cache-from: type=local,src=/tmp/.buildx-cache | |
cache-to: type=local,dest=/tmp/.buildx-cache-new | |
context: . | |
- # Temp fix | |
# https://github.com/docker/build-push-action/issues/252 | |
# https://github.com/moby/buildkit/issues/1896 | |
name: Move cache | |
run: | | |
rm -rf /tmp/.buildx-cache | |
mv /tmp/.buildx-cache-new /tmp/.buildx-cache | |
- name: Start docker | |
run: > | |
docker run --rm -d | |
-p 12300:3306 | |
-e MARIADB_ROOT_PASSWORD=example | |
-e RUST_LIB_BACKTRACE=1 | |
--name mdb-example-container | |
mdb-example-so | |
- name: Run integration testing | |
# Run only integration tests with `--test '*'` | |
run: cargo test -p udf-examples --test '*' --features backend | |
- name: Print docker logs | |
if: always() | |
run: | | |
docker logs mdb-example-container | |
# If any critical / debug options were printed, error out | |
docker logs mdb-example-container 2>&1 | grep -E '\[(Critical|Error)\]' || exit 0 && exit 1; | |
docker stop mdb-example-container | |
miri: | |
name: Miri | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- run: rustup default nightly && rustup component add miri && rustup update | |
- uses: Swatinem/rust-cache@v2 | |
- name: Run Miri | |
env: | |
# Can't use chrono for time in isolation | |
MIRIFLAGS: -Zmiri-disable-isolation | |
run: cargo miri test | |
fmt: | |
name: "Format (cargo fmt)" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- run: rustup default nightly && rustup component add rustfmt && rustup update | |
- uses: Swatinem/rust-cache@v2 | |
- run: cargo fmt --all -- --check | |
- uses: actions/setup-python@v3 | |
- name: Validate pre-commit | |
uses: pre-commit/action@v3.0.0 | |
doc: | |
name: "Docs (cargo doc)" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- run: rustup default nightly && rustup update | |
- uses: Swatinem/rust-cache@v2 | |
- run: cargo doc | |
outdated: | |
name: Outdated | |
runs-on: ubuntu-latest | |
if: github.event_name != 'pull_request' | |
timeout-minutes: 45 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/install@cargo-outdated | |
- uses: Swatinem/rust-cache@v2 | |
- run: cargo outdated --workspace --exit-code 1 --ignore lipsum | |
security_audit: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: rustsec/audit-check@v1.4.1 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} |