# ACDL CI Pipeline — Gitea Actions (dev environment) # # This workflow implements the central pipeline contract: # pipelines/ci.yaml (validated against schemas/pipeline.schema.json) # # The same contract is implemented by .github/workflows/ci.yml (GitHub # Actions, production). Both files must be byte-identical — the only # declared difference is the forge/runtime, not the stages or commands. # # Shell reproducibility: scripts/run_ci.sh runs the same 3 stages locally. # # Stages (from the contract): # 1. lint — py_compile all Python files # 2. test — pytest test suite (offline, no AWS) # 3. check-only — run_platform.sh --check-only (offline, no AWS) name: acdl-ci on: push: branches: [main] pull_request: branches: [main] jobs: lint: name: Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.12" - name: Compile all Python files run: | python3 -m py_compile \ core/confidence_signal.py \ core/outbox_writer.py \ core/output_publisher.py \ core/contract_resolver.py \ core/lambda/contract_ingestor.py \ adapters/terraform/adapter.py \ adapters/terraform/policy/checkov_adapter.py \ scripts/push_consumer_image.py test: name: Test runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.12" - name: Install test dependencies run: pip install -r requirements-test.txt - name: Run pytest run: python3 -m pytest tests/ -v --tb=short check-only: name: Platform check-only (offline) runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.12" - name: Install runtime dependencies run: pip install jsonschema pyyaml boto3 - name: Run platform check-only run: bash scripts/run_platform.sh --check-only