mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-07 12:31:56 +00:00
948c208db9
- Pushes to main use the same code/no-code rule as pull requests (`touches_code` in Select checks): a push changing only documentation, packaging, other workflows or the bots' scripts runs the repository checks only. With the merge queue off, every push to main ran the full suite and the Windows jobs, docs-only ones included. - affected.py: test data under tests/ selects the packages that read it (robustness, hole matrix, projection, taper: solidcraft-engine; oracle: the CLI, the kernel, xtask; action matrix: the CLI, the engine, xtask), and a vendored crate the packages that use it (truck: the kernel and up; egui-wgpu: the UI and the apps), instead of the whole workspace. tests/tools and unknown vendored crates still select everything. - Docker (the web app image) skips pushes touching only docs, test data or bot scripts; Pages skips test data and bot scripts; Generated files runs only when the manifests, lockfile, command registry, CLI or xtask change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QWhMwdqJYQKQq8RCLSL1LT
60 lines
2.2 KiB
YAML
60 lines
2.2 KiB
YAML
# Files generated from the code are rewritten here, on main, after each merge, so pull requests
|
|
# never edit them (two pull requests that each regenerated one would always conflict):
|
|
# THIRD-PARTY-LICENSES.txt (`cargo xtask licences`) and docs/features.md (`cargo xtask features`).
|
|
name: Generated files
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
# THIRD-PARTY-LICENSES.txt follows the manifests and the lockfile; docs/features.md follows the
|
|
# command registry (crates/engine), read through solidcraft-cli. Other pushes regenerate nothing.
|
|
paths:
|
|
- "Cargo.lock"
|
|
- "**/Cargo.toml"
|
|
- "crates/engine/**"
|
|
- "apps/solidcraft-cli/**"
|
|
- "xtask/**"
|
|
- ".github/workflows/generated.yml"
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
# One run at a time; a burst of merges leaves one run waiting, which sees all of them.
|
|
concurrency:
|
|
group: generated-files
|
|
cancel-in-progress: false
|
|
|
|
jobs:
|
|
regenerate:
|
|
name: Regenerate and commit
|
|
runs-on: ubuntu-24.04
|
|
timeout-minutes: 60
|
|
steps:
|
|
# Always main itself, never pull request code, since this job can push.
|
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
ref: main
|
|
# main goes through the merge queue; this deploy key may push past it.
|
|
ssh-key: ${{ secrets.GENERATED_FILES_DEPLOY_KEY }}
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
- uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2
|
|
with:
|
|
key: generated-files
|
|
- name: THIRD-PARTY-LICENSES.txt
|
|
run: cargo xtask licences
|
|
- name: docs/features.md
|
|
run: cargo xtask features
|
|
- name: Commit if changed
|
|
run: |
|
|
if git diff --quiet -- THIRD-PARTY-LICENSES.txt docs/features.md; then echo "unchanged"; exit 0; fi
|
|
git config user.name "github-actions[bot]"
|
|
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
|
git add THIRD-PARTY-LICENSES.txt docs/features.md
|
|
git commit -m "Regenerate THIRD-PARTY-LICENSES.txt and docs/features.md [skip ci]"
|
|
for _ in 1 2 3; do
|
|
git pull --rebase origin main && git push origin HEAD:main && exit 0
|
|
sleep 10
|
|
done
|
|
exit 1
|