Typed catchers #1881
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
name: CI | |
on: [push, pull_request] | |
env: | |
CARGO_TERM_COLOR: always | |
jobs: | |
test: | |
name: "${{ matrix.platform.name }} ${{ matrix.test.name }} (${{ matrix.platform.toolchain }})" | |
runs-on: ${{ matrix.platform.distro }} | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- { name: Linux, distro: ubuntu-latest, toolchain: stable } | |
- { name: Windows, distro: windows-latest, toolchain: stable } | |
- { name: macOS, distro: macOS-latest, toolchain: stable } | |
- { name: Linux, distro: ubuntu-latest, toolchain: nightly } | |
test: | |
- { name: Debug } | |
- { name: Examples, flag: "--examples" } | |
- { name: Contrib, flag: "--contrib" } | |
include: | |
# Additional tests on Linux/stable. | |
- platform: { name: Linux, distro: ubuntu-latest, toolchain: stable } | |
test: { name: Core, flag: "--core" } | |
- platform: { name: Linux, distro: ubuntu-latest, toolchain: stable } | |
test: { name: Release, flag: "--release" } | |
- platform: { name: Linux, distro: ubuntu-latest, toolchain: stable } | |
test: { name: Testbench, flag: "--testbench" } | |
- platform: { name: Linux, distro: ubuntu-latest, toolchain: stable } | |
test: { name: UI, flag: "--ui" } | |
fallible: true | |
# Allow tests on nightly to fail. | |
- platform: { toolchain: nightly } | |
fallible: true | |
# Use the bigger 'C:/' from the "Switch Disk" step | |
- platform: { name: Windows } | |
working-directory: | |
"C:\\a\\${{ github.event.repository.name }}\\${{ github.event.repository.name }}" | |
steps: | |
- name: Checkout Sources | |
uses: actions/checkout@v4 | |
- name: Free Disk Space (Linux) | |
if: matrix.platform.name == 'Linux' | |
run: | | |
echo "Freeing up disk space on Linux CI" | |
df -h | |
sudo rm -rf /usr/share/dotnet/ | |
sudo rm -rf /opt/ghc | |
sudo rm -rf /usr/local/share/boost | |
sudo rm -rf /usr/local/graalvm/ | |
sudo rm -rf /usr/local/.ghcup/ | |
sudo rm -rf /usr/local/share/powershell | |
sudo rm -rf /usr/local/share/chromium | |
sudo rm -rf /usr/local/lib/android | |
sudo rm -rf /usr/local/lib/node_modules | |
sudo rm -rf "$AGENT_TOOLSDIRECTORY" | |
sudo docker image prune --all --force | |
df -h | |
- name: Install Native Dependencies (macOS) | |
if: matrix.platform.name == 'macOS' | |
run: | | |
brew install mysql-client@8.4 libpq sqlite coreutils | |
brew link --force --overwrite mysql-client@8.4 | |
brew link --force --overwrite libpq | |
echo "/usr/local/opt/mysql-client/bin" >> "$GITHUB_PATH" | |
# vcpkg --triplet x64-windows install libmysql libpq sqlite3 openssl | |
# + vcpkg/installed/vcpkg (in particular, the status file) | |
- name: Install Native Dependencies (Windows) | |
if: matrix.platform.name == 'Windows' | |
run: | | |
curl -fsLS -o vcpkg.7z https://blob.rocket.rs/vcpkg-2024-08-16.7z | |
7z x vcpkg.7z -y -bb0 | |
xcopy .\vcpkg $env:VCPKG_INSTALLATION_ROOT /s /e /h /y /q | |
vcpkg integrate install | |
echo "VCPKGRS_DYNAMIC=1" >> "$env:GITHUB_ENV" | |
echo "VCPKG_ROOT=$env:VCPKG_INSTALLATION_ROOT" >> "$env:GITHUB_ENV" | |
echo "$env:VCPKG_INSTALLATION_ROOT\installed\x64-windows\lib" >> "$env:GITHUB_PATH" | |
echo "MYSQLCLIENT_VERSION=8.0.39" >> "$env:GITHUB_ENV" | |
- name: Install NASM (Windows) | |
if: matrix.platform.name == 'Windows' | |
uses: ilammy/setup-nasm@v1 | |
- name: Install Native Dependencies (Linux) | |
if: matrix.platform.name == 'Linux' | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libmysqlclient-dev libpq-dev libsqlite3-dev | |
- name: Install Rust | |
uses: dtolnay/rust-toolchain@master | |
id: toolchain | |
with: | |
toolchain: ${{ matrix.platform.toolchain }} | |
components: rust-src | |
- name: Cache Example Workspace | |
if: matrix.test.name == 'Examples' | |
uses: Swatinem/rust-cache@v2 | |
with: | |
workspaces: examples | |
key: ${{ matrix.test.name }}-${{ steps.toolchain.outputs.cachekey }} | |
- name: Cache Root Workspace | |
if: matrix.test.name != 'Examples' | |
uses: Swatinem/rust-cache@v2 | |
with: | |
key: ${{ matrix.test.name }}-${{ steps.toolchain.outputs.cachekey }} | |
# Don't run out of disk space on Windows. C: has much much space than D:. | |
- name: Switch Disk (Windows) | |
if: matrix.platform.name == 'Windows' | |
run: | | |
Get-PSDrive | |
cp D:\a C:\ -Recurse | |
Get-PSDrive | |
- name: Run Tests | |
continue-on-error: ${{ matrix.fallible || false }} | |
working-directory: ${{ matrix.working-directory || github.workspace }} | |
run: ./scripts/test.sh ${{ matrix.test.flag || '' }} -q | |
shell: bash |