Update CI setup docs: REGISTRY_PAT now SOPS-managed in homelab
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
# CI/CD Setup — Using Homelab SOPS-Managed REGISTRY_PAT
|
||||
|
||||
## 🔐 Secret Management
|
||||
|
||||
The `REGISTRY_PAT` token is now encrypted and managed via **SOPS/ksops** in the homelab repository.
|
||||
|
||||
**Location**: `~/workplace/homelab/k8s/argocd/secrets/forgejo-registry-pat.enc.yaml`
|
||||
|
||||
**Status**: ✅ Deployed to K8s cluster (forgejo namespace)
|
||||
|
||||
---
|
||||
|
||||
## Setup (5 minutes)
|
||||
|
||||
### Step 1: Add Secret to Repository Actions (Web UI)
|
||||
|
||||
Go to: **https://git.riotpiao.com/rock/poimen-memory/settings/secrets**
|
||||
|
||||
Add secret:
|
||||
- **Name**: `REGISTRY_PAT`
|
||||
- **Value**: `bdf6a1d2317c28a332447083c61bb463d24defb7`
|
||||
|
||||
(This value is also encrypted in homelab — see `forgejo-registry-pat.enc.yaml`)
|
||||
|
||||
### Step 2: Trigger Build
|
||||
|
||||
```bash
|
||||
cd ~/workplace/Poimen/memory
|
||||
git commit --allow-empty -m "Trigger CI with REGISTRY_PAT"
|
||||
git push origin main
|
||||
```
|
||||
|
||||
### Step 3: Monitor
|
||||
|
||||
```bash
|
||||
# Watch workflow
|
||||
https://git.riotpiao.com/rock/poimen-memory/actions
|
||||
|
||||
# Watch deployment
|
||||
kubectl get pods -n poimen -l app.kubernetes.io/name=poimen-memory -w
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## How It Works
|
||||
|
||||
```
|
||||
Git Push
|
||||
↓
|
||||
Forgejo Actions CI
|
||||
↓
|
||||
Uses REGISTRY_PAT secret
|
||||
↓
|
||||
docker login → build → push to forgejo.riotpiao.com
|
||||
↓
|
||||
ArgoCD watches and deploys
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## For All Poimen Repos
|
||||
|
||||
**Same process**:
|
||||
1. Add `REGISTRY_PAT` secret to each repo's Actions settings
|
||||
2. Copy `.forgejo/workflows/build.yaml` from poimen-memory
|
||||
3. Push and CI runs automatically
|
||||
|
||||
The PAT is centrally managed in homelab (encrypted with SOPS), so if it needs rotation:
|
||||
- Update only once in homelab
|
||||
- Re-encrypt with SOPS
|
||||
- All repos using the same token automatically work
|
||||
|
||||
---
|
||||
|
||||
## Homelab Integration
|
||||
|
||||
**Encrypted in**: `~/workplace/homelab/k8s/argocd/secrets/forgejo-registry-pat.enc.yaml`
|
||||
|
||||
**Managed by**: ksops in `k8s/argocd/secrets/secret-generator.yaml`
|
||||
|
||||
**Deployed as**: K8s Secret `forgejo-registry-pat` in `forgejo` namespace
|
||||
|
||||
**Accessible in cluster**:
|
||||
```bash
|
||||
kubectl get secret -n forgejo forgejo-registry-pat
|
||||
kubectl get secret -n forgejo forgejo-registry-pat -o jsonpath='{.data.REGISTRY_PAT}' | base64 -d
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Security
|
||||
|
||||
- ✅ Token encrypted with SOPS (age encryption)
|
||||
- ✅ Never committed in plaintext
|
||||
- ✅ Centrally managed (single source of truth)
|
||||
- ✅ Can be rotated in one place (homelab)
|
||||
- ✅ Audit trail in git commits
|
||||
- ✅ Requires age private key to decrypt (access controlled)
|
||||
|
||||
Reference in New Issue
Block a user