Files
fete/specs/003-cicd-pipeline/spec.md
nitrix 6aeb4b8bca Migrate project artifacts to spec-kit format
- Move cross-cutting docs (personas, design system, implementation phases,
  Ideen.md) to .specify/memory/
- Move cross-cutting research and plans to .specify/memory/research/ and
  .specify/memory/plans/
- Extract 5 setup tasks from spec/setup-tasks.md into individual
  specs/001-005/spec.md files with spec-kit template format
- Extract 20 user stories from spec/userstories.md into individual
  specs/006-026/spec.md files with spec-kit template format
- Relocate feature-specific research and plan docs into specs/[feature]/
- Add spec-kit constitution, templates, scripts, and slash commands
- Slim down CLAUDE.md to Claude-Code-specific config, delegate principles
  to .specify/memory/constitution.md
- Update ralph.sh with stream-json output and per-iteration logging
- Delete old spec/ and docs/agents/ directories
- Gitignore Ralph iteration JSONL logs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 20:19:41 +01:00

2.7 KiB

Feature Specification: CI/CD Pipeline

Feature: 003-cicd-pipeline Created: 2026-03-06 Status: Implemented Source: Migrated from spec/setup-tasks.md

Note: This is a setup task (infrastructure), not a user-facing feature. It describes the CI/CD pipeline that validates every push to the repository.

User Scenarios & Testing

Setup Task T-3 — CI/CD Pipeline (Priority: P0)

Set up a Gitea Actions CI/CD pipeline that runs on every push, ensuring code quality before deployment.

Acceptance Scenarios:

  1. Given a push is made to the repository, When the Gitea Actions workflow triggers, Then backend tests run via Maven, frontend tests run via Vitest, and the Docker image is built.

  2. Given all tests pass and the build succeeds, When the pipeline completes, Then the Docker image is published to the Gitea container registry.

  3. Given any test fails or the build breaks, When the pipeline runs, Then it fails visibly and the Docker image is not published.

  4. Given the workflow file exists, When inspected, Then it is located in .gitea/workflows/ and runs on push.

Edge Cases

  • Pipeline must not publish the image if tests pass but the Docker build itself fails.
  • Docker image is only published to the Gitea container registry on the same instance (no external registries).

Requirements

Functional Requirements

  • FR-T03-01: Gitea Actions workflow file in .gitea/workflows/ runs on push: test, build, publish Docker image.
  • FR-T03-02: Backend tests run via Maven as part of the pipeline.
  • FR-T03-03: Frontend tests run via Vitest as part of the pipeline.
  • FR-T03-04: Docker image is published to the Gitea container registry on the same instance.
  • FR-T03-05: Pipeline fails visibly if any test fails or the build breaks.
  • FR-T03-06: Docker image is only published if all tests pass and the build succeeds.

Notes

Per Q-5 resolution: the project uses Gitea as its hosting and CI/CD platform. The pipeline uses Gitea Actions (.gitea/workflows/) and publishes Docker images to the Gitea container registry. T-3 depends on T-1 (repository structure with both projects to test and build) and T-2 (Dockerfile used by the pipeline to build and publish the container image).

Dependencies: T-1, T-2

Success Criteria

  • Gitea Actions workflow file in .gitea/workflows/ runs on push: test, build, publish Docker image
  • Backend tests run via Maven
  • Frontend tests run via Vitest
  • Docker image is published to the Gitea container registry on the same instance
  • Pipeline fails visibly if any test fails or the build breaks
  • Docker image is only published if all tests pass and the build succeeds