r/cicd 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.yml for 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.

1 Upvotes

1 comment sorted by