我想有一个post-build钩子或者类似的,所以我可以拥有与e相同的输出。 G。 IRC插件,但将其提供给脚本。 除了实际构建状态之外,我能够获得所有信息。这不起作用,既不作为“后构建脚本”,“构建后任务”,“参数化触发器”aso。
可能有一些非常丑陋的解决方法,但我想问一下,如果有人有更好的选择...没有编写我自己的插件。
答案 0 :(得分:8)
通过Groovy Post-Build plugin在后期构建步骤中使用Groovy脚本。然后,您可以通过Jenkins Java API访问Jenkins内部。该插件为脚本提供了变量 manager ,可用于访问API的重要部分(请参阅插件文档中的 Usage 部分)。
例如,以下是如何在Windows上执行简单的外部Python脚本并将其结果(以及构建结果)输出到构建控制台:
def command = """cmd /c python -c "for i in range(1,5): print i" """
manager.listener.logger.println command.execute().text
def result = manager.build.result
manager.listener.logger.println "And the result is: ${result}"
答案 1 :(得分:8)
它的工作原理与Groovy Post-Build插件一样,但在执行的字符串中没有任何额外的引用。所以我不得不把实际的功能放到一个shell脚本中,它调用curl,而这需要引用POST参数aso。
def result = manager.build.result
def build_number = manager.build.number
def env = manager.build.getEnvironment(manager.listener)
def build_url = env['BUILD_URL']
def build_branch = env['SVN_BRANCH']
def short_branch = ( build_branch =~ /branches\//).replaceFirst("")
def host = env['NODE_NAME']
def svn_rev = env['SVN_REVISION']
def job_name = manager.build.project.getName()
"/usr/local/bin/skypeStagingNotify.sh Deployed ${short_branch} on ${host} - ${result} - ${build_url}".execute()
答案 2 :(得分:3)
为此,我非常喜欢Conditional Build Step插件。它非常灵活,您可以根据构建失败或成功选择要采取的操作。例如,这是我使用条件构建步骤发送构建失败通知的情况:
您还可以使用条件构建步骤来设置环境变量或写入您在后续"执行shell"中使用的日志文件。脚步。因此,例如,您可以创建一个包含三个步骤的构建:一个用于编译代码/运行测试,另一个用于设置STATUS="failed"
环境变量,然后是第三个步骤,用于发送类似The build finished with a status: ${STATUS}
<的电子邮件/ p>
答案 3 :(得分:3)
非常简单的解决方案,也许不是优雅的,但它确实有效!
1:捕获你想要捕获的所有构建结果(在本例中为SUCCESS)。
2:注入一个以作业状态值
的env变量3:对任何其他状态执行相同操作(在这种情况下,我从中止到不稳定)
4:在您能够将该值用于您想做的任何事情之后......在这种情况下,我将它传递给ANT脚本! (或者你可以直接从ANT加载它作为环境变量...)
希望它可以提供帮助!
答案 4 :(得分:1)
试试Post Build Task插件......
它允许您根据日志输出指定条件...
答案 5 :(得分:0)
基本解决方案(请不要笑)
#!/bin/bash
STATUS='Not set'
if [ ! -z $UPSTREAM_BUILD_DIR ];then
ISFAIL=$(ls -l /var/lib/jenkins/jobs/$UPSTREAM_BUILD_DIR/builds | grep "lastFailedBuild\|lastUnsuccessfulBuild" | grep $UPSTREAM_BUILD_NR)
ISSUCCESS=$(ls -l /var/lib/jenkins/jobs/$UPSTREAM_BUILD_DIR/builds | grep "lastSuccessfulBuild\|lastStableBuild" | grep $UPSTREAM_BUILD_NR)
if [ ! -z "$ISFAIL" ];then
echo $ISFAIL
STATUS='FAIL'
elif [ ! -z "$ISSUCCESS" ]
then
STATUS='SUCCESS'
fi
fi
echo $STATUS
其中
$ UPSTREAM_BUILD_DIR = $ JOB_NAME
$ UPSTREAM_BUILD_NR = $ BUILD_NUMBER
从上游构建传递
当然,“ / var / lib / jenkins / jobs /”取决于您安装的jenkins
答案 6 :(得分:0)
这里我使用groovy script plugin来获取构建状态并将其设置为环境变量,因此可以在使用post-build task plugin的构建后脚本中使用该环境变量。
Groovy脚本:-
import hudson.EnvVars
import hudson.model.Environment
def build = Thread.currentThread().executable
def result = manager.build.result.toString()
def vars = [BUILD_STATUS: result]
build.environments.add(0, Environment.create(new EnvVars(vars)))
后记:-
echo BUILD_STATUS="${BUILD_STATUS}"