Overview
There is currently no CI/CD pipeline in the repository. Every change goes to main without automated validation, which makes the project harder to trust for potential collaborators or clients.
Problem
- No automated linting or type checking on PRs
- Docker images are never tested before merge
- No signal that the stack actually builds end-to-end
- Reduces perceived technical credibility of the project
Proposed Solution
Add a GitHub Actions workflow that runs on every PR and push to main.
Suggested Workflow File
.github/workflows/ci.yml
name: CI
on:
push:
branches: [main]
pull_request:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Lint Python (tup-manager)
run: |
pip install ruff
ruff check tup-manager/
- name: Lint TypeScript (tup-dashboard)
run: |
cd tup-dashboard && npm ci && npm run lint
build:
runs-on: ubuntu-latest
needs: lint
steps:
- uses: actions/checkout@v4
- name: Build all images
run: docker compose build --no-cache
integration:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v4
- name: Smoke test (stack up + healthcheck)
run: |
cp .env.example .env
docker compose up -d --wait
curl -f http://localhost/api/v1/health
docker compose down
Changes Required
Acceptance Criteria
Priority
🔴 High — essential for open-source credibility and safe collaboration
Overview
There is currently no CI/CD pipeline in the repository. Every change goes to
mainwithout automated validation, which makes the project harder to trust for potential collaborators or clients.Problem
Proposed Solution
Add a GitHub Actions workflow that runs on every PR and push to
main.Suggested Workflow File
.github/workflows/ci.ymlChanges Required
.github/workflows/ci.ymllintscript totup-dashboard/package.jsonif not presentrufforflake8config totup-manager/.env.examplehas safe defaults for CI (no real secrets needed)README.mdAcceptance Criteria
Priority
🔴 High — essential for open-source credibility and safe collaboration