- 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>
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:
-
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.
-
Given all tests pass and the build succeeds, When the pipeline completes, Then the Docker image is published to the Gitea container registry.
-
Given any test fails or the build breaks, When the pipeline runs, Then it fails visibly and the Docker image is not published.
-
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