133 lines
3.2 KiB
Markdown
133 lines
3.2 KiB
Markdown
# 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.
|