# Mirroring CloudNativePG Barman Plugin ## Setup Mirror Repository 1. **Clone the upstream repository:** ```bash cd /tmp git clone --mirror https://github.com/cloudnative-pg/plugin-barman-cloud.git cd plugin-barman-cloud.git ``` 2. **Push to your Git server:** ```bash # Create repo on your Git server first (git.mvzijl.nl) # Then push: git push --mirror https://git.mvzijl.nl/marco/plugin-barman-cloud.git ``` 3. **Set up periodic sync (optional):** ```bash # Create a script to sync weekly cat > /usr/local/bin/sync-barman-plugin.sh <<'EOF' #!/bin/bash cd /var/git/mirrors/plugin-barman-cloud.git git fetch --prune origin git push --mirror https://git.mvzijl.nl/marco/plugin-barman-cloud.git EOF chmod +x /usr/local/bin/sync-barman-plugin.sh # Add to cron (weekly on Sunday at 2 AM) echo "0 2 * * 0 /usr/local/bin/sync-barman-plugin.sh" | crontab - ``` ## Update Application Reference After mirroring, update the application.yaml to use your mirror: ```yaml spec: source: repoURL: https://git.mvzijl.nl/marco/plugin-barman-cloud.git targetRevision: main # or specific tag like v1.0.0 path: deployments/manifests ``` ## Version Pinning Strategy Instead of tracking `main`, pin to specific releases: ```yaml spec: source: repoURL: https://git.mvzijl.nl/marco/plugin-barman-cloud.git targetRevision: v1.0.0 # Pin to specific version path: deployments/manifests ``` This gives you: - ✅ Predictable deployments - ✅ Controlled updates - ✅ Rollback capability ## Update Process When a new version is released: 1. **Check upstream for updates:** ```bash cd /var/git/mirrors/plugin-barman-cloud.git git fetch origin git tag -l ``` 2. **Review changes:** ```bash git log HEAD..origin/main --oneline git diff HEAD..origin/main deployments/manifests/ ``` 3. **Sync to your mirror:** ```bash git push --mirror https://git.mvzijl.nl/marco/plugin-barman-cloud.git ``` 4. **Update application.yaml:** ```yaml targetRevision: v1.1.0 # Update to new version ``` 5. **Test and deploy:** ```bash git add apps/cloudnative-pg-plugin/application.yaml git commit -m "Update barman plugin to v1.1.0" git push ``` ## Monitoring Upstream Subscribe to releases: - GitHub: Watch → Custom → Releases only - RSS: `https://github.com/cloudnative-pg/plugin-barman-cloud/releases.atom` ## Alternative: Subtree Approach Instead of mirroring, you could use git subtree: ```bash cd /Users/marco/Documents/Hobby/Veda/talos git subtree add --prefix vendor/plugin-barman-cloud \ https://github.com/cloudnative-pg/plugin-barman-cloud.git main --squash # Then reference in application: # path: vendor/plugin-barman-cloud/deployments/manifests ``` Update when needed: ```bash git subtree pull --prefix vendor/plugin-barman-cloud \ https://github.com/cloudnative-pg/plugin-barman-cloud.git main --squash ``` ## Recommended Approach For your setup, I recommend: 1. **Mirror to your Git server** at `git.mvzijl.nl/marco/plugin-barman-cloud` 2. **Pin to specific versions** (not `main`) 3. **Review updates** before applying 4. **Set up monitoring** for new releases This gives you the best balance of control and maintainability.