1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
name: nightly
# Catches feature-flag breakage that workspace feature unification can mask;
# see #2442 for the v0.45.0 incident that motivated this.
#
# Runs daily and can be triggered manually. Not wired to push or pull_request —
# this is a slow check that addresses a class of bug that only matters at
# integration time, not per-commit.
#
# Runner versions pinned; see ci.yaml header comment for rationale.
on:
schedule:
# Run at 5:37 UTC every day. Off-peak minute (avoid :00 to be a good
# citizen w.r.t. GitHub's cron scheduler), and offset from
# nightly-benchmark.yaml (4:17 UTC) so they don't contend for runners.
- cron: '37 5 * * *'
workflow_dispatch:
env:
CARGO_TERM_COLOR: always
CARGO_INCREMENTAL: 0
RUSTFLAGS: -C debuginfo=0
jobs:
feature-powerset:
# Every combination of cli/syntax-highlighting/shell-integration-tests/
# git-wt should compile. Catches regressions in feature gating — including
# the v0.45.0 case where lib code used a `cli`-gated dependency
# unconditionally.
#
# Workspace members must use `default-features = false` when depending on
# worktrunk, or feature unification will mask gating bugs by silently
# enabling `cli` in the lib build (see tests/helpers/wt-perf/Cargo.toml).
runs-on: ubuntu-24.04
steps:
- name: 📂 Checkout code
uses: actions/checkout@v6
- name: 💰 Cache
uses: Swatinem/rust-cache@v2
- name: Install cargo-hack
uses: taiki-e/install-action@v2.75.22
with:
tool: cargo-hack
- name: cargo hack check --feature-powerset --no-dev-deps
run: cargo hack check --feature-powerset --no-dev-deps
create-issue-on-nightly-failure:
needs:
- feature-powerset
if: always() && contains(needs.*.result, 'failure') && github.repository_owner == 'max-sixty' && github.event_name == 'schedule'
runs-on: ubuntu-24.04
permissions:
contents: read
issues: write
steps:
- name: 📂 Checkout code
uses: actions/checkout@v6
- uses: JasonEtco/create-an-issue@v2
env:
# Use WORKTRUNK_BOT_TOKEN for a consistent bot identity (per
# .github/CLAUDE.md) and so any future issue-triage automation can
# cascade off issue creation — events from the default GITHUB_TOKEN
# don't trigger other workflows.
GITHUB_TOKEN: ${{ secrets.WORKTRUNK_BOT_TOKEN }}
LINK: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
with:
filename: .github/nightly-failure.md
update_existing: true
search_existing: open