docs: reconcile documentation with reality (P3)
Make the project's documentation match the code and remove the sprawl. The docs
claimed Phase 2.8 (drug interactions) was 'planning/0%' and the backend '~91%
complete' — both wrong: 2.8 is implemented and live, plus the P0/P1 security
and test work is done. Five root CI/CD docs described a 'docker-build' CI job
that was removed; ~18 backend/ status snapshots and ~24 docs/implementation
duplicates cluttered the tree.
Deletions (85 files):
- Root: 4 stale CI/CD reports (CI-CD-{COMPLETION-REPORT,IMPLEMENTATION-SUMMARY,
STATUS-REPORT,FINAL-STATUS}.md) — all describe the removed docker-build job.
- backend/: 18 phase/build/fix snapshots and code-dump .txt files.
- docs/: the 3 one-time reorg reports; ~17 docs/implementation duplicates and
process artifacts; 4 stale docs/development CI docs + git snapshots;
redundant deployment/testing files.
- thoughts/: STATUS.md (said Phase 2.4 in-progress), superseded phase notes and
duplicative research inputs. tmp/ (928KB of CI debug logs, gitignored).
Moves (18 files):
- 9 genuine decision records -> docs/adr/ (Architecture Decision Records),
date-prefixes stripped, with an index README.
- 8 historical-but-valuable phase plans/specs + the old CI-CD-FINAL-SOLUTION ->
docs/archive/ (now-populated, with a README explaining it's superseded
material). thoughts/ tree removed.
Rewrites (13 files) to match reality:
- Drop the fake '% complete' figures everywhere in favor of Implemented /
In-Progress / Planned with concrete endpoint/feature lists.
- Phase 2.8 -> Implemented; add /api/interactions/* and /api/auth/{refresh,
logout} to the endpoint lists; fix 'Rust 1.93' -> edition 2021.
- Add a Security section (token_version validation, hashed refresh-token
persistence, fail-fast config, real-IP audit) and correct the test-coverage
and deployment claims to reality.
- New canonical docs/development/CI-CD.md (4 jobs: format/clippy/build/test,
mongo service, no docker-build + why).
- README, docs/README, product/{STATUS,ROADMAP,PROGRESS,README,introduction},
implementation/README, development/README, testing/README, AI_AGENT_GUIDE,
.cursorrules, .gooserules all updated.
Verified: greps for 'Phase 2.8 (Planning)', 'PLANNING (0%)', 'Rust 1.93',
'91%/10%/85% complete', and 'docker-build' return nothing outside docs/archive;
all internal doc links resolve; backend/src untouched (cargo build clean).
This commit is contained in:
parent
bd1b7c2925
commit
17efc4f656
119 changed files with 469 additions and 17801 deletions
56
docs/development/CI-CD.md
Normal file
56
docs/development/CI-CD.md
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
# CI/CD Pipeline
|
||||
|
||||
The CI pipeline runs on **Forgejo Actions** and is defined in
|
||||
[`.forgejo/workflows/lint-and-build.yml`](../../.forgejo/workflows/lint-and-build.yml).
|
||||
|
||||
**Triggers**: push and pull request to `main` and `develop`.
|
||||
|
||||
## Jobs
|
||||
|
||||
Four jobs, each running in a `rust:latest` container on the `docker` runner:
|
||||
|
||||
| Job | Depends on | Command | Purpose |
|
||||
|-----|-----------|---------|---------|
|
||||
| `format` | — | `cargo fmt --all -- --check` | Strict formatting check (must pass) |
|
||||
| `clippy` | — | `cargo clippy --all-targets --all-features` | Lint (non-strict — warnings shown, don't fail) |
|
||||
| `build` | `format`, `clippy` | `cargo build --release` | Release build |
|
||||
| `test` | `format`, `clippy` | `cargo test --all-targets` | Unit + integration tests |
|
||||
|
||||
`format` and `clippy` run in parallel; `build` and `test` run after both pass.
|
||||
|
||||
### The `test` job
|
||||
|
||||
Integration tests need a live MongoDB, so the `test` job provisions a
|
||||
`mongo:7` **service container** and sets `MONGODB_URI=mongodb://mongo:27017`.
|
||||
The tests target an isolated per-run database and skip gracefully if Mongo is
|
||||
unreachable, so the job stays green even on runners that can't provide service
|
||||
containers.
|
||||
|
||||
## Docker builds are NOT in CI
|
||||
|
||||
There is deliberately **no `docker-build` job**. The Forgejo `act` runner creates
|
||||
isolated networks per job, which breaks every Docker-in-CI approach tried
|
||||
(socket mount, DinD, Buildx, direct host access). Docker images are built
|
||||
separately:
|
||||
|
||||
- **Locally**: `docker build -f backend/docker/Dockerfile backend/`
|
||||
- **On Solaria**: see [../deployment/](../deployment/DEPLOYMENT_GUIDE.md)
|
||||
|
||||
## Running CI checks locally
|
||||
|
||||
Use [`scripts/test-ci-locally.sh`](../../scripts/test-ci-locally.sh), which runs
|
||||
the same format/clippy/build/test sequence. For the integration tests it needs a
|
||||
reachable MongoDB:
|
||||
|
||||
```bash
|
||||
docker run -d -p 27017:27017 --name mongo-test mongo:7
|
||||
./scripts/test-ci-locally.sh
|
||||
```
|
||||
|
||||
## Dashboard
|
||||
|
||||
CI runs: `http://gitea.solivarez.com.ar/alvaro/normogen/actions`
|
||||
|
||||
---
|
||||
|
||||
*Last Updated: 2026-06-27*
|
||||
|
|
@ -1,428 +0,0 @@
|
|||
# CI/CD Improvements - Format Check, PR Validation, and Docker Buildx
|
||||
|
||||
**Date**: 2026-03-17
|
||||
**Status**: ✅ Implemented
|
||||
**Author**: AI Agent
|
||||
|
||||
---
|
||||
|
||||
## Summary
|
||||
|
||||
Enhanced the Forgejo CI/CD pipeline with three major improvements:
|
||||
1. **Format checking** - Enforces consistent code style
|
||||
2. **PR validation** - Automated checks for pull requests
|
||||
3. **Docker Buildx** - Multi-platform Docker builds with caching
|
||||
|
||||
---
|
||||
|
||||
## Changes Made
|
||||
|
||||
### 1. Pull Request Validation
|
||||
|
||||
**Before**:
|
||||
```yaml
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
```
|
||||
|
||||
**After**:
|
||||
```yaml
|
||||
on:
|
||||
push:
|
||||
branches: [main, develop]
|
||||
pull_request:
|
||||
branches: [main, develop]
|
||||
```
|
||||
|
||||
**Benefits**:
|
||||
- ✅ Validates code before merging to main
|
||||
- ✅ Catches issues early in development cycle
|
||||
- ✅ Supports `develop` branch workflow
|
||||
- ✅ Provides automated feedback on PRs
|
||||
|
||||
---
|
||||
|
||||
### 2. Code Format Checking
|
||||
|
||||
**New Job**: `format`
|
||||
```yaml
|
||||
format:
|
||||
name: Check Code Formatting
|
||||
runs-on: docker
|
||||
container:
|
||||
image: rust:1.83-slim
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Check formatting
|
||||
working-directory: ./backend
|
||||
run: cargo fmt --all -- --check
|
||||
```
|
||||
|
||||
**Behavior**:
|
||||
- Runs `rustfmt` in check mode
|
||||
- Fails if code is not properly formatted
|
||||
- Runs in parallel with Clippy (faster feedback)
|
||||
- Uses strict formatting rules from `backend/rustfmt.toml`
|
||||
|
||||
**How to Fix Format Issues**:
|
||||
```bash
|
||||
cd backend
|
||||
cargo fmt --all # Auto-format all code
|
||||
git commit -am "style: auto-format code with rustfmt"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 3. Job Parallelization
|
||||
|
||||
**Before**: Single monolithic job (sequential)
|
||||
|
||||
**After**: Multiple parallel jobs
|
||||
|
||||
```
|
||||
┌─────────────┐ ┌─────────────┐
|
||||
│ Format │ │ Clippy │ ← Run in parallel
|
||||
└──────┬──────┘ └──────┬──────┘
|
||||
│ │
|
||||
└────────┬───────┘
|
||||
▼
|
||||
┌─────────────┐
|
||||
│ Build │ ← Depends on format + clippy
|
||||
└──────┬──────┘
|
||||
▼
|
||||
┌─────────────┐
|
||||
│ Docker Build│ ← Depends on build
|
||||
└─────────────┘
|
||||
```
|
||||
|
||||
**Benefits**:
|
||||
- ⚡ Faster feedback (format + clippy run simultaneously)
|
||||
- 🎯 Clearer failure messages (separate jobs)
|
||||
- 📊 Better resource utilization
|
||||
- 🔄 Can run format/clippy without building
|
||||
|
||||
---
|
||||
|
||||
### 4. Docker Buildx Integration
|
||||
|
||||
**New Job**: `docker-build`
|
||||
|
||||
**Configuration**:
|
||||
- Uses `docker:cli` container
|
||||
- DinD service for isolated builds
|
||||
- Buildx for advanced features
|
||||
- Local caching for faster builds
|
||||
|
||||
**Features**:
|
||||
```yaml
|
||||
services:
|
||||
docker:
|
||||
image: docker:dind
|
||||
command: ["dockerd", "--host=tcp://0.0.0.0:2375", "--tls=false"]
|
||||
options: >-
|
||||
--privileged
|
||||
-e DOCKER_TLS_CERTDIR=
|
||||
```
|
||||
|
||||
**Buildx Commands**:
|
||||
```bash
|
||||
# Create builder with host networking
|
||||
docker buildx create --use --name builder --driver docker --driver-opt network=host
|
||||
|
||||
# Build with caching
|
||||
docker buildx build \
|
||||
--tag normogen-backend:${{ github.sha }} \
|
||||
--tag normogen-backend:latest \
|
||||
--cache-from type=local,src=/tmp/.buildx-cache \
|
||||
--cache-to type=local,dest=/tmp/.buildx-cache-new,mode=max \
|
||||
--load \
|
||||
.
|
||||
```
|
||||
|
||||
**Benefits**:
|
||||
- 🏗️ Multi-platform build support (can build for ARM, etc.)
|
||||
- 💾 Smart caching (faster subsequent builds)
|
||||
- 🔒 Isolated builds (DinD)
|
||||
- 🐳 Production-ready images
|
||||
- 📦 Versioned images (Git SHA tags)
|
||||
|
||||
---
|
||||
|
||||
## Workflow Structure
|
||||
|
||||
### Job Dependencies
|
||||
|
||||
```yaml
|
||||
format: # No dependencies
|
||||
clippy: # No dependencies
|
||||
build: # needs: [format, clippy]
|
||||
docker: # needs: [build]
|
||||
summary: # needs: [format, clippy, build, docker]
|
||||
```
|
||||
|
||||
### Execution Flow
|
||||
|
||||
1. **Parallel Stage** (Fast feedback)
|
||||
- Format check (~10s)
|
||||
- Clippy lint (~30s)
|
||||
|
||||
2. **Build Stage** (If quality checks pass)
|
||||
- Build release binary (~60s)
|
||||
|
||||
3. **Docker Stage** (If build succeeds)
|
||||
- Build Docker image with Buildx (~40s)
|
||||
|
||||
4. **Summary Stage** (Always runs)
|
||||
- Report overall status
|
||||
- Fail if any job failed
|
||||
|
||||
---
|
||||
|
||||
## CI Environment
|
||||
|
||||
### Runner Details
|
||||
- **Location**: Solaria server
|
||||
- **Type**: Docker-based runner
|
||||
- **Label**: `docker`
|
||||
- **Docker Version**: 29.0.0
|
||||
- **Buildx Version**: v0.29.1
|
||||
|
||||
### Docker-in-Docker Setup
|
||||
- **Service**: `docker:dind`
|
||||
- **Socket**: TCP endpoint (not Unix socket)
|
||||
- **Privileged Mode**: Enabled
|
||||
- **TLS**: Disabled for local communication
|
||||
|
||||
### Why TCP Socket?
|
||||
|
||||
Previous attempts used Unix socket mounting:
|
||||
```yaml
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
```
|
||||
|
||||
This approach has issues:
|
||||
- ⚠️ Security concerns (host Docker access)
|
||||
- ⚠️ Permission issues
|
||||
- ⚠️ Not portable
|
||||
|
||||
Current approach uses TCP:
|
||||
```yaml
|
||||
services:
|
||||
docker:
|
||||
image: docker:dind
|
||||
command: ["dockerd", "--host=tcp://0.0.0.0:2375", "--tls=false"]
|
||||
```
|
||||
|
||||
Benefits:
|
||||
- ✅ Isolated Docker daemon
|
||||
- ✅ No permission issues
|
||||
- ✅ Better security
|
||||
- ✅ Portable across runners
|
||||
|
||||
---
|
||||
|
||||
## Artifacts
|
||||
|
||||
### Binary Upload
|
||||
```yaml
|
||||
- name: Upload binary artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: normogen-backend
|
||||
path: backend/target/release/normogen-backend
|
||||
```
|
||||
|
||||
### Docker Images
|
||||
Built images are tagged:
|
||||
- `normogen-backend:latest` - Latest build
|
||||
- `normogen-backend:{sha}` - Versioned by commit SHA
|
||||
|
||||
**Note**: Pushing to registry is commented out (requires secrets)
|
||||
|
||||
---
|
||||
|
||||
## Usage
|
||||
|
||||
### For Developers
|
||||
|
||||
**Before Pushing**:
|
||||
```bash
|
||||
# Check formatting locally
|
||||
cd backend
|
||||
cargo fmt --all -- --check
|
||||
|
||||
# Run clippy locally
|
||||
cargo clippy --all-targets --all-features -- -D warnings
|
||||
|
||||
# Build to ensure it compiles
|
||||
cargo build --release
|
||||
```
|
||||
|
||||
**If Format Check Fails**:
|
||||
```bash
|
||||
# Auto-fix formatting
|
||||
cargo fmt --all
|
||||
|
||||
# Commit the changes
|
||||
git add .
|
||||
git commit -m "style: auto-format code"
|
||||
git push
|
||||
```
|
||||
|
||||
**Triggering CI**:
|
||||
- Push to `main` or `develop`
|
||||
- Open/Update a PR to `main` or `develop`
|
||||
|
||||
### For PR Review
|
||||
|
||||
CI will automatically check:
|
||||
- ✅ Code is properly formatted
|
||||
- ✅ No Clippy warnings
|
||||
- ✅ Builds successfully
|
||||
- ✅ Docker image builds
|
||||
|
||||
**All checks must pass before merging!**
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Format Check Fails
|
||||
|
||||
**Error**: `code is not properly formatted`
|
||||
|
||||
**Solution**:
|
||||
```bash
|
||||
cd backend
|
||||
cargo fmt --all
|
||||
git commit -am "style: fix formatting"
|
||||
```
|
||||
|
||||
### Clippy Fails
|
||||
|
||||
**Error**: `warning: unused variable` etc.
|
||||
|
||||
**Solution**:
|
||||
1. Fix warnings locally
|
||||
2. Run `cargo clippy --all-targets --all-features -- -D warnings`
|
||||
3. Commit fixes
|
||||
|
||||
### Docker Build Fails
|
||||
|
||||
**Error**: `Cannot connect to Docker daemon`
|
||||
|
||||
**Check**:
|
||||
- DinD service is running
|
||||
- TCP endpoint is accessible
|
||||
- No firewall issues
|
||||
|
||||
**Solution**: The workflow uses privileged mode and proper networking - if it fails, check runner configuration.
|
||||
|
||||
### Build Cache Issues
|
||||
|
||||
**Error**: Cache growing too large
|
||||
|
||||
**Solution**: The workflow uses a cache rotation strategy:
|
||||
```bash
|
||||
# Build with new cache
|
||||
--cache-to type=local,dest=/tmp/.buildx-cache-new,mode=max
|
||||
|
||||
# Move new cache (removes old)
|
||||
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Future Enhancements
|
||||
|
||||
### Ready to Enable (Commented Out)
|
||||
|
||||
**1. Docker Registry Push**
|
||||
```yaml
|
||||
- name: Push Docker image
|
||||
if: github.ref == 'refs/heads/main'
|
||||
run: |
|
||||
docker push normogen-backend:${{ github.sha }}
|
||||
docker push normogen-backend:latest
|
||||
```
|
||||
|
||||
**Requires**:
|
||||
- Set up container registry
|
||||
- Configure secrets: `REGISTRY_USER`, `REGISTRY_PASSWORD`
|
||||
|
||||
**2. Integration Tests**
|
||||
```yaml
|
||||
test:
|
||||
services:
|
||||
mongodb:
|
||||
image: mongo:7
|
||||
steps:
|
||||
- name: Run tests
|
||||
run: cargo test --verbose
|
||||
```
|
||||
|
||||
**3. Security Scanning**
|
||||
```yaml
|
||||
security:
|
||||
steps:
|
||||
- name: Run cargo audit
|
||||
run: cargo audit
|
||||
```
|
||||
|
||||
### Planned Enhancements
|
||||
|
||||
- [ ] Add MongoDB for integration tests
|
||||
- [ ] Add code coverage reporting (tarpaulin)
|
||||
- [ ] Add security audit (cargo-audit)
|
||||
- [ ] Add deployment automation to Solaria
|
||||
- [ ] Add staging environment deployment
|
||||
- [ ] Add performance benchmarking
|
||||
|
||||
---
|
||||
|
||||
## Monitoring
|
||||
|
||||
### View Workflow Results
|
||||
|
||||
1. Go to: http://gitea.soliverez.com.ar/alvaro/normogen/actions
|
||||
2. Click on the latest workflow run
|
||||
3. View individual job results:
|
||||
- Format check
|
||||
- Clippy lint
|
||||
- Build
|
||||
- Docker build
|
||||
- Summary
|
||||
|
||||
### Job Status Badges
|
||||
|
||||
Add to README.md (when Forgejo supports badges):
|
||||
```markdown
|
||||

|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Related Documentation
|
||||
|
||||
- [Forgejo CI/CD Pipeline](./FORGEJO-CI-CD-PIPELINE.md)
|
||||
- [Forgejo Runner Update](./FORGEJO-RUNNER-UPDATE.md)
|
||||
- [Deployment Guide](../deployment/README.md)
|
||||
- [Backend Build Status](../../backend/BUILD-STATUS.md)
|
||||
|
||||
---
|
||||
|
||||
## Summary
|
||||
|
||||
✅ **Format checking** - Ensures consistent code style
|
||||
✅ **PR validation** - Automated checks for pull requests
|
||||
✅ **Docker Buildx** - Advanced Docker builds with caching
|
||||
✅ **Parallel jobs** - Faster feedback
|
||||
✅ **Better diagnostics** - Separate jobs for each concern
|
||||
✅ **Production-ready** - Builds and tests Docker images
|
||||
|
||||
**Status**: Ready to deploy! 🚀
|
||||
|
|
@ -1,94 +0,0 @@
|
|||
# CI/CD Quick Reference
|
||||
|
||||
Fast reference for the Forgejo CI/CD pipeline.
|
||||
|
||||
---
|
||||
|
||||
## Trigger CI
|
||||
|
||||
```bash
|
||||
# Push to main or develop
|
||||
git push origin main
|
||||
git push origin develop
|
||||
|
||||
# Create/update pull request
|
||||
# Automatically triggers CI
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Local Pre-Commit Check
|
||||
|
||||
```bash
|
||||
# Run all CI checks locally
|
||||
./scripts/test-ci-locally.sh
|
||||
|
||||
# Individual checks
|
||||
cd backend
|
||||
cargo fmt --all -- --check # Format check
|
||||
cargo clippy --all-targets --all-features -- -D warnings # Lint
|
||||
cargo build --release # Build
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Fix Common Issues
|
||||
|
||||
### Format Fail
|
||||
```bash
|
||||
cd backend
|
||||
cargo fmt --all
|
||||
git commit -am "style: auto-format"
|
||||
```
|
||||
|
||||
### Clippy Fail
|
||||
```bash
|
||||
cd backend
|
||||
cargo clippy --all-targets --all-features -- -D warnings
|
||||
# Fix issues, then commit
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## CI Jobs
|
||||
|
||||
| Job | Time | Purpose |
|
||||
|-----|------|---------|
|
||||
| format | ~10s | Check code formatting |
|
||||
| clippy | ~30s | Run linter |
|
||||
| build | ~60s | Build binary |
|
||||
| docker-build | ~40s | Build Docker image |
|
||||
|
||||
**Total**: ~2.5 min (parallel execution)
|
||||
|
||||
---
|
||||
|
||||
## Monitor CI
|
||||
|
||||
URL: http://gitea.soliverez.com.ar/alvaro/normogen/actions
|
||||
|
||||
---
|
||||
|
||||
## Docker Build Details
|
||||
|
||||
- **Builder**: Docker Buildx v0.29.1
|
||||
- **Service**: DinD (docker:dind)
|
||||
- **Socket**: TCP (localhost:2375)
|
||||
- **Cache**: BuildKit local cache
|
||||
- **Images**:
|
||||
- `normogen-backend:latest`
|
||||
- `normogen-backend:{sha}`
|
||||
|
||||
---
|
||||
|
||||
## Workflow File
|
||||
|
||||
`.forgejo/workflows/lint-and-build.yml`
|
||||
|
||||
---
|
||||
|
||||
## Documentation
|
||||
|
||||
- [Full Documentation](./CI-IMPROVEMENTS.md)
|
||||
- [Implementation Summary](../CI-CD-IMPLEMENTATION-SUMMARY.md)
|
||||
- [Original Pipeline](./FORGEJO-CI-CD-PIPELINE.md)
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
#!/bin/bash
|
||||
git add -A
|
||||
git commit -m 'feat(backend): Phase 2.5 permission and share models'
|
||||
git push origin main
|
||||
|
|
@ -1,73 +0,0 @@
|
|||
# Forgejo CI/CD Pipeline
|
||||
|
||||
## Status: ✅ Implemented
|
||||
|
||||
**Date**: 2026-02-15 19:55:00 UTC
|
||||
|
||||
---
|
||||
|
||||
## Pipeline Stages
|
||||
|
||||
### 1. Lint Job
|
||||
- Check code formatting with rustfmt
|
||||
- Run clippy linter with strict rules
|
||||
|
||||
### 2. Build Job
|
||||
- Build all targets with cargo
|
||||
- Run all tests
|
||||
|
||||
### 3. Docker Build Job
|
||||
- Build production Docker image
|
||||
- Build development Docker image
|
||||
|
||||
---
|
||||
|
||||
## Trigger Events
|
||||
|
||||
- Push to main branch
|
||||
- Push to develop branch
|
||||
- Pull requests to main/develop
|
||||
|
||||
---
|
||||
|
||||
## Configuration Files
|
||||
|
||||
- .forgejo/workflows/lint-and-build.yml
|
||||
- backend/clippy.toml
|
||||
- backend/rustfmt.toml
|
||||
|
||||
---
|
||||
|
||||
## Running Locally
|
||||
|
||||
### Check formatting
|
||||
```bash
|
||||
cd backend
|
||||
cargo fmt --all -- --check
|
||||
cargo fmt --all # to fix
|
||||
```
|
||||
|
||||
### Run clippy
|
||||
```bash
|
||||
cd backend
|
||||
cargo clippy --all-targets --all-features -- -D warnings
|
||||
```
|
||||
|
||||
### Build
|
||||
```bash
|
||||
cd backend
|
||||
cargo build --verbose
|
||||
```
|
||||
|
||||
### Run tests
|
||||
```bash
|
||||
cd backend
|
||||
cargo test --verbose
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Viewing Results
|
||||
|
||||
After pushing, go to:
|
||||
http://gitea.soliverez.com.ar/alvaro/normogen/actions
|
||||
|
|
@ -1,80 +0,0 @@
|
|||
# Forgejo CI/CD Runner Update
|
||||
|
||||
**Date**: 2026-02-15 20:41:00 UTC
|
||||
**Change**: Use Docker-labeled runner for all jobs
|
||||
|
||||
---
|
||||
|
||||
## What Changed
|
||||
|
||||
Updated all jobs in the CI/CD pipeline to use the Docker-labeled runner instead of the default ubuntu-latest runner.
|
||||
|
||||
**Before**:
|
||||
```yaml
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
```
|
||||
|
||||
**After**:
|
||||
```yaml
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: docker
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Why Use the Docker Runner?
|
||||
|
||||
### **Benefits**
|
||||
- ✅ Native Docker support
|
||||
- ✅ Faster builds (Docker already available)
|
||||
- ✅ Better performance on your infrastructure
|
||||
- ✅ Consistent with your server setup
|
||||
- ✅ Can build Docker images directly
|
||||
|
||||
### **Runner Details**
|
||||
- **Label**: `docker`
|
||||
- **Platform**: Docker-based
|
||||
- **Available**: Yes (configured on your server)
|
||||
|
||||
---
|
||||
|
||||
## Affected Jobs
|
||||
|
||||
All three jobs now use the Docker runner:
|
||||
|
||||
1. **lint** - `runs-on: docker`
|
||||
2. **build** - `runs-on: docker`
|
||||
3. **docker-build** - `runs-on: docker`
|
||||
|
||||
---
|
||||
|
||||
## Verification
|
||||
|
||||
After pushing this change:
|
||||
|
||||
1. Go to: http://gitea.soliverez.com.ar/alvaro/normogen/actions
|
||||
2. Click on the latest workflow run
|
||||
3. Verify all jobs use the Docker runner
|
||||
4. Check that jobs complete successfully
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### If jobs fail with "runner not found":
|
||||
1. Check runner status in Forgejo admin panel
|
||||
2. Verify the docker label is configured
|
||||
3. Check runner is online and unpaused
|
||||
|
||||
### If Docker builds fail:
|
||||
1. Verify Docker is installed on the runner
|
||||
2. Check runner has sufficient disk space
|
||||
3. Verify runner can access Docker registry
|
||||
|
||||
---
|
||||
|
||||
**File Modified**: `.forgejo/workflows/lint-and-build.yml`
|
||||
**Status**: ✅ Updated & Ready to Push
|
||||
|
|
@ -1 +0,0 @@
|
|||
git add -A && git commit -m 'feat(backend): Phase 2.5 permission and share models' && git push origin main
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
eb0e2cc feat(backend): Phase 2.5 permission and share models
|
||||
3eeef6d docs: Mark Phase 2.4 as COMPLETE
|
||||
a3c6a43 feat(backend): Complete Phase 2.4 - User Management Enhancement
|
||||
88c9319 docs: Confirm Phase 2.3 completion
|
||||
04f19e8 fix(ci): Use Docker-labeled runner for all CI/CD jobs
|
||||
|
||||
eb0e2cc feat(backend): Phase 2.5 permission and share models
|
||||
3eeef6d docs: Mark Phase 2.4 as COMPLETE
|
||||
a3c6a43 feat(backend): Complete Phase 2.4 - User Management Enhancement
|
||||
88c9319 docs: Confirm Phase 2.3 completion
|
||||
04f19e8 fix(ci): Use Docker-labeled runner for all CI/CD jobs
|
||||
|
|
@ -1,55 +0,0 @@
|
|||
# Git Status
|
||||
|
||||
## Status
|
||||
|
||||
M backend/test-password-recovery.sh
|
||||
?? COMMIT-INSTRUCTIONS.txt
|
||||
?? COMMIT-NOW.sh
|
||||
?? GIT-COMMAND.txt
|
||||
?? GIT-LOG.md
|
||||
?? GIT-STATUS.md
|
||||
?? GIT-STATUS.txt
|
||||
?? PHASE-2-5-GIT-STATUS.md
|
||||
?? backend/API-TEST-RESULTS.md
|
||||
?? backend/ERROR-ANALYSIS.md
|
||||
?? backend/PASSWORD-RECOVERY-TEST-RESULTS.md
|
||||
?? backend/PHASE-2-5-CREATED.txt
|
||||
?? backend/PHASE-2.4-SPEC.md
|
||||
?? backend/quick-test.sh
|
||||
?? backend/tmp/
|
||||
|
||||
M backend/test-password-recovery.sh
|
||||
?? COMMIT-INSTRUCTIONS.txt
|
||||
?? COMMIT-NOW.sh
|
||||
?? GIT-COMMAND.txt
|
||||
?? GIT-LOG.md
|
||||
?? GIT-STATUS.md
|
||||
?? GIT-STATUS.txt
|
||||
?? PHASE-2-5-GIT-STATUS.md
|
||||
?? backend/API-TEST-RESULTS.md
|
||||
?? backend/ERROR-ANALYSIS.md
|
||||
?? backend/PASSWORD-RECOVERY-TEST-RESULTS.md
|
||||
?? backend/PHASE-2-5-CREATED.txt
|
||||
?? backend/PHASE-2.4-SPEC.md
|
||||
?? backend/quick-test.sh
|
||||
?? backend/tmp/
|
||||
|
||||
|
||||
## Recent Commits
|
||||
|
||||
eb0e2cc feat(backend): Phase 2.5 permission and share models
|
||||
3eeef6d docs: Mark Phase 2.4 as COMPLETE
|
||||
a3c6a43 feat(backend): Complete Phase 2.4 - User Management Enhancement
|
||||
|
||||
eb0e2cc feat(backend): Phase 2.5 permission and share models
|
||||
3eeef6d docs: Mark Phase 2.4 as COMPLETE
|
||||
a3c6a43 feat(backend): Complete Phase 2.4 - User Management Enhancement
|
||||
|
||||
|
||||
## Diff Stats
|
||||
|
||||
backend/test-password-recovery.sh | 46 ++++++++++++++++++++-------------------
|
||||
1 file changed, 24 insertions(+), 22 deletions(-)
|
||||
|
||||
backend/test-password-recovery.sh | 46 ++++++++++++++++++++-------------------
|
||||
1 file changed, 24 insertions(+), 22 deletions(-)
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
M backend/test-password-recovery.sh
|
||||
?? GIT-LOG.md
|
||||
?? GIT-STATUS.md
|
||||
?? GIT-STATUS.txt
|
||||
?? PHASE-2-5-GIT-STATUS.md
|
||||
?? backend/API-TEST-RESULTS.md
|
||||
?? backend/ERROR-ANALYSIS.md
|
||||
?? backend/PASSWORD-RECOVERY-TEST-RESULTS.md
|
||||
?? backend/PHASE-2.4-SPEC.md
|
||||
?? backend/quick-test.sh
|
||||
?? backend/tmp/
|
||||
|
||||
M backend/test-password-recovery.sh
|
||||
?? GIT-LOG.md
|
||||
?? GIT-STATUS.md
|
||||
?? GIT-STATUS.txt
|
||||
?? PHASE-2-5-GIT-STATUS.md
|
||||
?? backend/API-TEST-RESULTS.md
|
||||
?? backend/ERROR-ANALYSIS.md
|
||||
?? backend/PASSWORD-RECOVERY-TEST-RESULTS.md
|
||||
?? backend/PHASE-2.4-SPEC.md
|
||||
?? backend/quick-test.sh
|
||||
?? backend/tmp/
|
||||
|
|
@ -4,22 +4,13 @@ This section contains development workflow documentation, Git guidelines, and CI
|
|||
|
||||
## 📚 Workflow Documentation
|
||||
|
||||
### Git Workflow
|
||||
- **[GIT-STATUS.md](./GIT-STATUS.md)** - Git workflow reference
|
||||
- **[GIT-LOG.md](./GIT-LOG.md)** - Git log history
|
||||
- **[GIT-COMMAND.txt](./GIT-COMMAND.txt)** - Useful Git commands
|
||||
- **[GIT-STATUS.txt](./GIT-STATUS.txt)** - Git status reference
|
||||
|
||||
### Commit Guidelines
|
||||
- **[COMMIT-INSTRUCTIONS.txt](./COMMIT-INSTRUCTIONS.txt)** - Commit message guidelines
|
||||
- **[commit_message.txt](./commit_message.txt)** - Commit message template
|
||||
- **[COMMIT-NOW.sh](./COMMIT-NOW.sh)** - Quick commit script
|
||||
|
||||
## 🔄 CI/CD
|
||||
|
||||
### Forgejo Configuration
|
||||
- **[FORGEJO-CI-CD-PIPELINE.md](./FORGEJO-CI-CD-PIPELINE.md)** - CI/CD pipeline documentation
|
||||
- **[FORGEJO-RUNNER-UPDATE.md](./FORGEJO-RUNNER-UPDATE.md)** - Runner update notes
|
||||
- **[CI-CD.md](./CI-CD.md)** - The current CI/CD pipeline (format / clippy / build / test)
|
||||
|
||||
## 🌳 Branch Strategy
|
||||
|
||||
|
|
@ -80,11 +71,6 @@ git add .
|
|||
git commit -m "feat(scope): description"
|
||||
```
|
||||
|
||||
Or use the quick commit script:
|
||||
```bash
|
||||
./docs/development/COMMIT-NOW.sh
|
||||
```
|
||||
|
||||
### 4. Push and Create PR
|
||||
```bash
|
||||
git push origin feature/your-feature-name
|
||||
|
|
@ -138,4 +124,4 @@ git branch -d feature/your-feature-name
|
|||
|
||||
---
|
||||
|
||||
*Last Updated: 2026-03-09*
|
||||
*Last Updated: 2026-06-27*
|
||||
|
|
|
|||
|
|
@ -1,49 +0,0 @@
|
|||
feat(backend): Implement Phase 2.7 Task 1 - Medication Management System
|
||||
|
||||
This commit implements the complete medication management system,
|
||||
which is a critical MVP feature for Normogen.
|
||||
|
||||
Features Implemented:
|
||||
- 7 fully functional API endpoints for medication CRUD operations
|
||||
- Dose logging system (taken/skipped/missed)
|
||||
- Real-time adherence calculation with configurable periods
|
||||
- Multi-person support for families managing medications together
|
||||
- Comprehensive security (JWT authentication, ownership verification)
|
||||
- Audit logging for all operations
|
||||
|
||||
API Endpoints:
|
||||
- POST /api/medications - Create medication
|
||||
- GET /api/medications - List medications (by profile)
|
||||
- GET /api/medications/:id - Get medication details
|
||||
- PUT /api/medications/:id - Update medication
|
||||
- DELETE /api/medications/:id - Delete medication
|
||||
- POST /api/medications/:id/log - Log dose
|
||||
- GET /api/medications/:id/adherence - Calculate adherence
|
||||
|
||||
Security:
|
||||
- JWT authentication required for all endpoints
|
||||
- User ownership verification on every request
|
||||
- Profile ownership validation
|
||||
- Audit logging for all CRUD operations
|
||||
|
||||
Multi-Person Support:
|
||||
- Parents can manage children's medications
|
||||
- Caregivers can track family members' meds
|
||||
- Profile-based data isolation
|
||||
- Family-focused workflow
|
||||
|
||||
Adherence Tracking:
|
||||
- Real-time calculation: (taken / total) × 100
|
||||
- Configurable time periods (default: 30 days)
|
||||
- Tracks taken, missed, and skipped doses
|
||||
- Actionable health insights
|
||||
|
||||
Files Modified:
|
||||
- backend/src/handlers/medications.rs - New handler with 7 endpoints
|
||||
- backend/src/handlers/mod.rs - Added medications module
|
||||
- backend/src/models/medication.rs - Enhanced with repository pattern
|
||||
- backend/src/main.rs - Added 7 new routes
|
||||
|
||||
Phase: 2.7 - Task 1 (Medication Management)
|
||||
Status: Complete and production-ready
|
||||
Lines of Code: ~550 lines
|
||||
Loading…
Add table
Add a link
Reference in a new issue