# GitLab CI/CD Pipeline for OpenCompletion # Uses shell executor on build-tagged runners stages: - test - lint variables: SQLALCHEMY_DATABASE_URI: "sqlite:///:memory:" TESTING: "1" MODEL_ENDPOINT_0: "https://hermes.ai.unturf.com/v1" MODEL_API_KEY_0: "dummy" # Template for Python setup (shell executor) .python_setup: tags: - build before_script: - python3 -m venv venv - source venv/bin/activate - python3 -m pip install --upgrade pip - pip install -r requirements.txt - pip install -r requirements-test.txt # Unit Tests unit_tests: extends: .python_setup stage: test script: - source venv/bin/activate - pytest tests/unit/ -v --tb=short --cov=. --cov-report=term-missing # Functional Tests functional_tests: extends: .python_setup stage: test script: - source venv/bin/activate - pytest tests/functional/ -v --tb=short # Integration Tests integration_tests: extends: .python_setup stage: test script: - source venv/bin/activate - pytest tests/integration/ -v --tb=short # Validate Activity YAML Files validate_yaml: extends: .python_setup stage: test script: - source venv/bin/activate - python activity_yaml_validator.py research/SPEC.yaml - python activity_yaml_validator.py research/activity*.yaml # Lint - Syntax Errors (blocking) lint_syntax: stage: lint tags: - build before_script: - python3 -m venv venv - source venv/bin/activate - pip install flake8 script: - source venv/bin/activate - flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics --exclude=venv # Lint - Style Warnings (non-blocking) lint_style: stage: lint tags: - build before_script: - python3 -m venv venv - source venv/bin/activate - pip install black flake8 script: - source venv/bin/activate - black --check --diff --exclude=venv . || true - flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics --exclude=venv allow_failure: true