Some checks failed
Rust CI / Security Audit (push) Has been cancelled
Rust CI / Check + Test + Lint (nightly) (push) Has been cancelled
Rust CI / Check + Test + Lint (stable) (push) Has been cancelled
mdBook Build & Deploy / Build mdBook (push) Has been cancelled
Nickel Type Check / Nickel Type Checking (push) Has been cancelled
mdBook Build & Deploy / Documentation Quality Check (push) Has been cancelled
mdBook Build & Deploy / Deploy to GitHub Pages (push) Has been cancelled
mdBook Build & Deploy / Notification (push) Has been cancelled
187 lines
6.0 KiB
YAML
187 lines
6.0 KiB
YAML
# VAPORA Woodpecker Pipeline - Validate & Build
|
|
# Validates all configurations and generates deployment artifacts
|
|
# Triggers on: push to main/develop, pull requests, manual dispatch
|
|
|
|
trigger:
|
|
event: [push, pull_request, manual]
|
|
branch: [main, develop]
|
|
paths:
|
|
include:
|
|
- provisioning/schemas/**
|
|
- provisioning/scripts/**
|
|
- .woodpecker/validate-and-build.yml
|
|
|
|
variables:
|
|
ARTIFACTS_DIR: provisioning/artifacts
|
|
LOG_DIR: provisioning/logs
|
|
|
|
stages:
|
|
setup:
|
|
steps:
|
|
- name: prepare
|
|
image: alpine:latest
|
|
commands:
|
|
- mkdir -p ${ARTIFACTS_DIR} ${LOG_DIR}
|
|
- echo "🔧 VAPORA CI/CD Pipeline - Validate & Build"
|
|
- echo "Commit: ${CI_COMMIT_SHA:0:8}"
|
|
- echo "Branch: ${CI_COMMIT_BRANCH}"
|
|
- echo "Event: ${CI_PIPELINE_EVENT}"
|
|
|
|
install_dependencies:
|
|
steps:
|
|
- name: install_tools
|
|
image: rust:latest
|
|
commands:
|
|
- apt-get update && apt-get install -y curl jq yq
|
|
- cargo install nu --locked
|
|
- cargo install nickel --locked
|
|
- pip install jinja2-cli
|
|
- nickel --version
|
|
- nu --version
|
|
- jinja2 --version
|
|
- yq --version
|
|
|
|
validate_solo:
|
|
depends_on: [install_dependencies]
|
|
steps:
|
|
- name: validate_solo
|
|
image: rust:latest
|
|
commands:
|
|
- apt-get update && apt-get install -y curl jq yq
|
|
- cargo install nu --locked > /dev/null 2>&1
|
|
- cargo install nickel --locked > /dev/null 2>&1
|
|
- pip install jinja2-cli > /dev/null 2>&1
|
|
- cd provisioning
|
|
- nu scripts/validate-config.nu --mode solo 2>&1 | tee ../${LOG_DIR}/validate-solo.log
|
|
environment:
|
|
RUST_LOG: warn
|
|
|
|
validate_multiuser:
|
|
depends_on: [install_dependencies]
|
|
steps:
|
|
- name: validate_multiuser
|
|
image: rust:latest
|
|
commands:
|
|
- apt-get update && apt-get install -y curl jq yq
|
|
- cargo install nu --locked > /dev/null 2>&1
|
|
- cargo install nickel --locked > /dev/null 2>&1
|
|
- pip install jinja2-cli > /dev/null 2>&1
|
|
- cd provisioning
|
|
- nu scripts/validate-config.nu --mode multiuser 2>&1 | tee ../${LOG_DIR}/validate-multiuser.log
|
|
environment:
|
|
RUST_LOG: warn
|
|
|
|
validate_enterprise:
|
|
depends_on: [install_dependencies]
|
|
steps:
|
|
- name: validate_enterprise
|
|
image: rust:latest
|
|
commands:
|
|
- apt-get update && apt-get install -y curl jq yq
|
|
- cargo install nu --locked > /dev/null 2>&1
|
|
- cargo install nickel --locked > /dev/null 2>&1
|
|
- pip install jinja2-cli > /dev/null 2>&1
|
|
- cd provisioning
|
|
- nu scripts/validate-config.nu --mode enterprise 2>&1 | tee ../${LOG_DIR}/validate-enterprise.log
|
|
environment:
|
|
RUST_LOG: warn
|
|
|
|
build_artifacts:
|
|
depends_on: [validate_solo, validate_multiuser, validate_enterprise]
|
|
steps:
|
|
- name: install_tools
|
|
image: rust:latest
|
|
commands:
|
|
- apt-get update && apt-get install -y curl jq yq
|
|
- cargo install nu --locked > /dev/null 2>&1
|
|
- cargo install nickel --locked > /dev/null 2>&1
|
|
- pip install jinja2-cli > /dev/null 2>&1
|
|
- echo "✓ Tools installed"
|
|
|
|
- name: build_artifacts
|
|
image: rust:latest
|
|
commands:
|
|
- cd provisioning
|
|
- nu scripts/ci-pipeline.nu --artifact-dir ../artifacts --mode multiuser 2>&1 | tee ../${LOG_DIR}/build.log
|
|
environment:
|
|
RUST_LOG: warn
|
|
|
|
- name: verify_artifacts
|
|
image: alpine:latest
|
|
commands:
|
|
- ls -la artifacts/
|
|
- echo "Validating JSON outputs..."
|
|
- for f in artifacts/config-*.json; do jq . "$$f" > /dev/null && echo "✓ $$f"; done
|
|
- echo "Validating YAML outputs..."
|
|
- yq eval '.' artifacts/*.yaml > /dev/null && echo "✓ YAML files valid"
|
|
- echo "Validating TOML outputs..."
|
|
- test -f artifacts/*.toml && echo "✓ TOML files generated"
|
|
|
|
- name: generate_manifest
|
|
image: alpine:latest
|
|
commands:
|
|
- cat > artifacts/README.md << 'EOF'
|
|
# VAPORA Deployment Artifacts
|
|
|
|
Generated: $(date -u +'%Y-%m-%dT%H:%M:%SZ')
|
|
Commit: ${CI_COMMIT_SHA}
|
|
Branch: ${CI_COMMIT_BRANCH}
|
|
Pipeline: ${CI_BUILD_LINK}
|
|
|
|
## Files Generated
|
|
|
|
### Configurations (JSON)
|
|
- config-solo.json - Solo mode configuration
|
|
- config-multiuser.json - Multiuser mode configuration
|
|
- config-enterprise.json - Enterprise mode configuration
|
|
|
|
### Configuration Formats
|
|
- vapora-solo.toml / vapora-solo.yaml
|
|
- vapora-multiuser.toml / vapora-multiuser.yaml
|
|
- vapora-enterprise.toml / vapora-enterprise.yaml
|
|
|
|
### Kubernetes Manifests
|
|
- configmap.yaml - Kubernetes ConfigMap
|
|
- deployment.yaml - Kubernetes Deployments
|
|
|
|
### Docker Compose
|
|
- docker-compose.yml - Docker Compose stack
|
|
|
|
## Status
|
|
✅ All configurations generated and validated
|
|
✅ All templates rendered successfully
|
|
✅ Ready for deployment
|
|
EOF
|
|
- cat artifacts/README.md
|
|
|
|
publish:
|
|
depends_on: [build_artifacts]
|
|
steps:
|
|
- name: publish_artifacts
|
|
image: alpine:latest
|
|
commands:
|
|
- echo "📦 Artifacts ready for deployment"
|
|
- ls -lah artifacts/
|
|
- echo ""
|
|
- echo "Total files: $(find artifacts -type f | wc -l)"
|
|
- du -sh artifacts/
|
|
|
|
notify:
|
|
slack:
|
|
enabled: true
|
|
when:
|
|
status: [success, failure]
|
|
webhook_id: ${SLACK_WEBHOOK}
|
|
channel: deployments
|
|
template: |
|
|
{{#success build.status}}
|
|
✅ **VAPORA Validate & Build Successful**
|
|
Commit: {{commit.sha}}
|
|
Branch: {{commit.branch}}
|
|
Author: {{commit.author}}
|
|
{{else}}
|
|
❌ **VAPORA Validate & Build Failed**
|
|
Commit: {{commit.sha}}
|
|
Branch: {{commit.branch}}
|
|
{{/success}}
|