Skip to content

ci: Set up GitHub Actions pipeline (lint, build, test) #2

Description

@notyorch

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

  • Create .github/workflows/ci.yml
  • Add lint script to tup-dashboard/package.json if not present
  • Add ruff or flake8 config to tup-manager/
  • Ensure .env.example has safe defaults for CI (no real secrets needed)
  • Add CI badge to root README.md

Acceptance Criteria

  • PR checks pass green before merge is allowed
  • CI badge visible on README
  • Build failure on broken Dockerfile or lint error

Priority

🔴 High — essential for open-source credibility and safe collaboration

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions