Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f5d570ea60 | |||
| 1b4913c0fd | |||
| 983498765e | |||
| f901d622d1 | |||
| ae024551bb | |||
| 1f18a1d982 |
@@ -42,3 +42,15 @@ jobs:
|
||||
done
|
||||
done
|
||||
exit $fail
|
||||
|
||||
ci:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Validate JSON files
|
||||
run: |
|
||||
find . -name "*.json" -not -path "./.git/*" | while read -r f; do
|
||||
python3 -m json.tool "$f" > /dev/null || { echo "::error file=$f::Invalid JSON"; exit 1; }
|
||||
done
|
||||
echo "All JSON files valid"
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
name: Promotion Gate
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches: [main]
|
||||
|
||||
jobs:
|
||||
promotion_gate:
|
||||
name: Promotion Gate
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Validate skills directory structure
|
||||
run: |
|
||||
set -e
|
||||
fail=0
|
||||
for dir in skills/*/; do
|
||||
if [ ! -f "${dir}SKILL.md" ]; then
|
||||
echo "::error::Missing SKILL.md in ${dir}"
|
||||
fail=1
|
||||
fi
|
||||
done
|
||||
exit $fail
|
||||
@@ -73,7 +73,7 @@ Each promotion is a PR reviewed and merged by its gate owner:
|
||||
|
||||
### Pipeline A: Plugin/Feature Changes
|
||||
|
||||
```
|
||||
```text
|
||||
Engineer → PR to dev → self-merge → deploys to dev
|
||||
→ Engineer validates on dev
|
||||
→ PR from dev → uat → QA reviews → QA merges
|
||||
@@ -88,7 +88,7 @@ Applies to changes in `headlamp-*-plugin/` repos (plugin code, features, bug fix
|
||||
|
||||
### Pipeline B: Infrastructure Changes (No UI Impact)
|
||||
|
||||
```
|
||||
```text
|
||||
Engineer → PR to main → CI passes → QA reviews → QA merges
|
||||
→ Production
|
||||
```
|
||||
|
||||
@@ -132,4 +132,3 @@ flowchart LR
|
||||
class UATB uat
|
||||
class MAIN prod
|
||||
```
|
||||
|
||||
|
||||
+1
-1
@@ -66,4 +66,4 @@ If `UAT_PLAYBOOK.md` does not exist for a plugin, treat that as a gap — report
|
||||
|
||||
- **Approve** the `uat→main` promotion when all applicable test steps from the playbook pass and no console errors are present
|
||||
- **Request changes** when any test step fails — include specific failing steps, observed results vs. expected results, and failure screenshots
|
||||
- **Block** if the plugin fails to load entirely — escalate to CTO as a deployment issue requiring immediate resolution
|
||||
- **Block** if the plugin fails to load entirely — escalate to CTO as a deployment issue requiring immediate resolution
|
||||
|
||||
Reference in New Issue
Block a user