【问题标题】:Jenkins not running bash script correctly詹金斯没有正确运行 bash 脚本
【发布时间】:2017-03-07 23:25:19
【问题描述】:

我正在尝试从 Jenkins 执行构建和部署网站的构建脚本(该脚本是多用途的,但通过运行 bash ./scripts/deploy.sh -ssh 执行):

#!/usr/bin/env bash

cd ..
rm -rf _site/
if [ "$1" = "-ssh" ]; then
    git clone git@github.com: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 并在 git repo url 中输入用户名和密码来解决上述问题:https://username:password@github.com/..。):

...
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

【问题讨论】:

    标签: git bash jenkins ssh


    【解决方案1】:

    该问题可能是由于在启用 set -e 的情况下运行脚本引起的

    • 如果LIVE_BUILD 等于0,您的命令(( LIVE_BUILD++ )) 将评估为0
    • (( [...] )) 运算符针对这种情况返回状态 1
    • 如果set -e 处于活动状态,这将使shell 立即中止。

    解决方案

    • 在脚本开头添加set +e,或
    • 更好:使用LIVE_BUILD=$(( LIVE_BUILD + 1))——它更具可读性并且不会失败。

    【讨论】:

    • 我明白了。那么[[ 0.0.9 == \0\.\0\.\9 ]] 是不是异常行为?我希望它看起来像[[ 0.0.9 == 0.0.9 ]]。看起来它是错误的,但是如果我更改脚本以使用 set +e 并将 (( LIVE_BUILD++ )) 更改为您建议的内容,它看起来就像预期的那样运行。
    • 不,这并不罕见(我想在调试输出中添加反斜杠是为了强调点不被认为是正则表达式的一部分)。
    猜你喜欢
    • 2017-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多