通过命令行查找Jenkins作业

时间:2017-05-08 22:37:19

标签: linux bash jenkins

目前我搜索:

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

2 个答案:

答案 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