sml*_*gbl 13 jenkins jenkins-plugins
我想有一个post-build钩子或者类似的,所以我可以拥有与IRC插件相同的输出,但是将它提供给脚本.除了实际构建状态之外,我能够获得所有信息.这不起作用,既不作为"后构建脚本","后构建任务","参数化触发器"aso.
这可能是一些非常丑陋的变通方法,但我想问一下,万一有人有更好的选择...没有写我自己的插件.
通过Groovy Post-Build插件在后期构建步骤中使用Groovy脚本.然后,您可以通过Jenkins Java API访问Jenkins内部.该插件为脚本提供了变量管理器,可用于访问API的重要部分(请参阅插件文档中的" 使用"部分).
例如,以下是如何在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}"
Run Code Online (Sandbox Code Playgroud)
它的工作方式与Groovy Post-Build Plugin一样,但在执行的字符串中没有任何额外的引用.所以我不得不把实际的功能放到一个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()
Run Code Online (Sandbox Code Playgroud)
为此,我非常喜欢Conditional Build Step插件。它非常灵活,您可以根据构建失败或成功来选择要采取的操作。例如,这是我使用条件构建步骤发送构建失败通知的情况:
您还可以使用条件构建步骤来设置环境变量或写入您在后续“执行 shell”步骤中使用的日志文件。因此,例如,您可以通过三个步骤创建一个构建:一个步骤编译代码/运行测试,另一个步骤设置STATUS="failed"
环境变量,然后第三个步骤发送电子邮件,如The build finished with a status: ${STATUS}
非常简单的解决方案,也许不优雅,但它有效!
1:捕获所有您想要捕获的构建结果(在本例中为 SUCCESS)。
2:注入一个以作业状态为值的环境变量
3:对任何其他状态做同样的事情(在这种情况下,我从中止到不稳定)
4:在您可以将值用于您想做的任何事情之后..在这种情况下,我将它传递给一个 ANT 脚本!(或者你可以直接从 ANT 加载它作为环境变量......)
希望能帮到你!
归档时间: |
|
查看次数: |
38534 次 |
最近记录: |