syntaxis/.github/workflows/test-provisioning.yml
Jesús Pérez 9cef9b8d57 refactor: consolidate configuration directories
Merge _configs/ into config/ for single configuration directory.
Update all path references.

Changes:
- Move _configs/* to config/
- Update .gitignore for new patterns
- No code references to _configs/ found

Impact: -1 root directory (layout_conventions.md compliance)
2025-12-26 18:36:23 +00:00

148 lines
4.6 KiB
YAML

name: Provisioning Tests
on:
push:
branches: [ main, develop ]
paths:
- 'scripts/provisioning/**'
- 'configs/installation.toml'
- 'tests/provisioning/**'
- '.github/workflows/test-provisioning.yml'
pull_request:
branches: [ main, develop ]
paths:
- 'scripts/provisioning/**'
- 'configs/installation.toml'
- 'tests/provisioning/**'
- '.github/workflows/test-provisioning.yml'
env:
RUST_BACKTRACE: 1
jobs:
provisioning-tests:
name: Provisioning Tests (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, ubuntu-20.04]
fail-fast: false
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install NuShell
run: |
if [[ "${{ runner.os }}" == "Linux" ]]; then
curl -o nu https://releases.nushell.dev/latest && chmod +x nu && sudo mv nu /usr/local/bin/
else
brew install nushell
fi
- name: Verify NuShell installation
run: nu --version
- name: Run all provisioning tests
run: |
echo "Running provisioning test suite..."
nu tests/provisioning/test-all.nu
continue-on-error: false
- name: Test preset detection
run: |
echo "Testing preset detection..."
nu scripts/provisioning/install-with-presets.nu --list-presets
- name: Test provctl detection
run: |
echo "Testing provctl detection..."
nu scripts/provisioning/detect-provctl.nu --verbose || true
- name: Validate configuration files
run: |
echo "Validating configuration files..."
test -f configs/installation.toml && echo "✓ installation.toml found"
test -f configs/provisioning/services/surrealdb.toml && echo "✓ surrealdb.toml found"
test -f configs/provisioning/services/nats.toml && echo "✓ nats.toml found"
test -f configs/provisioning/services/syntaxis-api.toml && echo "✓ syntaxis-api.toml found"
- name: Generate sample configuration
run: |
echo "Generating sample configurations for each preset..."
for preset in minimal local dev staging production custom; do
echo "---"
echo "Generating config for preset: $preset"
nu scripts/provisioning/install-with-presets.nu \
--preset $preset \
--generate-config > /tmp/config-$preset.toml 2>&1 || true
if [ -f "/tmp/config-$preset.toml" ]; then
echo "✓ Generated config for $preset"
fi
done
lint-provisioning:
name: Lint Provisioning Scripts
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install NuShell
run: |
curl -o nu https://releases.nushell.dev/latest && chmod +x nu && sudo mv nu /usr/local/bin/
- name: Check NuShell syntax
run: |
echo "Checking NuShell script syntax..."
for script in scripts/provisioning/*.nu tests/provisioning/*.nu; do
echo "Checking: $script"
nu -c "source $script; def main { }; main" || true
done
- name: Validate TOML syntax
run: |
if command -v toml-cli &> /dev/null; then
echo "Validating TOML files..."
for toml in configs/installation.toml configs/provisioning/services/*.toml; do
echo "Validating: $toml"
toml-cli validate "$toml" || true
done
else
echo "toml-cli not available, skipping TOML validation"
fi
report:
name: Test Report
runs-on: ubuntu-latest
needs: [provisioning-tests, lint-provisioning]
if: always()
steps:
- name: Print test summary
run: |
echo "Provisioning Test Summary"
echo "========================="
if [[ "${{ needs.provisioning-tests.result }}" == "success" ]]; then
echo "✅ Provisioning tests: PASSED"
else
echo "❌ Provisioning tests: FAILED"
fi
if [[ "${{ needs.lint-provisioning.result }}" == "success" ]]; then
echo "✅ Linting: PASSED"
else
echo "❌ Linting: FAILED"
fi
- name: Determine final status
run: |
if [[ "${{ needs.provisioning-tests.result }}" != "success" ]] || \
[[ "${{ needs.lint-provisioning.result }}" != "success" ]]; then
echo "❌ Some tests failed"
exit 1
else
echo "✅ All provisioning tests passed!"
fi