0
我试图从詹金斯是构建并部署一个网站(脚本是多功能的,但它是通过运行bash ./scripts/deploy.sh -ssh
执行)执行构建脚本:詹金斯没有运行bash脚本正确
#!/usr/bin/env bash
cd ..
rm -rf _site/
if [ "$1" = "-ssh" ]; then
git clone [email protected]:RIT-EVT/RIT-EVT.github.io.git --branch master --depth 1 _site
else
git clone https://github.com/RIT-EVT/RIT-EVT.github.io.git --branch master --depth 1 _site
fi
LIVE_VERSION_BUILD=`cat _site/version`
LIVE_VERSION=${LIVE_VERSION_BUILD%.*}
LIVE_BUILD=${LIVE_VERSION_BUILD##*.}
PACKAGE_VERSION=`sed -nE 's/^\s*"version": "(.*?)",$/\1/p' package.json`
if [[ "$LIVE_VERSION" == "$PACKAGE_VERSION" ]]; then
((LIVE_BUILD++))
else
LIVE_VERSION=${PACKAGE_VERSION}
LIVE_BUILD=0
fi
rm -rf _site/*
jekyll build
echo "$LIVE_VERSION.$LIVE_BUILD" > _site/version
cd _site/
git add -A
git commit -m "v$LIVE_VERSION.$LIVE_BUILD $(date)"
git push
cd ..
的问题,我有bash不按预期执行脚本(测试是否在运行我的计算机上的脚本时使用相同版本的bash)。我不断收到以下输出,然后将脚本只是失败(我不得不使用HTTPS并输入在混帐回购协议的URL的用户名和密码来解决上述问题:https://username:[email protected]/..):
...
Cloning into '_site'...
++ cat _site/version
+ LIVE_VERSION_BUILD=0.0.9.0
+ LIVE_VERSION=0.0.9
+ LIVE_BUILD=0
++ sed -nE 's/^\s*"version": "(.*?)",$/\1/p' ./package.json
+ PACKAGE_VERSION=0.0.9
+ [[ 0.0.9 == \0\.\0\.\9 ]]
+ ((LIVE_BUILD++))
Build step 'Execute shell' marked build as failure
Finished: FAILURE
我明白了。所以'[[0.0.9 == \ 0 \。\ 0 \。\ 9]]'不是不寻常的行为?我希望它看起来像'[[0.0.9 == 0.0.9]]'。它看起来是错误的,但是如果我改变脚本以使用'set + e'并将((LIVE_BUILD ++))更改为您的建议,它看起来像预期的那样运行。 – wheeler
不,这并不罕见(我想在调试输出中加入反斜杠是为了强调点不被认为是正则表达式的一部分)。 –