Skip to content

Commit b499f99

Browse files
Merge remote-tracking branch 'origin/main' into devin/1776073612-improve-agent-docs
2 parents 9a2db12 + 3428471 commit b499f99

File tree

12 files changed

+302
-456
lines changed

12 files changed

+302
-456
lines changed

.github/workflows/ci.yml

Lines changed: 94 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,26 +14,117 @@ concurrency:
1414
cancel-in-progress: true
1515

1616
jobs:
17+
# ---------- Change detection ----------
18+
changes:
19+
name: Detect Changes
20+
runs-on: ubuntu-22.04
21+
permissions:
22+
contents: read
23+
pull-requests: read
24+
outputs:
25+
ci: ${{ steps.filter.outputs.ci }}
26+
rust: ${{ steps.filter.outputs.rust }}
27+
ui: ${{ steps.filter.outputs.ui }}
28+
plugins: ${{ steps.filter.outputs.plugins }}
29+
e2e: ${{ steps.filter.outputs.e2e }}
30+
steps:
31+
- uses: actions/checkout@v5
32+
- uses: dorny/paths-filter@v3
33+
id: filter
34+
with:
35+
filters: |
36+
ci:
37+
- '.github/**'
38+
rust:
39+
- 'crates/**'
40+
- 'apps/**'
41+
- 'sdks/**'
42+
- 'Cargo.toml'
43+
- 'Cargo.lock'
44+
- 'deny.toml'
45+
- 'rust-toolchain.toml'
46+
- 'clippy.toml'
47+
- 'rustfmt.toml'
48+
- '.cargo/config.toml'
49+
ui:
50+
- 'ui/**'
51+
plugins:
52+
- 'plugins/native/**'
53+
e2e:
54+
- 'e2e/**'
55+
56+
# ---------- Sub-workflows ----------
1757
skit:
1858
name: Skit
59+
needs: changes
60+
if: >-
61+
github.event_name == 'workflow_dispatch' ||
62+
needs.changes.outputs.ci == 'true' ||
63+
needs.changes.outputs.rust == 'true' ||
64+
needs.changes.outputs.ui == 'true'
1965
uses: ./.github/workflows/skit.yml
2066

2167
ui:
2268
name: UI
69+
needs: changes
70+
if: >-
71+
github.event_name == 'workflow_dispatch' ||
72+
needs.changes.outputs.ci == 'true' ||
73+
needs.changes.outputs.ui == 'true'
2374
uses: ./.github/workflows/ui.yml
2475

2576
plugins:
2677
name: Plugins
78+
needs: changes
79+
if: >-
80+
github.event_name == 'workflow_dispatch' ||
81+
needs.changes.outputs.ci == 'true' ||
82+
needs.changes.outputs.plugins == 'true' ||
83+
needs.changes.outputs.rust == 'true'
2784
uses: ./.github/workflows/plugins.yml
2885

2986
e2e:
3087
name: E2E
88+
needs: changes
89+
if: >-
90+
github.event_name == 'workflow_dispatch' ||
91+
needs.changes.outputs.ci == 'true' ||
92+
needs.changes.outputs.rust == 'true' ||
93+
needs.changes.outputs.ui == 'true' ||
94+
needs.changes.outputs.e2e == 'true'
3195
uses: ./.github/workflows/e2e.yml
3296

97+
# ---------- Always-run checks ----------
98+
reuse:
99+
name: REUSE Compliance
100+
runs-on: ubuntu-22.04
101+
permissions:
102+
contents: read
103+
steps:
104+
- uses: actions/checkout@v5
105+
- uses: fsfe/reuse-action@v6
106+
107+
# ---------- Gate ----------
33108
all-checks:
34109
name: All Checks Passed
110+
if: always()
35111
runs-on: ubuntu-22.04
36-
needs: [skit, ui, plugins, e2e]
112+
needs: [changes, skit, ui, plugins, e2e, reuse]
37113
steps:
38-
- name: All checks passed
39-
run: echo "All CI checks passed successfully!"
114+
- name: Verify results
115+
run: |
116+
results=(
117+
"${{ needs.changes.result }}"
118+
"${{ needs.skit.result }}"
119+
"${{ needs.ui.result }}"
120+
"${{ needs.plugins.result }}"
121+
"${{ needs.e2e.result }}"
122+
"${{ needs.reuse.result }}"
123+
)
124+
for r in "${results[@]}"; do
125+
if [[ "$r" == "failure" || "$r" == "cancelled" ]]; then
126+
echo "::error::CI check failed or was cancelled ($r)"
127+
exit 1
128+
fi
129+
done
130+
echo "All checks passed or were appropriately skipped."

0 commit comments

Comments
 (0)