ci: remove the GitHub Actions workflows Buildkite replaced (#4277)

Remove all workflows that have been replaced with buildkite

We have intentionally moved slow tests (illumos, nix, windows) to be
main only. If fast runners can be found or setup, we can bring them back
again.

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ellie HuxtableandClaude Opus 5.5 authored and GitHub committed 2026-09-26 19:39:35 -07:00
1 parent 2b8631eb2f
commit c2ae7351da
15 files changed
+129 -1100

No files matched your search

+6 -5
View File
@@ -1,7 +1,8 @@
# atuin CI on Buildkite: PROTOTYPE, running alongside GitHub Actions to
# compare. Ports rust.yml (Linux + macOS; Windows and the illumos VM job
# stay on GitHub Actions for now), nix.yml, codespell.yml, shellcheck.yml,
# vale.yml, installer.yml and nightly.yml, with the same jobs and commands.
# atuin CI. Replaces the GitHub Actions workflows rust.yml (except
# Windows, which stays in .github/workflows/windows.yml until Buildkite's
# hosted Windows agents are generally available), nix.yml, codespell.yml,
# shellcheck.yml, vale.yml, installer.yml and nightly.yml, with the same
# jobs and commands.
#
# Each step sources .buildkite/scripts/toolchain.sh (rustup + pinned tools,
# and the `section` log-group helper). Caching is Buildkite Cache
@@ -161,7 +162,7 @@ steps:
# The registry key includes the OS, so macOS saves its own.
- .buildkite/scripts/cache-save.sh --name cargo_registry
# No system libssl on macOS: --all-features builds vendored OpenSSL,
# as it does on GitHub Actions.
# as the old GitHub Actions job did.
- 'section ":mag: check (all features)" cargo check --all-features --workspace'
- 'section ":mag: check (no features)" cargo check --no-default-features --workspace'
- 'section ":mag: check (sync)" cargo check --no-default-features --features sync --workspace'
-28
View File
@@ -1,28 +0,0 @@
# Depot CI Migration
# Source: .github/workflows/codespell.yml
#
# No changes were necessary.
# Codespell configuration is within .codespellrc
name: Codespell
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
contents: read
jobs:
codespell:
name: Check for spelling errors
runs-on: depot-ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Codespell
uses: codespell-project/actions-codespell@v2
with:
# This is regenerated from commit history
# we cannot rewrite commit history, and I'd rather not correct it
# every time
exclude_file: CHANGELOG.md
-36
View File
@@ -1,36 +0,0 @@
# Depot CI Migration
# Source: .github/workflows/installer.yml
#
# No changes were necessary.
name: Install
on:
push:
branches: [main]
pull_request:
paths: .github/workflows/installer.yml
env:
CARGO_TERM_COLOR: always
jobs:
install:
strategy:
matrix:
os: [depot-ubuntu-24.04, macos-14]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
- name: Install zsh for ubuntu
if: matrix.os == 'depot-ubuntu-24.04'
run: |
sudo apt install zsh
- name: Test install script on bash
run: |
/bin/bash -c "$(curl --proto '=https' --tlsv1.2 -sSf https://setup.atuin.sh)"
[ -d "$HOME/.atuin" ] && source $HOME/.atuin/bin/env
atuin --help
- name: Test install script on zsh
shell: zsh {0}
run: |
/bin/bash -c "$(curl --proto '=https' --tlsv1.2 -sSf https://setup.atuin.sh)"
[ -d "$HOME/.atuin" ] && source $HOME/.atuin/bin/env
atuin --help
-41
View File
@@ -1,41 +0,0 @@
# Depot CI Migration
# Source: .github/workflows/nix.yml
#
# No changes were necessary.
# Verify the Nix build is working
# Failures will usually occur due to an out of date Rust version
# That can be updated to the latest version in nixpkgs-unstable with `nix flake update`
name: Nix
on:
push:
branches: [main]
paths-ignore:
- 'ui/**'
pull_request:
branches: [main]
paths-ignore:
- 'ui/**'
jobs:
check:
runs-on: depot-ubuntu-24.04
steps:
- uses: actions/checkout@v6
- uses: cachix/install-nix-action@v31
- name: Run nix flake check
run: nix flake check --print-build-logs
build-test:
runs-on: depot-ubuntu-24.04
steps:
- uses: actions/checkout@v6
- uses: cachix/install-nix-action@v31
- name: Run nix build
run: nix build --print-build-logs
nixfmt:
runs-on: depot-ubuntu-24.04
steps:
- uses: actions/checkout@v6
- uses: cachix/install-nix-action@v31
# Run `nix fmt` to fix any failures here
- name: Check nix formatting
run: nix fmt -- --check $(git ls-files '*.nix')
-187
View File
@@ -1,187 +0,0 @@
# Depot CI Migration
# Source: .github/workflows/rust.yml
#
# No changes were necessary.
name: Rust
on:
push:
branches: [main]
paths-ignore:
- "ui/**"
pull_request:
branches: [main]
paths-ignore:
- "ui/**"
env:
CARGO_TERM_COLOR: always
jobs:
build:
strategy:
matrix:
os: [depot-ubuntu-24.04, macos-14, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
- name: Install rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.94.0
- uses: actions/cache@v5
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-release-${{ hashFiles('**/Cargo.lock') }}
- name: Run cargo build common
run: cargo build -p atuin-common --locked --release
- name: Run cargo build client
run: cargo build -p atuin-client --locked --release
- name: Run cargo build server
run: cargo build -p atuin-server --locked --release
- name: Run cargo build main
run: cargo build --all --locked --release
cross-compile:
strategy:
matrix:
# There was an attempt to make cross-compiles also work on FreeBSD, but that failed with:
#
# warning: libelf.so.2, needed by <...>/libkvm.so, not found (try using -rpath or -rpath-link)
target: [x86_64-unknown-illumos]
runs-on: depot-ubuntu-24.04
steps:
- uses: actions/checkout@v6
- name: Install cross
uses: taiki-e/install-action@v2
with:
tool: cross
- uses: actions/cache@v5
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ matrix.target }}-cross-compile-${{ hashFiles('**/Cargo.lock') }}
- name: Run cross build common
run: cross build -p atuin-common --locked --target ${{ matrix.target }}
- name: Run cross build client
run: cross build -p atuin-client --locked --target ${{ matrix.target }}
- name: Run cross build server
run: cross build -p atuin-server --locked --target ${{ matrix.target }}
- name: Run cross build main
run: |
cross build --all --locked --target ${{ matrix.target }}
unit-test:
strategy:
matrix:
os: [depot-ubuntu-24.04, macos-14, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
- name: Install rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.94.0
- uses: taiki-e/install-action@v2
name: Install nextest
with:
tool: cargo-nextest
- uses: actions/cache@v5
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-debug-${{ hashFiles('**/Cargo.lock') }}
- name: Run cargo test
run: cargo nextest run --lib --bins
check:
strategy:
matrix:
os: [depot-ubuntu-24.04, macos-14, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
- name: Install rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.94.0
- uses: actions/cache@v5
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-debug-${{ hashFiles('**/Cargo.lock') }}
- name: Run cargo check (all features)
run: cargo check --all-features --workspace
- name: Run cargo check (no features)
run: cargo check --no-default-features --workspace
- name: Run cargo check (sync)
run: cargo check --no-default-features --features sync --workspace
- name: Run cargo check (server)
run: cargo check -p atuin-server
- name: Run cargo check (client only)
run: cargo check --no-default-features --features client --workspace
integration-test:
runs-on: depot-ubuntu-24.04
services:
postgres:
image: postgres
env:
POSTGRES_USER: atuin
POSTGRES_PASSWORD: pass
POSTGRES_DB: atuin
ports:
- 5432:5432
steps:
- uses: actions/checkout@v6
- name: Install rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.94.0
- uses: taiki-e/install-action@v2
name: Install nextest
with:
tool: cargo-nextest
- uses: actions/cache@v5
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-debug-${{ hashFiles('**/Cargo.lock') }}
- name: Run cargo test
run: cargo nextest run --test '*'
env:
ATUIN_DB_URI: postgres://atuin:pass@localhost:5432/atuin
clippy:
runs-on: depot-ubuntu-24.04
steps:
- uses: actions/checkout@v6
- name: Install latest rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.94.0
components: clippy
- uses: actions/cache@v5
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-debug-${{ hashFiles('**/Cargo.lock') }}
- name: Run clippy
run: cargo clippy -- -D warnings -D clippy::redundant_clone
format:
runs-on: depot-ubuntu-24.04
steps:
- uses: actions/checkout@v6
- name: Install nightly rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly
components: rustfmt
- name: Format
run: cargo +nightly fmt -- --check
-20
View File
@@ -1,20 +0,0 @@
# Depot CI Migration
# Source: .github/workflows/shellcheck.yml
#
# No changes were necessary.
name: Shellcheck
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
shellcheck:
runs-on: depot-ubuntu-24.04
steps:
- uses: actions/checkout@v6
- name: Run shellcheck
uses: ludeeus/action-shellcheck@master
env:
SHELLCHECK_OPTS: "-e SC2148"
-28
View File
@@ -1,28 +0,0 @@
# Codespell configuration is within .codespellrc
---
name: Codespell
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
contents: read
jobs:
codespell:
name: Check for spelling errors
runs-on: depot-ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v7
- name: Codespell
uses: codespell-project/actions-codespell@v2.2
with:
# This is regenerated from commit history
# we cannot rewrite commit history, and I'd rather not correct it
# every time
exclude_file: CHANGELOG.md
-38
View File
@@ -1,38 +0,0 @@
name: Install
on:
push:
branches: [main]
pull_request:
paths: .github/workflows/installer.yml
env:
CARGO_TERM_COLOR: always
jobs:
install:
strategy:
matrix:
os: [depot-ubuntu-24.04, depot-macos-26]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v7
- name: Install zsh for ubuntu
if: matrix.os == 'depot-ubuntu-24.04'
run: |
sudo apt install zsh
- name: Test install script on bash
run: |
/bin/bash -c "$(curl --proto '=https' --tlsv1.2 -sSf https://setup.atuin.sh)"
[ -d "$HOME/.atuin" ] && source $HOME/.atuin/bin/env
atuin --help
- name: Test install script on zsh
shell: zsh {0}
run: |
/bin/bash -c "$(curl --proto '=https' --tlsv1.2 -sSf https://setup.atuin.sh)"
[ -d "$HOME/.atuin" ] && source $HOME/.atuin/bin/env
atuin --help
-45
View File
@@ -1,45 +0,0 @@
name: Nightly
on:
schedule:
- cron: "0 10 * * *"
workflow_dispatch: {}
env:
CARGO_TERM_COLOR: always
jobs:
nightly-tests:
runs-on: depot-ubuntu-24.04
timeout-minutes: 60
steps:
- uses: actions/checkout@v7
- name: Install OpenSSL dev libraries (Linux)
if: runner.os == 'Linux'
uses: awalsh128/cache-apt-pkgs-action@v1.6.3
with:
packages: libssl-dev pkg-config
version: 1.0
- name: Install rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.98.0
- uses: taiki-e/install-action@v2
name: Install nextest
with:
tool: cargo-nextest
- uses: actions/cache@v6
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-debug-${{ hashFiles('**/Cargo.lock', 'Cargo.toml') }}
- name: Run nightly tests
run: cargo nextest run -p atuin-daemon --test nightly --run-ignored all
-48
View File
@@ -1,48 +0,0 @@
# Verify the Nix build is working
# Failures will usually occur due to an out of date Rust version
# That can be updated to the latest version in nixpkgs-unstable with `nix flake update`
name: Nix
on:
push:
branches: [ main ]
paths-ignore:
- 'ui/**'
pull_request:
branches: [ main ]
paths-ignore:
- 'ui/**'
jobs:
check:
runs-on: depot-ubuntu-24.04
steps:
- uses: actions/checkout@v7
- uses: cachix/install-nix-action@v31
- name: Run nix flake check
run: nix flake check --print-build-logs
build-test:
runs-on: depot-ubuntu-24.04
steps:
- uses: actions/checkout@v7
- uses: cachix/install-nix-action@v31
- name: Run nix build
run: nix build --print-build-logs
- name: Check the built binary runs
run: ./result/bin/atuin --version
nixfmt:
runs-on: depot-ubuntu-24.04
steps:
- uses: actions/checkout@v7
- uses: cachix/install-nix-action@v31
# Run `nix fmt` to fix any failures here
- name: Check nix formatting
run: nix fmt -- --ci
-574
View File
@@ -1,574 +0,0 @@
name: Rust
on:
push:
branches: [main]
paths-ignore:
- "ui/**"
pull_request:
branches: [main]
paths-ignore:
- "ui/**"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
jobs:
# The one full release build. Platform-specific compile errors are caught by
# unit-test's debug builds on every OS, release-profile breakage is
# platform-independent (the check job type-checks the profile everywhere),
# and release.yml builds every target for real. Windows spent ~5 min on two
# serial crates here and macOS ~3 min of scarce runner capacity for nothing.
build:
runs-on: depot-ubuntu-24.04-8
env:
# This job only proves the release profile compiles; nothing it builds is
# shipped (release.yml uses the `dist` profile, which sets lto = "fat"
# explicitly). Skip the default thin-local LTO pass on the final binary.
CARGO_PROFILE_RELEASE_LTO: "off"
# Experiment: the two crates that dominate this job (atuin, atuin-daemon)
# leave most cores idle with the default 16 codegen units; more, smaller
# units let LLVM spread them out. Drop if the timings don't improve.
CARGO_PROFILE_RELEASE_CODEGEN_UNITS: "256"
# sccache serves compiled objects from Depot's managed WebDAV cache; keep
# incremental off (sccache can't cache incremental compilations).
RUSTC_WRAPPER: sccache
CARGO_INCREMENTAL: "0"
steps:
- uses: actions/checkout@v7
- name: Install OpenSSL dev libraries
uses: awalsh128/cache-apt-pkgs-action@v1.6.3
with:
packages: libssl-dev pkg-config
version: 1.0
- name: Install rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.98.0
# rust-cache restores a warm, bounded target/ so cargo skips unchanged
# crates; sccache (RUSTC_WRAPPER, env) then serves the crates that DO
# compile -- cold, new-branch, or changed -- from Depot's cross-branch
# WebDAV cache. rust-cache also caches ~/.cargo and cleans stale target/
# artifacts, so the disk stays bounded.
- uses: mozilla-actions/sccache-action@v0.0.9
- uses: Swatinem/rust-cache@v2
with:
key: build
- name: Run cargo build (release)
run: cargo build --workspace --locked --release
- name: sccache stats
if: ${{ always() }}
run: sccache --show-stats
# This used to use cross compilling via `cross` but it's more reliable to just
# run this on a real illumos (OmniOS) system.
test-in-vm:
name: Test in VM (illumos)
runs-on: ubuntu-latest
timeout-minutes: 25
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Test on illumos
uses: vmactions/omnios-vm@317e4f8069dad8a65e1520808f1a68ef3fd20565 # v1.3.6
with:
# use the latest omnios LTS
release: "r151054-build"
envs: "CARGO_TERM_COLOR"
usesh: true
mem: 4096
copyback: false
prepare: |
pkg install pkg-config openssl
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.98.0
run: |
. "$HOME/.cargo/env"
banner client
cargo build -p atuin-client --locked --release
banner server
cargo build -p atuin-server --locked --release
unit-test:
strategy:
matrix:
os: [depot-ubuntu-24.04-8, depot-macos-26, depot-windows-2025-16]
runs-on: ${{ matrix.os }}
env:
# sccache serves compiled objects from Depot's managed WebDAV cache; keep
# incremental off (sccache can't cache incremental compilations).
RUSTC_WRAPPER: sccache
CARGO_INCREMENTAL: "0"
steps:
- uses: actions/checkout@v7
- name: Install OpenSSL dev libraries (Linux)
if: runner.os == 'Linux'
uses: awalsh128/cache-apt-pkgs-action@v1.6.3
with:
packages: libssl-dev pkg-config
version: 1.0
- name: Install rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.98.0
- uses: taiki-e/install-action@v2
name: Install nextest
with:
tool: cargo-nextest
# rust-cache (warm target skip) + sccache (serves compiled crates from
# Depot's cross-branch cache); see the build job.
- uses: mozilla-actions/sccache-action@v0.0.9
- uses: Swatinem/rust-cache@v2
with:
key: unit-test
- name: Run cargo test
run: cargo nextest run --lib --bins
- name: sccache stats
if: ${{ always() }}
run: sccache --show-stats
- name: Show new proptest regressions
if: ${{ failure() }}
shell: bash
run: |
echo "::group::proptest regression files changed by this run"
echo "A proptest failure appends a 'cc <seed>' line to a regression file."
echo "New/changed regression files (download the artifact below to reproduce):"
git add -N -- '*proptest-regressions*' || true
git status --porcelain
git --no-pager diff
echo "::endgroup::"
- name: Upload proptest regressions
if: ${{ failure() }}
uses: actions/upload-artifact@v7
with:
name: proptest-regressions-unit-${{ matrix.os }}
path: |
**/proptest-regressions/**
**/*.proptest-regressions
if-no-files-found: ignore
retention-days: 14
check:
strategy:
matrix:
os: [depot-ubuntu-24.04, depot-macos-26, depot-windows-2025-16]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v7
- name: Install OpenSSL dev libraries (Linux)
if: runner.os == 'Linux'
uses: awalsh128/cache-apt-pkgs-action@v1.6.3
with:
packages: libssl-dev pkg-config
version: 1.0
- name: Install rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.98.0
# rust-cache (not sccache) for check/msrv/clippy/docs: these emit metadata
# only (no link), which sccache refuses to cache, so sccache gives 0 hits
# here. rust-cache instead bounds target/ growth (it cleans stale
# artifacts before each save) and keeps these jobs warm.
- uses: Swatinem/rust-cache@v2
with:
key: check
- name: Run cargo check (all features)
run: cargo check --all-features --workspace
env:
# --all-features enables vendored-tls, which compiles OpenSSL from
# source. Type-checking doesn't need that; link against the system
# libssl where one is installed (Linux only). openssl-sys treats any
# value other than "0" as "don't vendor".
OPENSSL_NO_VENDOR: ${{ runner.os == 'Linux' && '1' || '0' }}
- name: Run cargo check (no features)
run: cargo check --no-default-features --workspace
- name: Run cargo check (sync)
run: cargo check --no-default-features --features sync --workspace
- name: Run cargo check (server)
run: cargo check -p atuin-server
- name: Run cargo check (client only)
run: cargo check --no-default-features --features client --workspace
- name: Run cargo check (release profile)
run: cargo check --workspace --locked --release
msrv:
name: MSRV (1.95.0)
runs-on: depot-ubuntu-24.04
steps:
- uses: actions/checkout@v7
- name: Install OpenSSL dev libraries (Linux)
if: runner.os == 'Linux'
uses: awalsh128/cache-apt-pkgs-action@v1.6.3
with:
packages: libssl-dev pkg-config
version: 1.0
- name: Install MSRV rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.95.0
# rust-cache (see check job): sccache can't cache metadata-only builds.
- uses: Swatinem/rust-cache@v2
with:
key: msrv
# Verifies the declared MSRV (workspace.package.rust-version) still holds
# with all features enabled. --all-features isn't a strict superset (it
# skips `cfg(not(feature))` and no-default-features paths), but atuin's
# features are additive, so this catches MSRV regressions cheaply.
- name: Check MSRV (all features)
# rust-toolchain.toml pins the dev toolchain and outranks dtolnay's
# `rustup default`, so force the MSRV toolchain explicitly here.
env:
RUSTUP_TOOLCHAIN: 1.95.0
run: cargo check --locked --workspace --all-features
integration-test:
# Bumped from -8 to -16 for root-disk headroom (150 GB -> 180 GB) against the
# intermittent runner-crash ENOSPC (the runner worker died writing its diag
# log to a full root fs), plus 2x CPU (faster) and 2x RAM (larger /dev/shm
# safety margin).
runs-on: depot-ubuntu-24.04-16
services:
postgres:
image: postgres
env:
POSTGRES_USER: atuin
POSTGRES_PASSWORD: pass
POSTGRES_DB: atuin
ports:
- 5432:5432
steps:
- uses: actions/checkout@v7
- name: Install OpenSSL dev libraries (Linux)
if: runner.os == 'Linux'
uses: awalsh128/cache-apt-pkgs-action@v1.6.3
with:
packages: libssl-dev pkg-config
version: 1.0
- name: Install rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.98.0
- uses: taiki-e/install-action@v2
name: Install nextest
with:
tool: cargo-nextest
# rust-cache (warm target skip) + sccache (serves compiled crates from
# Depot's cross-branch cache); see the build job. rust-cache cleans stale
# target/ artifacts, so it can't re-accrete the 71 GB that once crashed
# the runner with ENOSPC.
- uses: mozilla-actions/sccache-action@v0.0.9
- uses: Swatinem/rust-cache@v2
with:
key: integration-test
- name: Report disk space (after cache restore)
# Telemetry for the intermittent "No space left on device" runner crash.
# The one confirmed ENOSPC (run 35642513172) killed the runner worker as
# it wrote its own diag log to the ROOT fs (/home/runner/*), leaving no
# job log -- so record free space per mount here, where it survives in
# the step log, plus the restored cache size (the run-to-run variable).
continue-on-error: true
run: |
df -h
df -h /dev/shm
timeout 30 du -sh ~/.cargo/registry ~/.cargo/git target 2>/dev/null || true
- name: Run cargo test
# E2e tests have a separate job with shell dependencies.
run: |
# Background disk sampler: the confirmed crash killed the runner worker
# mid-test, so an after-the-fact step can't capture the fill. This
# streams free space to the live step log every 2 s; the last line
# before a crash tells us which mount hit 0 (root / vs /dev/shm).
( while true; do echo "[diskwatch] $(df -P / /dev/shm | awk 'NR>1{print $6"="$4"KB-free"}' | tr '\n' ' ')"; sleep 2; done ) &
watcher=$!
trap 'kill "$watcher" 2>/dev/null || true' EXIT
cargo nextest run --test '*' -E 'not binary(/e2e_.*/)'
env:
ATUIN_DB_URI: postgres://atuin:pass@localhost:5432/atuin
# Test databases live in tempdirs. With 8 tests writing SQLite WALs
# at once the runner disk stalls for seconds and unrelated tests miss
# their 5 s pool-open timeout; tmpfs takes fsync out of the picture.
TMPDIR: /dev/shm
# sccache: wrap rustc + disable incremental (sccache cannot cache
# incremental compilation). Endpoint/auth for Depot Cache come from
# the runner's pre-injected SCCACHE_WEBDAV_* env.
RUSTC_WRAPPER: sccache
CARGO_INCREMENTAL: "0"
- name: sccache stats (hit rate)
if: ${{ always() }}
run: sccache --show-stats
- name: Show new proptest regressions
if: ${{ failure() }}
shell: bash
run: |
echo "::group::proptest regression files changed by this run"
echo "A proptest failure appends a 'cc <seed>' line to a regression file."
echo "New/changed regression files (download the artifact below to reproduce):"
git add -N -- '*proptest-regressions*' || true
git status --porcelain
git --no-pager diff
echo "::endgroup::"
- name: Upload proptest regressions
if: ${{ failure() }}
uses: actions/upload-artifact@v7
with:
name: proptest-regressions-integration
path: |
**/proptest-regressions/**
**/*.proptest-regressions
if-no-files-found: ignore
retention-days: 14
e2e:
name: e2e (${{ matrix.os }})
strategy:
fail-fast: false
matrix:
os: [depot-ubuntu-24.04, depot-macos-26]
runs-on: ${{ matrix.os }}
env:
# sccache serves compiled objects from Depot's managed WebDAV cache; keep
# incremental off (sccache can't cache incremental compilations).
RUSTC_WRAPPER: sccache
CARGO_INCREMENTAL: "0"
steps:
- uses: actions/checkout@v7
- name: Install OpenSSL dev libraries (Linux)
if: runner.os == 'Linux'
uses: awalsh128/cache-apt-pkgs-action@v1.6.3
with:
packages: libssl-dev pkg-config
version: 1.0
- name: Install shells (Linux)
if: runner.os == 'Linux'
run: sudo apt-get update -qq && sudo apt-get install -y -qq zsh fish
- name: Install shells (macOS)
if: runner.os == 'macOS'
run: brew install bash fish
- name: Select Homebrew Bash (macOS)
if: runner.os == 'macOS'
run: |
echo "ATUIN_E2E_BASH=$(brew --prefix bash)/bin/bash" >> "$GITHUB_ENV"
- name: Install ble.sh
run: |
mkdir -p "$HOME/.local/share"
curl -fsSL https://github.com/akinomyoga/ble.sh/releases/download/v0.4.0-devel3/ble-0.4.0-devel3.tar.xz | tar xJ -C "$HOME/.local/share"
mv "$HOME/.local/share/ble-0.4.0-devel3" "$HOME/.local/share/blesh"
- name: Install rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.98.0
- uses: taiki-e/install-action@v2
name: Install nextest
with:
tool: cargo-nextest
# rust-cache (warm target skip) + sccache (serves compiled crates from
# Depot's cross-branch cache); see the build job.
- uses: mozilla-actions/sccache-action@v0.0.9
- uses: Swatinem/rust-cache@v2
with:
key: e2e
- name: Run fresh-install and PTY e2e tests
run: cargo nextest run -p atuin --test 'e2e_*'
env:
ATUIN_E2E_REQUIRE_SHELLS: "1"
- name: sccache stats
if: ${{ always() }}
run: sccache --show-stats
clippy:
runs-on: depot-ubuntu-24.04
steps:
- uses: actions/checkout@v7
- name: Install OpenSSL dev libraries (Linux)
if: runner.os == 'Linux'
uses: awalsh128/cache-apt-pkgs-action@v1.6.3
with:
packages: libssl-dev pkg-config
version: 1.0
- name: Install latest rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.98.0
components: clippy
# rust-cache (see check job): sccache can't cache clippy's metadata builds.
- uses: Swatinem/rust-cache@v2
with:
key: clippy
- name: Run clippy
run: cargo clippy -- -D warnings
- name: Run clippy (tests)
run: cargo clippy --tests -- -D warnings
docs:
runs-on: depot-ubuntu-24.04
steps:
- uses: actions/checkout@v7
- name: Install OpenSSL dev libraries (Linux)
if: runner.os == 'Linux'
uses: awalsh128/cache-apt-pkgs-action@v1.6.3
with:
packages: libssl-dev pkg-config
version: 1.0
- name: Install rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.98.0
# rust-cache (see check job): sccache doesn't wrap rustdoc.
- uses: Swatinem/rust-cache@v2
with:
key: doc
- name: Run cargo doc
run: cargo doc --document-private-items --no-deps --workspace
env:
RUSTDOCFLAGS: -D warnings
format:
runs-on: depot-ubuntu-24.04
steps:
- uses: actions/checkout@v7
- name: Install nightly rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly
components: rustfmt
- name: Format
run: cargo +nightly fmt -- --check
deny:
runs-on: depot-ubuntu-24.04
steps:
- uses: actions/checkout@v7
- uses: EmbarkStudios/cargo-deny-action@v2
with:
command: check
# atuin-common is a library crate; enforce (crate-scoped) that it never
# (re)adds eyre or anyhow. Config: crates/atuin-common/deny.toml
- uses: EmbarkStudios/cargo-deny-action@v2
with:
manifest-path: crates/atuin-common/Cargo.toml
command: check bans
# atuin-history is a library crate; enforce (crate-scoped) that it never
# (re)adds eyre or anyhow. Config: crates/atuin-history/deny.toml
- uses: EmbarkStudios/cargo-deny-action@v2
with:
manifest-path: crates/atuin-history/Cargo.toml
command: check bans
# atuin-domain is a library crate; enforce (crate-scoped) that it never
# (re)adds eyre or anyhow. Config: crates/atuin-domain/deny.toml
- uses: EmbarkStudios/cargo-deny-action@v2
with:
manifest-path: crates/atuin-domain/Cargo.toml
command: check bans
# atuin-pty-proxy is a library crate; enforce (crate-scoped) that it
# never (re)adds eyre or anyhow. Config: crates/atuin-pty-proxy/deny.toml
- uses: EmbarkStudios/cargo-deny-action@v2
with:
manifest-path: crates/atuin-pty-proxy/Cargo.toml
command: check bans
package:
runs-on: depot-ubuntu-24.04
steps:
- uses: actions/checkout@v7
- name: Install rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.98.0
# rust-cache (see check job): bounds target/ growth for the verify build.
- uses: Swatinem/rust-cache@v2
with:
key: package
- name: Build packaged tarballs
run: |
rm -rf ~/.cargo/registry/{cache,src}/*/atuin*
rm -rf target/package
rm -rf target/{debug,release}/libatuin*.rlib
rm -rf target/{debug,release}/deps/libatuin*
rm -rf target/{debug,release}/.fingerprint/atuin*
cargo package --workspace
-18
View File
@@ -1,18 +0,0 @@
name: Shellcheck
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
shellcheck:
runs-on: depot-ubuntu-24.04
steps:
- uses: actions/checkout@v7
- name: Run shellcheck
uses: ludeeus/action-shellcheck@2.0.0
env:
SHELLCHECK_OPTS: "-e SC2148"
-31
View File
@@ -1,31 +0,0 @@
name: Vale
on:
pull_request:
branches: [main]
paths:
- "docs/docs/**"
- ".vale.ini"
- ".vale/styles/config/**"
- ".github/workflows/vale.yml"
permissions:
contents: read
pull-requests: read
jobs:
vale:
name: Lint docs prose
runs-on: depot-ubuntu-24.04
steps:
- uses: actions/checkout@v7
- uses: vale-cli/vale-action@v3.0.0
with:
version: "3.15.2"
files: docs/docs
filter_mode: nofilter
fail_on_error: true
level: warning
vale_flags: "--minAlertLevel=warning"
+122
View File
@@ -0,0 +1,122 @@
name: Windows
# The rest of CI runs on Buildkite (.buildkite/pipeline.yml). Windows stays
# here until Buildkite's hosted Windows agents are generally available.
on:
push:
branches: [main]
paths-ignore:
- "ui/**"
pull_request:
branches: [main]
paths-ignore:
- "ui/**"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
jobs:
unit-test:
strategy:
matrix:
os: [depot-windows-2025-16]
runs-on: ${{ matrix.os }}
env:
# sccache serves compiled objects from Depot's managed WebDAV cache; keep
# incremental off (sccache can't cache incremental compilations).
RUSTC_WRAPPER: sccache
CARGO_INCREMENTAL: "0"
steps:
- uses: actions/checkout@v7
- name: Install rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.98.0
- uses: taiki-e/install-action@v2
name: Install nextest
with:
tool: cargo-nextest
# rust-cache (warm target skip) + sccache (serves compiled crates from
# Depot's cross-branch cache).
- uses: mozilla-actions/sccache-action@v0.0.9
- uses: Swatinem/rust-cache@v2
with:
key: unit-test
- name: Run cargo test
run: cargo nextest run --lib --bins
- name: sccache stats
if: ${{ always() }}
run: sccache --show-stats
- name: Show new proptest regressions
if: ${{ failure() }}
shell: bash
run: |
echo "::group::proptest regression files changed by this run"
echo "A proptest failure appends a 'cc <seed>' line to a regression file."
echo "New/changed regression files (download the artifact below to reproduce):"
git add -N -- '*proptest-regressions*' || true
git status --porcelain
git --no-pager diff
echo "::endgroup::"
- name: Upload proptest regressions
if: ${{ failure() }}
uses: actions/upload-artifact@v7
with:
name: proptest-regressions-unit-${{ matrix.os }}
path: |
**/proptest-regressions/**
**/*.proptest-regressions
if-no-files-found: ignore
retention-days: 14
check:
strategy:
matrix:
os: [depot-windows-2025-16]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v7
- name: Install rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.98.0
# rust-cache, not sccache: check emits metadata only (no link), which
# sccache refuses to cache.
- uses: Swatinem/rust-cache@v2
with:
key: check
- name: Run cargo check (all features)
run: cargo check --all-features --workspace
- name: Run cargo check (no features)
run: cargo check --no-default-features --workspace
- name: Run cargo check (sync)
run: cargo check --no-default-features --features sync --workspace
- name: Run cargo check (server)
run: cargo check -p atuin-server
- name: Run cargo check (client only)
run: cargo check --no-default-features --features client --workspace
- name: Run cargo check (release profile)
run: cargo check --workspace --locked --release
+1 -1
View File
@@ -12,7 +12,7 @@
<hr/>
<p align="center">
<a href="https://github.com/atuinsh/atuin/actions?query=workflow%3ARust"><img src="https://img.shields.io/github/actions/workflow/status/atuinsh/atuin/rust.yml?style=flat-square" /></a>
<a href="https://buildkite.com/atuin/atuin"><img src="https://badge.buildkite.com/6213f2ad159947780451bdc7fca76c8a8a0be3d3bca66b8a6d.svg?branch=main" /></a>
<a href="https://crates.io/crates/atuin"><img src="https://img.shields.io/crates/v/atuin.svg?style=flat-square" /></a>
<a href="https://crates.io/crates/atuin"><img src="https://img.shields.io/crates/d/atuin.svg?style=flat-square" /></a>
<a href="https://github.com/atuinsh/atuin/blob/main/LICENSE"><img src="https://img.shields.io/crates/l/atuin.svg?style=flat-square" /></a>