Configuration·Python Automation for IT
CI Pipeline for Python Automation
A test suite nobody runs is documentation. This guide builds the pipeline as a shell script first - lint, format, test, coverage - watches each gate fail and get fixed, then expresses the same four commands as a GitHub Actions workflow and as a pre-commit hook. Including the YAML surprise in every workflow file ever written, and what happens when somebody uses `--no-verify`.
Remote Hosts and CI/CD Guide 37 of 39 Intermediate
- Python3.14.4
- Control nodeUbuntu 26.04 LTS
- Managed hostsRHEL 10.0
- requests2.34.2
- paramiko5.0.0
- pytest9.1.1
- PyYAML6.0.3
- boto3 / botocore1.43.78
- TimeAbout 20 min
- Reviewed24 August 2026
Written against the versions above. ruff 0.16.4, coverage 7.15.4, pytest 9.1.1, git 2.53. The workflow file targets `actions/checkout@v4` and `actions/setup-python@v5`. `coverage --fail-under` exits 2, which is worth knowing before you write `if [ $? -eq 1 ]`.
| Server Name | IP Address | OS | Roles | CPU | RAM | HDD |
|---|---|---|---|---|---|---|
| RUNNER01 | 192.168.0.27 | Ubuntu 26.04 LTS | Control node - every script in this path runs here | 2 Core | 4 GB | 50 GB |
Before you start
- guide 35 - the suite this runs.
- guide 5 - what gates a gate.
- guide 13 - and the reason the
on:key is not a string.
-
The project a pipeline runs against
-
One script that is the pipeline
-
Gate one, and a fix it can apply itself
-
Gate two, which has no opinion to argue with
-
Gate four, and the branch nobody tested
-
The same gates as a workflow file
-
Which is a YAML trap, not a GitHub one
-
The commands are the same commands
-
A pre-commit hook, so it fails before the push
-
And what --no-verify costs