Eu estou em um ambiente corporativo git e há um repositório git onde eu pego o código inteiro, construo usando gulp. js e copie a distribuição para outro repositório, onde eu o envio para o remoto.
Eu automatizei tudo isso em um script bash e sempre que executo sh gittogulp.sh
, ele faz isso sem falhas. Mas quando eu uso um cronjob para fazer isso, ele não consegue extrair novo conteúdo do git e faz o gulp.js construir a partir do conteúdo que já existe.
Eu quero saber, como eu posso puxar de um repositório git sem ativar manualmente o script. Webhooks não é uma opção para mim.
gittogulp.sh
é:
#!/bin/bash
cd ~/mainrepo
git checkout dev
git fetch
echo "Pulling latest code from git repo"
git pull
for commitid in $(git log --format="%h" -n 10)
do
git checkout dev
echo "git reset hard"
git fetch --all
git reset --hard origin/dev
echo "Checkout commit id: ""$commitid"
echo git checkout "$commitid"
git checkout "$commitid"
echo "Installing dependencies"
npm install
echo "Gulpifying the code"
gulp dev
basefolder="/root/mainrepo/manifests"
basedestfolder="/root/outputrepo/dev"
if [ -d "$basefolder" ]; then
versionrepo='cat "$basefolder"/version.txt'
echo "Version in repo: ""$versionrepo"
destfolder="$basedestfolder""/""$commitid"
if [ -d "$destfolder" ]; then
echo "Latest outputs are already in place"
break
else
echo "copying latest output to ""$destfolder"
mkdir "$destfolder"
cp -r "$basefolder" "$destfolder"
zipname="$versionrepo""_""$commitid"".zip"
zipdestpath="$basedestfolder""/""$zipname"
echo "Making new zip from latest commit"
echo zip -r "$zipdestpath" "$destfolder"
zip -r "$zipdestpath" "$destfolder"
fi
else
echo "$basefolder"" : folder doesn't exist, exiting"
fi
done
cd ~/outputrepo
git pull
git add .
git commit -m "adding new zip"
git push