wip: auto repo local copy via cronjob
This commit is contained in:
parent
670dd1fc85
commit
a2e0884383
4 changed files with 61 additions and 0 deletions
0
datamount/gitbackup/this-is-git-dir.txt
Normal file
0
datamount/gitbackup/this-is-git-dir.txt
Normal file
1
orchestrating/cronjobs/README.org
Normal file
1
orchestrating/cronjobs/README.org
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Make sure crond is running, and add each script to the user's crontab
|
||||||
57
orchestrating/cronjobs/forgejo-clone/forgejo-clone.sh
Executable file
57
orchestrating/cronjobs/forgejo-clone/forgejo-clone.sh
Executable file
|
|
@ -0,0 +1,57 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
. secrets
|
||||||
|
#TODO check secrets file exists
|
||||||
|
|
||||||
|
#Retrieve token user
|
||||||
|
user_json=$(curl -s -X 'GET' \
|
||||||
|
'https://$GIT_DOMAIN/api/v1/user' \
|
||||||
|
-H 'accept: application/json' \
|
||||||
|
-H "Authorization: token ${AUTH_TOKEN}")
|
||||||
|
|
||||||
|
user_id=$(jq ".id" <(echo "$user_json"))
|
||||||
|
user_username=$(jq ".username" <(echo "$user_json"))
|
||||||
|
echo $user_username
|
||||||
|
|
||||||
|
#Retrieve repos from user, including private repos
|
||||||
|
repo_json=$(curl -s -X 'GET' \
|
||||||
|
"https://$GIT_DOMAIN/api/v1/repos/search?uid=${user_id}?private=true" \
|
||||||
|
-H 'accept: application/json' \
|
||||||
|
-H "Authorization: token ${AUTH_TOKEN}")
|
||||||
|
|
||||||
|
#Listing only the HTTPS repo clone URL
|
||||||
|
repo_urls=$(jq ".data" <(echo "$repo_json") | jq ".[] | .html_url" | grep Hane)
|
||||||
|
echo $repo_urls
|
||||||
|
echo "----\n"
|
||||||
|
|
||||||
|
#Cloning each repo to destdir
|
||||||
|
i=0;
|
||||||
|
finished=false;
|
||||||
|
while ! $finished
|
||||||
|
do
|
||||||
|
i=$(($i+1));
|
||||||
|
repo=$(awk "{print \$$i}" <(echo $repo_urls))
|
||||||
|
if [ "$repo" = "" ]
|
||||||
|
then
|
||||||
|
finished=true
|
||||||
|
else
|
||||||
|
#Retrieve repo name for folder
|
||||||
|
repo_name="$(awk -F/ '{print $5}' <(echo $repo))"
|
||||||
|
repo_name="${repo_name%\"}"
|
||||||
|
#echo $repo_name
|
||||||
|
#Remove quotes from user_username
|
||||||
|
username=${user_username%\"}
|
||||||
|
username=${username#\"}
|
||||||
|
#Clone repo
|
||||||
|
#TODO: what do if repo already exists? if it!
|
||||||
|
if [ -e "$REPO_DIR$repo_name" ]
|
||||||
|
then
|
||||||
|
echo "REPO: $repo_name"
|
||||||
|
git -C "$REPO_DIR$repo_name" fetch --all
|
||||||
|
#git -C "$REPO_DIR$repo_name" rebase --update-refs
|
||||||
|
else
|
||||||
|
git clone https://$user_username:$AUTH_TOKEN@$GIT_DOMAIN/$username/$repo_name /home/$USER/pihanepi/datamount/gitbackup/$repo_name --recurse-submodules
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
3
orchestrating/cronjobs/forgejo-clone/secrets
Normal file
3
orchestrating/cronjobs/forgejo-clone/secrets
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
REPO_DIR=/home/$USER/pihanepi/datamount/gitbackup/
|
||||||
|
GIT_DOMAIN=git.roboces.dev
|
||||||
|
AUTH_TOKEN=
|
||||||
Loading…
Add table
Add a link
Reference in a new issue