Luigit
repositories / smith

smith

There are many coding harnesses - but this one is fast

owned by admin

.ci/nightly.kdl

Raw
job "nightly" {
  image "docker.io/library/rust:latest"
  trigger {
    schedule "0 3 * * *"
  }
  // Children run in order; successful stages save caches for the next.
  matrix {
    phase "bootstrap" "0" "1" "2" "3" "4" "5" "6" "7" "report" "verdict"
  }
  cache "cargo-home" {
    path ".cargo-home"
    key {
      file "Cargo.lock"
    }
  }
  cache "target" {
    path "target"
    key {
      file "Cargo.lock"
    }
  }
  cache "valgrind" {
    path "target/tools/valgrind"
    key {
      file ".ci/nightly.kdl"
    }
  }
  run "export CARGO_HOME=\"$PWD/.cargo-home\" PATH=\"$PWD/.cargo-home/bin:$PATH\""
  run "rustup target add wasm32-wasip2"
  run "rustup component add llvm-tools"
  run "V=$PWD/target/tools/valgrind; test -x $V/bin/valgrind || (mkdir -p target/tools/src && curl -sSL https://sourceware.org/pub/valgrind/valgrind-3.25.1.tar.bz2 | tar -xj -C target/tools/src && cd target/tools/src/valgrind-3.25.1 && ./configure -q --prefix=$V >/dev/null && make -s -j$(nproc) >/dev/null && make -s install >/dev/null)"
  // Bootstrap owns tools, baseline tests, Miri; shards defer only findings.
  // Report publishes before verdict fails the parent on missed/timeouts.
  run "PATH=$PWD/target/tools/valgrind/bin:$PATH cargo run --locked -p xtask -- nightly ${phase}"
  artifact "mutation-summary" {
    path "target/nightly-summary"
    after-failure true
  }
  publish "site" {
    from "target/nightly/${phase}"
    to "smith/nightly/${rev}/${phase}"
  }
}