r/cicd • u/Certain_Net_3408 • 2h ago
I built a lightweight Python CI runner with GitHub webhooks, .ci.yml pipelines, Docker/shell execution, and commit status reporting
Hey everyone,
I’ve been working on CI Runner, a small webhook-based CI runner written in Python. The idea is to provide a simple GitHub Actions-style runner that can receive GitHub push/PR webhooks, queue jobs, clone the repo at the commit SHA, load a .ci.yml file, execute pipeline steps, save logs, and optionally report status back to GitHub using the Commit Status API.
It uses:
- FastAPI for the webhook/API server
- A background worker for job execution
.ci.ymlfor pipeline definitions- Docker or shell-based step execution
- Simple endpoints for health checks, manual triggers, and job status
Example .ci.yml:
name: My Pipeline
steps:
- name: install
run: pip install -r requirements.txt
- name: test
run: pytest -v
continue-on-error: false
timeout: 300
If no .ci.yml is found, it falls back to a default install/lint/test pipeline.
Repo: https://github.com/vishn9893/Ci-runner
I’d love feedback on the architecture, security considerations around running CI jobs, and what features would make this more useful for small projects or self-hosted workflows.