feat(vendors): add EY starlight #145
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |