Populate security-review.md with content #4
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: Lint and Validate | |
| on: | |
| push: | |
| branches: [main, develop] | |
| pull_request: | |
| branches: [main] | |
| workflow_dispatch: | |
| jobs: | |
| shellcheck: | |
| name: Shell Script Linting | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Run ShellCheck | |
| uses: ludeeus/action-shellcheck@master | |
| with: | |
| scandir: 'scripts' | |
| format: gcc | |
| severity: error | |
| yaml-lint: | |
| name: YAML Linting | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Run yamllint | |
| uses: karancode/yamllint-github-action@v2.3.1 | |
| with: | |
| yamllint_file_or_dir: '.' | |
| yamllint_strict: false | |
| yamllint_comment: true | |
| markdown-lint: | |
| name: Markdown Linting | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Run markdownlint | |
| uses: DavidAnson/markdownlint@v3 | |
| with: | |
| globs: | | |
| **/*.md | |
| !node_modules/** | |
| json-validate: | |
| name: JSON Validation | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Validate JSON files | |
| run: | | |
| find . -name "*.json" -not -path "./.git/*" | while read -r file; do | |
| echo "Validating $file" | |
| python3 -m json.tool "$file" > /dev/null || exit 1 | |
| done | |
| file-structure: | |
| name: Validate File Structure | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Check required files exist | |
| run: | | |
| required_files=( | |
| "README.md" | |
| "LICENSE" | |
| ".gitignore" | |
| "templates/terraform/CLAUDE.md" | |
| "templates/kubernetes/CLAUDE.md" | |
| "templates/python/CLAUDE.md" | |
| "templates/cicd/CLAUDE.md" | |
| "prompts/iac-generation.md" | |
| "prompts/debugging.md" | |
| "prompts/migration.md" | |
| "prompts/security-review.md" | |
| "scripts/setup-claude-project.sh" | |
| "scripts/bulk-review.sh" | |
| "scripts/generate-docs.sh" | |
| ) | |
| missing_files=() | |
| for file in "${required_files[@]}"; do | |
| if [[ ! -f "$file" ]]; then | |
| missing_files+=("$file") | |
| fi | |
| done | |
| if [[ ${#missing_files[@]} -gt 0 ]]; then | |
| echo "Missing required files:" | |
| printf ' - %s\n' "${missing_files[@]}" | |
| exit 1 | |
| fi | |
| echo "All required files present" | |
| scripts-executable: | |
| name: Check Scripts are Executable | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Check script permissions | |
| run: | | |
| scripts=( | |
| "scripts/setup-claude-project.sh" | |
| "scripts/bulk-review.sh" | |
| "scripts/generate-docs.sh" | |
| ) | |
| for script in "${scripts[@]}"; do | |
| if [[ ! -x "$script" ]]; then | |
| echo "Script $script is not executable" | |
| exit 1 | |
| fi | |
| done | |
| echo "All scripts are executable" |