# app.sh是以root用户运行的,php程序以nobody用户运行,因此git相关命令也应用nobody运行,否则会有权限问题
# 需要设置HOME 参见 https://stackoverflow.com/a/27151021 解决 unable to access '/root/.config/git/attributes' 报错
function gitCmd() {
su - nobody -s /bin/sh -c "HOME=/home/nobody;cd $DATADIR;git $1"
}
# 设置SSH KEY
function sshKey() {
SSHDIR=/home/nobody/.ssh/
echo "SSHDIR: $SSHDIR"
[ ! -d $SSHDIR ] && mkdir -p $SSHDIR
[ -f "$APP_CONFIG_PATH/ID_RSA" ] && cp $APP_CONFIG_PATH/ID_RSA $SSHDIR/id_rsa
[ -f "$APP_CONFIG_PATH/ID_RSA_PUB" ] && cp $APP_CONFIG_PATH/ID_RSA_PUB $SSHDIR/id_rsa.pub
echo "I am `whoami`"
echo "StrictHostKeyChecking no" >> $SSHDIR/config
chown -R nobody.nobody /home/nobody
}
# gitbacked设置,忽略cache tmp目录
# 将git作为默认存储,容器更新后拉取远程仓库
# 为了提高git pull速度,需要有持久化存储。如果用hostPath,需要固定机器
function stepPluginGitbacked() {
sshKey
# 设置默认值
setConf plugin gitbacked ignorePaths "cache,tmp,index,locks"
setConf plugin gitbacked periodicPull "1"
setConf plugin gitbacked pushAfterCommit "1"
# 需要设置HOME 参见 https://stackoverflow.com/a/27151021 解决 unable to access '/root/.config/git/attributes' 报错
export HOME=/home/nobody
# 需要设置权限
chown -R nobody.nobody $DATADIR
cd $DATADIR
isEmpty=`ls $DATADIR |wc -l`
[ $isEmpty -eq 0 ] && gitCmd "clone $GITREPO $DATADIR"
if [ ! -d $DATADIR/.git ];then
gitCmd init
gitCmd "remote add origin $GITREPO"
fi
# 设置
gitCmd 'config user.name "nobody"'
gitCmd 'config user.email "dokuwiki@k8s.cluster"'
gitCmd "pull origin master"
for item in attic cache index locks media media_attic media_meta meta pages tmp; do
[ ! -d $DATADIR/$item ] && mkdir $DATADIR/$item
done
for item in cache tmp index locks;do
grep "$item/" .gitignore|| echo "$item/" >> .gitignore
done
chown -R nobody.nobody $DATADIR
changes=`git status --short |wc -l`
if [ $changes -gt 0 ];then
gitCmd "add -A"
gitCmd 'commit -m "commit"'
gitCmd "push -u origin master"
fi
}