目前我搜索:
ps axf | grep jenkins
以这种格式看我的工作:
51412 ? S 0:00 \_ /bin/sh -xe /var/lib/jenkins/tmp/jenkins2641742926206351383.sh
作业的名称是GOOD_JOB
如何仅在命令行中根据 GOOD_JOB 返回 jenkins2641742926206351383.sh ?
换句话说,如果我只有 GOOD_JOB ,如何通过命令行返回 jenkins2641742926206351383.sh ?
答案 0 :(得分:0)
可能有更简单的方法可以做到这一点,但你可以用这样的awk来做:
ps axf | grep jenkins | awk -F'/' '{print $8}'
答案 1 :(得分:0)
IIUC您想要“根据工作名称查找Jenkins的构建临时构建脚本名称”。在下面的代码中,我假设您想要最后一个版本,或者知道版本号。
Jenkins有许多API可能揭示了这一点,但是作为一个古老的CLI灰胡子,这是在Jenkins构建日志中按模式快速bash配方“ grep”的方法:
JENKINS_HOME=/path/to/Jenkins/home
find_jenkins_sh() {
local jobname bldnum log res
jobname=$1
bldnum=$2
### if we don't get a build number, find the latest one
if [ -z "$bldnum" ] ; then
bldnum=$(cd $JENKINS_HOME/jobs/$jobname/builds &&
/bin/ls -trd [0-9]* | tail -1)
fi
### now we can locate the log and grep for our pattern
local log=$JENKINS_HOME/jobs/$jobname/builds/$bldnum/log
res=$(grep -m1 jenkins[0-9]*.sh $log) # first mention: -m1
res=${res//*jenkins/jenkins} # strip up to 'jenkins'
echo "$log: $res"
}
# if you know the job number
find_jenkins_sh GOOD_JOB 1234
# use the last job number
find_jenkins_sh GOOD_JOB