mirror of
https://github.com/auricom/home-cluster.git
synced 2025-09-17 18:24:14 +02:00
feat: update gitea backup job
This commit is contained in:
@@ -23,27 +23,55 @@ spec:
|
|||||||
- "bin/sh"
|
- "bin/sh"
|
||||||
- "-ec"
|
- "-ec"
|
||||||
- |
|
- |
|
||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
|
|
||||||
set -o nounset
|
set -o nounset
|
||||||
set -o errexit
|
set -o errexit
|
||||||
|
|
||||||
kubectl exec gitea-0 --container gitea --namespace development -- bash -c "\
|
|
||||||
cd /data/git/gitea-repositories && \
|
|
||||||
tar cvf /tmp/gitea-repositories-$(date +%Y%m%d).tar ./"
|
|
||||||
|
|
||||||
kubectl cp gitea-0:/tmp/gitea-repositories-$(date +%Y%m%d).tar /tmp/gitea-repositories-$(date +%Y%m%d).tar --container gitea --namespace development
|
|
||||||
|
|
||||||
zstd --rm /tmp/gitea-repositories-$(date +%Y%m%d).tar
|
|
||||||
|
|
||||||
mkdir -p ~/.ssh
|
mkdir -p ~/.ssh
|
||||||
cp /opt/id_rsa ~/.ssh/id_rsa
|
cp /opt/id_rsa ~/.ssh/id_rsa
|
||||||
chmod 600 ~/.ssh/id_rsa
|
chmod 600 ~/.ssh/id_rsa
|
||||||
scp -o StrictHostKeyChecking=no /tmp/gitea-repositories-$(date +%Y%m%d).tar.zst homelab@truenas:/mnt/storage/backups/gitea/
|
|
||||||
|
|
||||||
rm /tmp/gitea-repositories-$(date +%Y%m%d).tar.zst
|
ssh -o StrictHostKeyChecking=no homelab@truenas << 'EOF'
|
||||||
kubectl exec gitea-0 --container gitea --namespace development -- bash -c "rm /tmp/gitea-repositories-$(date +%Y%m%d).tar"
|
|
||||||
ssh -o StrictHostKeyChecking=no homelab@truenas -C "find /mnt/storage/backups/gitea/*.tar.zst -mtime +5 -type f -delete"
|
WORK_DIR="/mnt/storage/backups/gitea"
|
||||||
|
|
||||||
|
ORGANISATIONS=$(curl --silent --location --request GET "https://gitea.${SECRET_CLUSTER_DOMAIN}/api/v1/orgs" --header "Authorization: Bearer ${SECRET_GITEA_API_TOKEN}" | jq --raw-output .[].username)
|
||||||
|
ORGANISATIONS+=" auricom"
|
||||||
|
|
||||||
|
for org in $ORGANISATIONS
|
||||||
|
do
|
||||||
|
mkdir -p $WORK_DIR/$org
|
||||||
|
if [ $org == "auricom" ]; then
|
||||||
|
keyword="users"
|
||||||
|
else
|
||||||
|
keyword="orgs"
|
||||||
|
fi
|
||||||
|
REPOSITORIES=$(curl --silent --location --request GET "https://gitea.${SECRET_CLUSTER_DOMAIN}/api/v1/$keyword/$org/repos?limit=1000" --header "Authorization: Bearer ${SECRET_GITEA_API_TOKEN}" | jq --raw-output .[].name)
|
||||||
|
for repo in $REPOSITORIES
|
||||||
|
do
|
||||||
|
if [ -d "$WORK_DIR/$org/$rep" ]; then
|
||||||
|
echo "INFO: pull $org/$repo..."
|
||||||
|
cd $WORK_DIR/$org/$repo
|
||||||
|
git reset --hard HEAD
|
||||||
|
git pull
|
||||||
|
test $? -ne 0 && exit 1
|
||||||
|
echo "INFO: clean $org/$repo..."
|
||||||
|
git fetch --prune
|
||||||
|
for branch in $(git branch -vv | grep ': gone]' | awk '{print $1}')
|
||||||
|
do
|
||||||
|
git branch -D $branch
|
||||||
|
done
|
||||||
|
else
|
||||||
|
echo "INFO: clone $org/$repo..."
|
||||||
|
cd $WORK_DIR/$org
|
||||||
|
git clone git@gitea.${SECRET_CLUSTER_DOMAIN_ROOT}:$org/$repo.git
|
||||||
|
test $? -ne 0 && exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
echo "INFO: Backup done"
|
||||||
|
EOF
|
||||||
|
|
||||||
curl -m 10 --retry 5 http://healthchecks.monitoring.svc.cluster.local.:8000/ping/f7ff2516-e3b5-41ae-b77f-a9dc09005422
|
curl -m 10 --retry 5 http://healthchecks.monitoring.svc.cluster.local.:8000/ping/f7ff2516-e3b5-41ae-b77f-a9dc09005422
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
|
@@ -39,6 +39,7 @@ stringData:
|
|||||||
SECRET_EMQX_ADMIN_PASSWORD: ENC[AES256_GCM,data:b0/u6/1y876hIoSfC8yZ1+Gi1A260sVW,iv:WN9hOX+S4fR9tAQlUnzmwjcwEthPL/dTk9vLD/K4nns=,tag:O3fBty7qDl2cO+L9viQ2YA==,type:str]
|
SECRET_EMQX_ADMIN_PASSWORD: ENC[AES256_GCM,data:b0/u6/1y876hIoSfC8yZ1+Gi1A260sVW,iv:WN9hOX+S4fR9tAQlUnzmwjcwEthPL/dTk9vLD/K4nns=,tag:O3fBty7qDl2cO+L9viQ2YA==,type:str]
|
||||||
SECRET_GITEA_ADMIN_EMAIL: ENC[AES256_GCM,data:zAjKU2CZ2m4VpPg6R63LbCiEP9+j,iv:Oq9LzxojK1r5MTXCqa1KAyj0RyKsROhZqyM6I+V5f+8=,tag:h+BsjDLI3yHv+Uj6yyGMGA==,type:str]
|
SECRET_GITEA_ADMIN_EMAIL: ENC[AES256_GCM,data:zAjKU2CZ2m4VpPg6R63LbCiEP9+j,iv:Oq9LzxojK1r5MTXCqa1KAyj0RyKsROhZqyM6I+V5f+8=,tag:h+BsjDLI3yHv+Uj6yyGMGA==,type:str]
|
||||||
SECRET_GITEA_ADMIN_PASSWORD: ENC[AES256_GCM,data:jaK0aOfEI0+bRLfgACg=,iv:aesMs89p3vFNJ8fgU9R+wrPXAE39W+g3Qm5NdpJyKzE=,tag:eN01mNN5lVMxra0F0UyooA==,type:str]
|
SECRET_GITEA_ADMIN_PASSWORD: ENC[AES256_GCM,data:jaK0aOfEI0+bRLfgACg=,iv:aesMs89p3vFNJ8fgU9R+wrPXAE39W+g3Qm5NdpJyKzE=,tag:eN01mNN5lVMxra0F0UyooA==,type:str]
|
||||||
|
SECRET_GITEA_API_TOKEN: ENC[AES256_GCM,data:jJTYM2FZKJxG3GBnwCCo3ZGLk6hQ29/AJMhidXgkNkFaALWYN79tYA==,iv:Jn+Z9xD7Mvn9MJ4T5GDEMXjNnxyor93vO9wpenuaaLc=,tag:3RgkpunMwXVSi9iP2tudNw==,type:str]
|
||||||
SECRET_GITEA_DB_PASSWORD: ENC[AES256_GCM,data:+aqidk0Z2PiPwN09Ckc=,iv:AlFT8G1vMVW7h3CY0CkBD66ntS0NFNf96FLuBrkUkwI=,tag:fC1iqr/CKaGf9H2HcHOVSA==,type:str]
|
SECRET_GITEA_DB_PASSWORD: ENC[AES256_GCM,data:+aqidk0Z2PiPwN09Ckc=,iv:AlFT8G1vMVW7h3CY0CkBD66ntS0NFNf96FLuBrkUkwI=,tag:fC1iqr/CKaGf9H2HcHOVSA==,type:str]
|
||||||
SECRET_HASS_DB_URL: ENC[AES256_GCM,data:qr821aPZG0T3HHO+V3Gkgqg9ZiRBVHz2YVtGg7wBGFFrbYUjxp+EWY2+KEjIevWvhXZPjIYZfJQkD5dQ5rdq7RMJpcHTP1sjqbrx7lL9bw==,iv:jtjLYgcyP1N80EQafy4df0jdfQyQ/iMqVLJc/LJAK/g=,tag:pVmzgdhui0hfPCHG/wijRg==,type:str]
|
SECRET_HASS_DB_URL: ENC[AES256_GCM,data:qr821aPZG0T3HHO+V3Gkgqg9ZiRBVHz2YVtGg7wBGFFrbYUjxp+EWY2+KEjIevWvhXZPjIYZfJQkD5dQ5rdq7RMJpcHTP1sjqbrx7lL9bw==,iv:jtjLYgcyP1N80EQafy4df0jdfQyQ/iMqVLJc/LJAK/g=,tag:pVmzgdhui0hfPCHG/wijRg==,type:str]
|
||||||
SECRET_HASS_LATITUDE: ENC[AES256_GCM,data:ik+tndAS+JtYhQbddiWvkZc=,iv:mEuA19JFIHaJvQe5CWXS7krxIPYjcw+qh7gQJGaOTlQ=,tag:/u/QPonVyG8yqh01cIUr+A==,type:str]
|
SECRET_HASS_LATITUDE: ENC[AES256_GCM,data:ik+tndAS+JtYhQbddiWvkZc=,iv:mEuA19JFIHaJvQe5CWXS7krxIPYjcw+qh7gQJGaOTlQ=,tag:/u/QPonVyG8yqh01cIUr+A==,type:str]
|
||||||
@@ -58,7 +59,7 @@ stringData:
|
|||||||
SECRET_LYCHEE_DB_PASSWORD: ENC[AES256_GCM,data:qmYKRlqo+Pm5ug+TuEU=,iv:OPGmszHF4qtJ9Pz0mtxwa6IOKu14OZmOELgaFacpbog=,tag:gxaqfwAporp6lfoh5zcD0A==,type:str]
|
SECRET_LYCHEE_DB_PASSWORD: ENC[AES256_GCM,data:qmYKRlqo+Pm5ug+TuEU=,iv:OPGmszHF4qtJ9Pz0mtxwa6IOKu14OZmOELgaFacpbog=,tag:gxaqfwAporp6lfoh5zcD0A==,type:str]
|
||||||
SECRET_MINIO_ACCESS_KEY: ENC[AES256_GCM,data:QHq4tb8=,iv:OP7QThklBqHxAYvdnVRBUOoj5RDvFmbQRl8HNK+ACSw=,tag:4xWWSCQfAVg8HZ232YnHbQ==,type:str]
|
SECRET_MINIO_ACCESS_KEY: ENC[AES256_GCM,data:QHq4tb8=,iv:OP7QThklBqHxAYvdnVRBUOoj5RDvFmbQRl8HNK+ACSw=,tag:4xWWSCQfAVg8HZ232YnHbQ==,type:str]
|
||||||
SECRET_MINIO_SECRET_KEY: ENC[AES256_GCM,data:BPaiA5Y37VeV1aEjrdxI/ujhwt4=,iv:6bEYn4z5dAPMln8RDMsKaA6SVB48WhohIgUfai3AsUg=,tag:wBoefzlDxIygHAWCHma9Rw==,type:str]
|
SECRET_MINIO_SECRET_KEY: ENC[AES256_GCM,data:BPaiA5Y37VeV1aEjrdxI/ujhwt4=,iv:6bEYn4z5dAPMln8RDMsKaA6SVB48WhohIgUfai3AsUg=,tag:wBoefzlDxIygHAWCHma9Rw==,type:str]
|
||||||
SECRET_MINIO_ENDPOINT: ENC[AES256_GCM,data:XKihtaLPV50ScBfV+2pdSeLbNZqf3KHL,iv:m2CYn9let+IpuD/xLieRHZ8ld2NJ7QoICOyDPxG5dMQ=,tag:makEf1Yh9Y8KtRBP5gaK2Q==,type:str]
|
SECRET_MINIO_ENDPOINT: ENC[AES256_GCM,data:oyGmjbL1AMQsYPjHWjiiChTt1RSD0BV66A==,iv:vmDBNKtQKo4BSvk196jAg0CkrIrF9gsfWU+erFPXpZM=,tag:IgqCl16vDbOIy0irhVTwkw==,type:str]
|
||||||
SECRET_MQTT_USERNAME: ENC[AES256_GCM,data:Sw3dg2LQgNWZ6wJN/A==,iv:PSjlmpDdMekx2PahJbcpOgeecE7/rJqufOeCSvItVjo=,tag:RUeWs45akbTHKlRAcHgI/A==,type:str]
|
SECRET_MQTT_USERNAME: ENC[AES256_GCM,data:Sw3dg2LQgNWZ6wJN/A==,iv:PSjlmpDdMekx2PahJbcpOgeecE7/rJqufOeCSvItVjo=,tag:RUeWs45akbTHKlRAcHgI/A==,type:str]
|
||||||
SECRET_MQTT_PASSWORD: ENC[AES256_GCM,data:Q+jlj+0z4BymdWnwScQg5E6urg==,iv:uztQpYBn4vEuKS7+jFB/ZPq3itl7pwQn3tON4cz1E90=,tag:CISfAZBUgzUSvJPOm6G3GQ==,type:str]
|
SECRET_MQTT_PASSWORD: ENC[AES256_GCM,data:Q+jlj+0z4BymdWnwScQg5E6urg==,iv:uztQpYBn4vEuKS7+jFB/ZPq3itl7pwQn3tON4cz1E90=,tag:CISfAZBUgzUSvJPOm6G3GQ==,type:str]
|
||||||
SECRET_PGADMIN_EMAIL: ENC[AES256_GCM,data:QXuCKeIR095bH+GfdnhXAodyqYUBuQ==,iv:9j+xs+3CkOXRcFyt18eBppCFGxNRR14ykaF1SWpt630=,tag:8sFXWDBDZjm2fA7TR+ZD1A==,type:str]
|
SECRET_PGADMIN_EMAIL: ENC[AES256_GCM,data:QXuCKeIR095bH+GfdnhXAodyqYUBuQ==,iv:9j+xs+3CkOXRcFyt18eBppCFGxNRR14ykaF1SWpt630=,tag:8sFXWDBDZjm2fA7TR+ZD1A==,type:str]
|
||||||
@@ -87,8 +88,8 @@ sops:
|
|||||||
azure_kv: []
|
azure_kv: []
|
||||||
hc_vault: []
|
hc_vault: []
|
||||||
age: []
|
age: []
|
||||||
lastmodified: "2021-07-17T21:14:35Z"
|
lastmodified: "2021-07-27T08:52:35Z"
|
||||||
mac: ENC[AES256_GCM,data:odjjxE0GdDu6Sv+EYmfjC+LUGzrIMExoc5saj0rVVPiksEGtyWUpwJU6vcqPMHAEbMsqK7aB8mZ1A8/MRda/WyrbDPxnF9bBCoJ+TDetJayOkbPgJzq7uHpXybi5wysedxrd9ijT2auI6G+gzNntjritg3OU05GlC2KxiJ6xMXA=,iv:6jqdPlXjIwCLoaExIt/rrnJ0SbnWoBGOYnX0lPsTHfE=,tag:MPvJQcE8GSWIC/8ckuV/nQ==,type:str]
|
mac: ENC[AES256_GCM,data:wEB0cjZN5def3YJkJMDiQk3yWCuYBQV8ahA5oIn3UKSQPSOeyeXdXr1FPIZojPi4J/EueZSE5YNhVydeQ8GYgT+uc8N6sVl9ysrpNwSnpEHjkR266lZiST5t3k8BPEb80jQ4OjLK8ZzTvdLY5bc3eYRVpStlhqGihx7Qjv9j+/8=,iv:QqHKL4DRUnKHUIlZR5M7A0GXG9HT1JocfkUIlFHYFnM=,tag:6bvjVJFyhoZUTWs4FSnQ+A==,type:str]
|
||||||
pgp:
|
pgp:
|
||||||
- created_at: "2021-07-17T21:14:34Z"
|
- created_at: "2021-07-17T21:14:34Z"
|
||||||
enc: |
|
enc: |
|
||||||
|
Reference in New Issue
Block a user