3.1 KiB
3.1 KiB
CI/CD Setup — Registry Push Configuration
One-Time Setup
The CI/CD pipeline automatically builds and pushes Docker images when you push to main.
1. Create or Get Registry Token
Option A: Use Organization Token (Recommended)
# Ask Rock for the existing 'rock' organization PAT
# It should already have write:package permissions
Option B: Create Personal Token
# In browser: https://git.riotpiao.com/user/settings/tokens
# 1. Click "Generate New Token"
# 2. Name: "Docker Registry"
# 3. Scope: Check `write:package`
# 4. Generate and copy the token
2. Add Repository Secret
Go to: https://git.riotpiao.com/rock/poimen-memory/settings/secrets
Add secret:
- Name:
REGISTRY_PAT - Value:
<token-from-step-1> - Save
3. Verify Setup
# Push a commit (any change will do)
cd ~/workplace/Poimen/memory
git commit --allow-empty -m "Trigger CI build"
git push origin main
# Check Actions tab
# https://git.riotpiao.com/rock/poimen-memory/actions
How It Works
Push to main
↓
Forgejo Actions triggered
↓
Test: cargo test --all
↓ (only if tests pass)
Build: docker build -t forgejo.riotpiao.com/rock/poimen-memory:latest .
↓
Push: docker push (using REGISTRY_PAT secret)
↓
ArgoCD detects new image
↓
Auto-deploy to poimen namespace
Check Status
Web UI — See build progress:
https://git.riotpiao.com/rock/poimen-memory/actions
CLI — Watch deployment:
kubectl get application -n argocd poimen-memory-app -w
kubectl get pods -n poimen -l app.kubernetes.io/name=poimen-memory -w
Verify Image — Check registry:
docker pull forgejo.riotpiao.com/rock/poimen-memory:latest
Once Image is Ready
# Port forward to local
kubectl port-forward -n poimen svc/poimen-memory 8080:80 &
# Test
curl http://localhost:8080/health
Troubleshooting
Secret Not Found Error
- Go to: https://git.riotpiao.com/rock/poimen-memory/settings/secrets
- Verify
REGISTRY_PATis set
Login Failed
- Token might be expired or revoked
- Create a new token and update the secret
Build Failed
- Check Actions logs for the error
- Usually: tests failed
- Fix locally:
cargo test --all
Image Exists But Pods Not Running
- Check pod events:
kubectl describe pod -n poimen <pod-name> - Usually: image pull policy issue or pod crashed
- Check logs:
kubectl logs -n poimen deployment/poimen-memory
Apply to Other Repos
The same setup works for all Poimen repos:
# For poimen, poimen-workflows, etc:
# 1. Create .forgejo/workflows/build.yaml (copy from template below)
# 2. Add REGISTRY_PAT secret
# 3. Push and watch it deploy
Template: See .forgejo/workflows/TEMPLATE.md in this repo
Pattern Overview
Based on: homelab-frontend (proven production pattern)
- Uses
REGISTRY_PATsecret ✓ - Docker login + push ✓
- Tags: commit SHA + latest ✓
- ArgoCD watches tags ✓
Consistency: All Poimen repos use same pattern
- Same secret name:
REGISTRY_PAT - Same workflow structure
- Same deployment process