Skip to content

feat(vendors): add EY starlight #145

feat(vendors): add EY starlight

feat(vendors): add EY starlight #145

Workflow file for this run

name: CI Quality Gates
on:
pull_request:
types: [opened, synchronize, reopened]
push:
branches: [master, main]
jobs:
validate-patterns:
runs-on: ubuntu-latest
name: Validate Documentation Patterns
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install dependencies
run: |
cd scripts
npm install
- name: Validate pattern documents
id: validate
run: |
node scripts/validate-patterns.js
env:
CI_MODE: strict
- name: Check terminology consistency
run: |
node scripts/check-terminology.js
env:
CI_MODE: strict
continue-on-error: true
- name: Get changed markdown files
id: changed-files
uses: tj-actions/changed-files@v44
with:
files: |
**/*.md
- name: Check markdown links (changed files only)
if: steps.changed-files.outputs.any_changed == 'true'
uses: gaurav-nelson/github-action-markdown-link-check@v1
with:
use-quiet-mode: 'yes'
config-file: '.github/markdown-link-check-config.json'
check-modified-files-only: 'yes'
continue-on-error: true
- name: Markdown linting
uses: DavidAnson/markdownlint-cli2-action@v16
with:
globs: |
patterns/*.md
approaches/*.md
use-cases/*.md
vendors/*.md
continue-on-error: true
- name: Summary
if: always()
run: |
echo "## CI Quality Gates Summary" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
if [ -f validation-report.md ]; then
cat validation-report.md >> $GITHUB_STEP_SUMMARY
fi
echo "" >> $GITHUB_STEP_SUMMARY
echo "✅ CI checks completed" >> $GITHUB_STEP_SUMMARY
validate-vendors:
runs-on: ubuntu-latest
name: Validate Vendor Documentation
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Check content neutrality
run: |
echo "Checking documentation for marketing language..."
# Extended marketing language patterns
MARKETING_WORDS="best|leading|superior|unmatched|revolutionary|cutting-edge|world-class|industry-leading|state-of-the-art|groundbreaking|innovative|seamless|robust|scalable|enterprise-grade|next-generation|unique|only|first|fastest|most secure|unparalleled|comprehensive|end-to-end|one-stop|game-changing|disruptive|bleeding-edge|turnkey|holistic|best-in-class|market-leading|unrivaled|premier|top-tier|ultimate|unprecedented"
FOUND_ISSUES=false
# Check vendors (stricter)
echo "::group::Vendor documentation"
if grep -r -i -E "($MARKETING_WORDS)" vendors/*.md 2>/dev/null | grep -v -f .marketing-exceptions.txt 2>/dev/null || grep -r -i -E "($MARKETING_WORDS)" vendors/*.md 2>/dev/null; then
echo "::warning::Found potential marketing language in vendor documentation"
FOUND_ISSUES=true
fi
echo "::endgroup::"
# Check patterns (warning)
echo "::group::Pattern documentation"
if grep -r -i -E "($MARKETING_WORDS)" patterns/*.md 2>/dev/null | grep -v "_template.md" | grep -v -f .marketing-exceptions.txt 2>/dev/null || grep -r -i -E "($MARKETING_WORDS)" patterns/*.md 2>/dev/null | grep -v "_template.md"; then
echo "::warning::Found potential marketing language in pattern documentation"
FOUND_ISSUES=true
fi
echo "::endgroup::"
# Check approaches (warning)
echo "::group::Approach documentation"
if grep -r -i -E "($MARKETING_WORDS)" approaches/*.md 2>/dev/null | grep -v "_template.md" | grep -v -f .marketing-exceptions.txt 2>/dev/null || grep -r -i -E "($MARKETING_WORDS)" approaches/*.md 2>/dev/null | grep -v "_template.md"; then
echo "::warning::Found potential marketing language in approach documentation"
FOUND_ISSUES=true
fi
echo "::endgroup::"
if [ "$FOUND_ISSUES" = true ]; then
echo "" >> $GITHUB_STEP_SUMMARY
echo "⚠️ **Marketing Language Check**" >> $GITHUB_STEP_SUMMARY
echo "Found potential marketing language. Review and use neutral, factual terms." >> $GITHUB_STEP_SUMMARY
fi
- name: Verify vendor cross-references
run: |
echo "Checking vendor pattern references..."
# Ensure vendors reference generic patterns, not vendor-specific ones
for file in vendors/*.md; do
if [ -f "$file" ]; then
if grep -E "pattern-.*-(flashbots|shutter|suave)" "$file" 2>/dev/null; then
echo "::error::Vendor file $file references vendor-specific pattern names"
exit 1
fi
fi
done
prose-lint:
runs-on: ubuntu-latest
name: Prose Quality (Vale)
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Vale linter
uses: errata-ai/vale-action@v2
with:
files: |
patterns/
vendors/
approaches/
use-cases/
jurisdictions/
domains/
fail_on_error: false
reporter: github-check
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
validate-changelog:
runs-on: ubuntu-latest
name: Validate Changelog
if: github.event_name == 'pull_request'
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Check changelog update
run: |
# Get list of changed files in PR
CHANGED_FILES=$(git diff --name-only origin/${{ github.base_ref }}...HEAD)
# Check if content directories were modified
CONTENT_CHANGED=false
for pattern in "patterns/" "vendors/" "approaches/" "use-cases/" "jurisdictions/" "domains/"; do
if echo "$CHANGED_FILES" | grep -q "^$pattern"; then
CONTENT_CHANGED=true
break
fi
done
# Check if CHANGELOG.md was updated
CHANGELOG_UPDATED=false
if echo "$CHANGED_FILES" | grep -q "^CHANGELOG.md"; then
CHANGELOG_UPDATED=true
fi
# Warn if content changed but changelog wasn't updated
if [ "$CONTENT_CHANGED" = true ] && [ "$CHANGELOG_UPDATED" = false ]; then
echo "::warning::Content files were modified but CHANGELOG.md was not updated."
echo "::warning::Please add an entry to the [Unreleased] section in CHANGELOG.md"
echo "" >> $GITHUB_STEP_SUMMARY
echo "⚠️ **Changelog Reminder**" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "Content files were modified. Please update CHANGELOG.md:" >> $GITHUB_STEP_SUMMARY
echo "1. Add entry to \`[Unreleased]\` section" >> $GITHUB_STEP_SUMMARY
echo "2. Use format: \`- feat(type): [Name](path) ([#PR](url))\`" >> $GITHUB_STEP_SUMMARY
elif [ "$CHANGELOG_UPDATED" = true ]; then
echo "✅ CHANGELOG.md was updated" >> $GITHUB_STEP_SUMMARY
fi