- 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>
56 lines
2.7 KiB
Markdown
56 lines
2.7 KiB
Markdown
# 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
|
|
|
|
- [x] Gitea Actions workflow file in `.gitea/workflows/` runs on push: test, build, publish Docker image
|
|
- [x] Backend tests run via Maven
|
|
- [x] Frontend tests run via Vitest
|
|
- [x] Docker image is published to the Gitea container registry on the same instance
|
|
- [x] Pipeline fails visibly if any test fails or the build breaks
|
|
- [x] Docker image is only published if all tests pass and the build succeeds
|