move old files to old directory
Signed-off-by: Václav Valíček <valicek1994@gmail.com>
This commit is contained in:
44
old/dockerbin/cron-command
Executable file
44
old/dockerbin/cron-command
Executable file
@@ -0,0 +1,44 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
# try to include laminar env
|
||||
if [ -f /etc/profile.d/laminar.sh ]
|
||||
then
|
||||
source /etc/profile.d/laminar.sh
|
||||
fi
|
||||
|
||||
# if started as root
|
||||
if [ $UID -eq 0 ]
|
||||
then
|
||||
find /data \! -user executor -exec chown executor:executor {} \;
|
||||
su executor -c cron-command
|
||||
exit $?
|
||||
fi
|
||||
# check lock
|
||||
lock=/var/run/cloner.pid
|
||||
|
||||
dir_prefix=cloner
|
||||
|
||||
max_jobs=${JOBS:-3}
|
||||
|
||||
function die(){
|
||||
echo $@ 1>&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
# first, check process
|
||||
if [ -f $lock ]
|
||||
then
|
||||
pid=$(cat $lock)
|
||||
# if it still runs, die not so quietly
|
||||
[ -n "$pid" ] && [ -d /proc/$pid ] && die "Another process running!"
|
||||
fi
|
||||
# else make some mess and setup trap
|
||||
echo $BASHPID > $lock
|
||||
|
||||
find /data -maxdepth 1 -type d -name "${dir_prefix}-*" | \
|
||||
parallel --lb -j $max_jobs -n 1 run-mirror-update
|
||||
|
||||
echo "Cron Finished"
|
||||
|
||||
35
old/dockerbin/run-mirror-update
Executable file
35
old/dockerbin/run-mirror-update
Executable file
@@ -0,0 +1,35 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
function log(){
|
||||
local title=${raw:-$name}
|
||||
[ -z "$title" ] || title=" [$title]"
|
||||
echo "[$(date +"%X")]$title $@"
|
||||
}
|
||||
|
||||
function die(){
|
||||
log "$@" 1>&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
||||
scratch=$(mktemp -d -t tmp.XXXXXXXXXX)
|
||||
function finish {
|
||||
rm -rf "$scratch"
|
||||
}
|
||||
trap finish EXIT
|
||||
|
||||
|
||||
# necessary checks
|
||||
pathto=${1:-}
|
||||
[ -n "$pathto" ] || die "No project specified"
|
||||
|
||||
raw=$(basename $pathto | sed 's/^cloner-//g')
|
||||
|
||||
# is it enabled?
|
||||
[ -f "$pathto/.enabled" ] || die "$raw not enabled!"
|
||||
|
||||
|
||||
env BASE=$pathto run-checker | while read line; do log "$line"; done
|
||||
|
||||
218
old/dockerbin/wizzard
Executable file
218
old/dockerbin/wizzard
Executable file
@@ -0,0 +1,218 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
if [[ ! ":$PATH:" == *":/usr/local/bin:"* ]]
|
||||
then
|
||||
export PATH="/usr/local/bin:$PATH"
|
||||
fi
|
||||
|
||||
# if started as root
|
||||
if [ $UID -eq 0 ]
|
||||
then
|
||||
chown executor:executor /data
|
||||
su executor -c $0
|
||||
exit $?
|
||||
fi
|
||||
|
||||
dir_prefix=cloner
|
||||
|
||||
function die(){
|
||||
echo $@ 1>&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
function checkProjectName(){
|
||||
# check, if volume does not exist yet
|
||||
name=$1
|
||||
# should not be empty
|
||||
[ -n "$read_project_name" ] || die "Empty project name is not allowed"
|
||||
if [ -d /data/$dir_prefix-$name ]
|
||||
then
|
||||
die "Target volume for project '$name' exists - please try again!"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
function createConfigFile(){
|
||||
# creates config file, writes it to $1 location
|
||||
loc=$1
|
||||
|
||||
# vars
|
||||
local tmpl_name=$read_project_name
|
||||
local tmpl_url=$read_url
|
||||
local tmpl_interval=$read_interval
|
||||
local tmpl_submodules=$read_submodules
|
||||
|
||||
if [ $read_submodule_limit = "N" ]
|
||||
then
|
||||
local tmpl_submodules_depth_enabled='# '
|
||||
local tmpl_submodules_depth=50000
|
||||
else
|
||||
local tmpl_submodules_depth_enabled=''
|
||||
local tmpl_submodules_depth=$read_submodule_limit
|
||||
fi
|
||||
|
||||
cat > $loc <<-EOF
|
||||
# cloner.cfg
|
||||
# main config
|
||||
# created at $(date +"%Y-%m-%d %X")
|
||||
|
||||
# main url - url of main repo - just to clone
|
||||
cloner_repo_url=$tmpl_url
|
||||
|
||||
# project name (names of volumes are derrived from this
|
||||
cloner_project_name=$tmpl_name
|
||||
|
||||
# cloner interval (in minutes, default=0 - run always)
|
||||
cloner_interval=$tmpl_interval
|
||||
|
||||
# do you need submodules support? (1/0)
|
||||
cloner_submodules=$tmpl_submodules
|
||||
|
||||
# max depth of submodule scan (default = unlimited, uncomment to use)
|
||||
${tmpl_submodules_depth_enabled}cloner_submodule_depth=$tmpl_submodules_depth
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
function createDetectorConfig(){
|
||||
# $1 - file
|
||||
local cfgFile=$1
|
||||
|
||||
mkdir -p $(dirname $cfgFile)
|
||||
|
||||
if [ $read_detector -eq 1 ]
|
||||
then
|
||||
cat > $cfgFile <<-EOF
|
||||
# this file is config for detector
|
||||
# now, it is empty - to disable detector, just delete it!
|
||||
EOF
|
||||
fi
|
||||
}
|
||||
|
||||
function generateSSHKey(){
|
||||
# generates ssh key with $1 path and $2 description
|
||||
local keyfile=$1/identity
|
||||
local description=$2
|
||||
echo "Creating SSH deployment key.."
|
||||
ssh-keygen -f $keyfile -t ed25519 -C "$description" -N ""
|
||||
echo
|
||||
echo "Public key is:"
|
||||
echo "-----------------------------------------------------"
|
||||
cat $keyfile.pub
|
||||
echo "-----------------------------------------------------"
|
||||
echo -n "Please make sure that key is set up at your git hosting and press enter.."
|
||||
read
|
||||
}
|
||||
|
||||
|
||||
function reuseSSHKey(){
|
||||
# pastes ssh key to file $1 with vim
|
||||
local keyfile=$1
|
||||
local scratch=$(mktemp)
|
||||
echo "# Please paste private ssh key here and save this file" > $scratch
|
||||
vim $scratch
|
||||
sed -e 's/#.*$//' $scratch > $keyfile
|
||||
rm $scratch
|
||||
echo "Checking key..."
|
||||
chmod 0700 $keyfile
|
||||
ssh-keygen -y -f $keyfile -P "" || true # will fail in the end, so script will continue and clean up the mess
|
||||
}
|
||||
|
||||
# start reading vars
|
||||
echo -n "Enter project name: "
|
||||
read read_project_name
|
||||
checkProjectName "$read_project_name"
|
||||
|
||||
|
||||
# repository URL
|
||||
echo -n "Enter git repository URL: "
|
||||
read read_url
|
||||
[ -n "$read_url" ] || die "Empty url is not allowed!"
|
||||
|
||||
# check interval
|
||||
echo -n "Enter check interval in minutes [5]: "
|
||||
read read_interval
|
||||
[ -n "$read_interval" ] || read_interval=5
|
||||
[[ "$read_interval" =~ ^[0-9]+$ ]] || echo "Entered interval is not number. Try again.."
|
||||
|
||||
# submodule use
|
||||
echo -n "Mirror including submodules? [Y/n]"
|
||||
read read_submodules
|
||||
[ -n "$read_submodules" ] || read_submodules=Y
|
||||
[[ "$read_submodules" =~ ^[Yy]$ ]] && read_submodules=1 || read_submodules=0
|
||||
|
||||
# submodule limit
|
||||
if [ $read_submodules -eq 1 ]
|
||||
then
|
||||
echo -n "Limit for submodule discovery [<number>/N]: "
|
||||
read read_submodule_limit
|
||||
[ -n "$read_submodule_limit" ] || read_submodule_limit=N
|
||||
if ! [[ "$read_submodule_limit" =~ ^[Nn]$ ]]
|
||||
then
|
||||
[[ "$read_submodule_limit" =~ ^[0-9]+$ ]] || die "Submodule limit must be n,N or number!"
|
||||
fi
|
||||
else
|
||||
read_submodule_limit=N
|
||||
fi
|
||||
|
||||
|
||||
# determine CI?
|
||||
echo -n "Do you want to enable CI support? (detector) [Y/n]"
|
||||
read read_detector
|
||||
[ -n "$read_detector" ] || read_detector=Y
|
||||
if ! [[ "$read_detector" =~ ^[Yy]$ ]]
|
||||
then
|
||||
read_detector=0
|
||||
else
|
||||
read_detector=1
|
||||
fi
|
||||
|
||||
|
||||
root=/data/$dir_prefix-$read_project_name
|
||||
# start generating config
|
||||
mkdir -p $root/config
|
||||
createConfigFile $root/config/cloner.cfg
|
||||
|
||||
# use ssh config?
|
||||
echo -n "Would you like to use SSH auth? ([C]reate new key/[U]se existing key/[N]o) [C/u/n]: "
|
||||
read read_ssh
|
||||
[ -n "$read_ssh" ] || read_ssh=C
|
||||
[[ "$read_ssh" =~ ^[CcUuNn]$ ]] || die "Invalid SSH key option, script is exiting now.."
|
||||
|
||||
# ssh resolutions?
|
||||
# create dir if needed
|
||||
[[ "$read_ssh" =~ ^[nN]$ ]] || mkdir -p $root/config/auth/ssh
|
||||
|
||||
# generate new key
|
||||
if [[ "$read_ssh" =~ ^[Cc]$ ]]
|
||||
then
|
||||
# create key
|
||||
generateSSHKey $root/config/auth/ssh "cloner-deploy-key-$read_project_name"
|
||||
fi
|
||||
|
||||
# use existing key
|
||||
if [[ "$read_ssh" =~ ^[Uu]$ ]]
|
||||
then
|
||||
# load key
|
||||
reuseSSHKey $root/config/auth/ssh/identity
|
||||
fi
|
||||
|
||||
|
||||
echo "First run - initialization of repos..."
|
||||
if ! env BASE=$root run-checker
|
||||
then
|
||||
echo -n "First run failed - remove directory? [Y/n]"
|
||||
read read_cleanup
|
||||
[ -n "$read_cleanup" ] || read_cleanup=Y
|
||||
if [[ "$read_cleanup" =~ ^[Yy]$ ]]
|
||||
then
|
||||
rm -Rf $root
|
||||
fi
|
||||
else
|
||||
createDetectorConfig $root/config/detector.cfg
|
||||
echo "Setup has finished!"
|
||||
touch $root/.enabled
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user