나는 자식이있다. post-receive
다음과 같은 스크립트 :
#!/bin/bash
export GIT_WORK_TREE=/home/git/worktree
mkdir -p $GIT_WORK_TREE
while read oldrev newrev refname
do
# ensure the working copy is set up correctly
git checkout -f master || exit 1
git reset --hard $newrev || exit 1
cd $GIT_WORK_TREE
# build the apps
./gradlew bootRepackage
# install the jars
cp foo-web/build/libs/foo-web.jar /opt/foo-staging/git-deploy/
cp foo-scheduler/build/libs/foo-scheduler.jar /opt/foo-staging/git-deploy/
done
echo 2
exit 0
그리고 나서 (root로) 사용하려고하는 또 다른 스크립트가 있습니다. git-deploy
올바른 권한으로 jar 파일을 적절한 위치에 배포 할 수 있도록
#!/bin/bash
DEPLOY_FROM_DIR=/opt/foo-staging/git-deploy
STAGING_DIR=/opt/foo-staging
/usr/bin/inotifywait -m -q --event "MODIFY,CREATE" --format '%w%f' "$DEPLOY_FROM_DIR" |
while read f; do
noext=${f%.jar}
svcname=${noext/foo-/foo-staging-}
echo $svcname
install -o foo -g foo -m 600 "$f" "$STAGING_DIR/"
echo "Installed $f to $STAGING_DIR"
done
그러나 어떤 이유로 단일 업로드에서 while 루프의 내용이 반복적으로 실행되어 출력이 무기한 생성됩니다. 내가 뭘 잘못하고 있죠?
면책 조항 : 저는 관리자가 아닌 소프트웨어 개발자입니다. Bash는 아마도 내 포르테가 아닙니다.