cki_tox_pipeline.md
Flowchart of the tox-based pipeline stages (linting/testing) in CKI projects.
flowchart TB
subgraph "GitLab CI/CD Pipeline"
A0["Project .gitlab-ci.yml"] --> A1["include: cki-templates.yml"]
A1 --> A["Tests / Linting Pipeline Stage<br/>(inherited from templates)"]
A --> B["cki-tools:production container"]
end
subgraph "cki-tools:production container"
subgraph "Repository Setup"
B --> C["tox -e <lint/test>"]
C --> E["cki_lint.sh/cki_test.sh"]
end
subgraph "Preparation Phase (cki_prepare.sh)"
E --> F{"CKI_SKIP_PREPARE?"}
F -->|false| H["Install dependencies"]
H --> I["Check and update cki-lib version<br/>(in CI/MR jobs)"]
I --> J{"cki_lib_pip_url<br/>override?"}
J -->|yes| K["Uninstall & reinstall<br/>cki-lib + extras"]
J -->|no| M["Process other<br/>*_pip_url overrides"]
K --> M
M --> N["Continue execution"]
F -->|true| N
end
subgraph "Script Execution"
N --> O{"Script Type"}
O -->|cki_lint.sh| P["Configure linters<br/>(flake8, ruff, etc.)"]
O -->|cki_test.sh| Q["Configure pytest<br/>& coverage"]
P --> R["Check disabled/ignored<br/>linters"]
R --> S["maybe_run_linter <linter>"]
Q --> T["run_pytest with coverage"]
end
subgraph "Linter Execution Loop"
S --> U{"Linter disabled?"}
U -->|yes| V["Skip linter<br/>"]
U -->|no| W["run_<linter> function"]
W --> X["Execute actual linter<br/>(flake8, ruff, pylint, etc.)"]
X --> Y{"Linter passed?"}
Y -->|yes| Z["Continue to next"]
Y -->|no| AA["Record failure/warning<br/>(based on ignored list)"]
AA --> Z
V --> Z
Z --> AB{"More linters?"}
AB -->|yes| S
AB -->|no| AC["Check results"]
end
subgraph "Test Execution (pytest)"
T --> AD["Run pytest with<br/>coverage tracking"]
AD --> AE["Generate coverage reports<br/>(HTML, XML, terminal)"]
AE --> AF{"Coverage enabled?"}
AF -->|no| AG["Skip coverage check"]
AF -->|yes| AH["Calculate coverage<br/>percentage"]
AH --> AI{"Coverage decreased?"}
AI -->|no| AG
AI -->|yes| AJ{"Skip coverage<br/>check flag?"}
AJ -->|yes| AG
AJ -->|no| AK["Fail with coverage error"]
AG --> AL["Complete testing"]
AK --> AL
end
subgraph "Final Results"
AC --> AM{"Any failures?"}
AM -->|warnings only| AN["Exit 0<br/>(create .cki_lint_warn)"]
AM -->|failures| AO["Exit 1"]
AM -->|success| AP["Exit 0"]
AL --> AQ{"Test failures?"}
AQ -->|yes| AR["Exit 1"]
AQ -->|no| AS["Exit 0"]
end
end