Files
blackroad-operating-system/.github/workflows/infra-ci-bucketed.yml
2025-11-17 22:41:52 -06:00

81 lines
2.2 KiB
YAML

name: Infrastructure CI
on:
pull_request:
paths:
- 'infra/**'
- 'ops/**'
- '.github/**'
- 'railway.toml'
- 'railway.json'
- '*.toml'
push:
branches: [main]
paths:
- 'infra/**'
- '.github/**'
permissions:
contents: read
jobs:
validate:
name: Infrastructure Validation
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Validate YAML files
run: |
# Install yamllint
pip install yamllint
# Validate all YAML files
find .github -name "*.yml" -o -name "*.yaml" | xargs yamllint -d relaxed
- name: Validate TOML files
run: |
# Install toml validator
pip install toml
# Validate TOML files
for file in *.toml; do
if [ -f "$file" ]; then
python -c "import toml; toml.load('$file')" && echo "✅ $file is valid" || echo "❌ $file has errors"
fi
done
- name: Validate JSON files
run: |
# Validate JSON files
for file in *.json; do
if [ -f "$file" ]; then
python -c "import json; json.load(open('$file'))" && echo "✅ $file is valid" || echo "❌ $file has errors"
fi
done
- name: Check GitHub Actions syntax
run: |
# Use actionlint to validate workflows
wget -q https://github.com/rhysd/actionlint/releases/download/v1.6.26/actionlint_1.6.26_linux_amd64.tar.gz
tar -xzf actionlint_1.6.26_linux_amd64.tar.gz
./actionlint || true
- name: Validate environment template
run: |
if [ -f backend/.env.example ]; then
python scripts/railway/validate_env_template.py || echo "Env template validation skipped"
fi
- name: Check Railway configuration
run: |
if [ -f railway.toml ]; then
echo "✅ railway.toml found"
fi
if [ -f railway.json ]; then
echo "✅ railway.json found"
python -c "import json; config = json.load(open('railway.json')); print(f'Services: {list(config.keys())}')"
fi