当前位置: 首页 > 面试题库 >

Jenkins的日志更改

陶法
2023-03-14
问题内容

现在,我的构建过程使用MS Build从源进行构建,并在构建过程中执行自定义程序。我在程序中写入控制台的所有内容都记录在控制台输出中。

但是,我也想在用户界面的“更改”和/或“状态”部分中记录一些条目(类似于SVN所做的事情)。

如何才能做到这一点?


问题答案:

// This is a deliciously convoluted and fragile hack to force Jenkins to show the
// changes via a Groovy Postbuild script:

// fake a Subversion changelog.xml file
changes = new File(manager.build.getRootDir(), "../../workspace/changes.txt")
changelog = new File(manager.build.getRootDir(), "changelog.xml")
changelog.withWriter {
  out ->
out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?><log><logentry revision=\""
  + manager.build.number + "\"><date>"
  + new java.util.Date() + "</date><paths>")
message  = ""
changes.eachLine {
   line ->
     if (line.startsWith("./")) line = line.substring(2)
     if (!".checksums".equals(line)) {
       out.println("<path action=\"M\">" + line + "</path>")
       message += line + "\n"
    }
   }
  out.println("</paths><msg>" + message + "</msg></logentry></log>")
}

// get an instance of the SubversionChangeLogParser
import java.net.URL;
import java.net.URLClassLoader;
baseDir = new File(jenkins.model.Jenkins.getInstance().getRootDir(),
  "plugins/subversion/WEB-INF/")
urls = new URL[2];
urls[0] = new File(baseDir, "classes/").toURI().toURL() 
urls[1] = new File(baseDir, "lib/svnkit-1.3.4-hudson-2.jar").toURI().toURL() 
loader = new URLClassLoader(urls,  manager.getClass().getClassLoader())
svn = loader.loadClass("hudson.scm.SubversionChangeLogParser").newInstance()

// force the current build to take that parser, parse the changelog.xml,
// and force it down AbstractBuild's throat, too
scmField = manager.build.getClass().getSuperclass().getSuperclass().getDeclaredField("scm")
scmField.setAccessible(true)
scmField.set(manager.build, svn)

changeSet = svn.parse(manager.build, changelog)
changeSetField = manager.build.getClass().getSuperclass().getSuperclass().getDeclaredField("changeSet");
changeSetField.setAccessible(true)
import java.lang.ref.WeakReference;
if (changeSetField.getDeclaringClass().isAssignableFrom(WeakReference.class))
  changeSet = new WeakReference(changeSet)
changeSetField.set(manager.build, changeSet)


 类似资料:
  • 问题内容: 我一直在努力寻找一种方法,以将Jenkins生成的更改列表(通过SVN拉取)包括到我们的Testflight注释中。我正在使用Testflight插件,该插件具有用于注释的字段- 但jenkins似乎没有嵌入该信息的任何参数/令牌。 有谁能完成这样的运气吗? 问题答案: 看起来TestFlight插件会将变量扩展到“构建说明”字段中,所以问题是:如何将当前构建的更改获取到环境变量中?

  • 问题内容: 我正在研究如何在项目的scm中使用新的Jenkins Pipeline插件(我们使用GIT)。 作业脚本是从SCM加载的(“来自SCM的管道脚本”选项),并且在脚本中执行。 问题是提交是重复的。在build目录中,有2个具有相同的提交,因此change视图可能非常混乱: 在多分支管道中也会发生此问题。 这里是内容: 难道我做错了什么 ? Jenkins版本:1.642.2(docker

  • 项目所有的主要更新都将记录在本文档中。 [Unreleased] 优化拷贝 npm 模块链路 支持 createRef renderProps 支持 支持 forwardRef useImperativeHandle 支持基于 Kbone 的运行时方案 2019-12-19 Added 支持 withRouter Fixed 修复 JSX 参数绑定的问题 Changed 用户在 tabBar.it

  • 升级 使用 pip 升级 MkDocs 到最新版: pip install -U mkdocs 查看当前安装的版本使用 pip freeze: pip freeze | grep mkdocs 0.11.1 (2014-11-20) 修复: Fix a CSS wrapping issue with code highlighting in the ReadTheDocs theme. (

  • CatLib的版本标准是采用:Semver语义化版本标准 摘要 版本格式:主版本号.次版本号.修订号,版本号递增规则如下: 主版本号:当你做了不兼容的 API 修改, 次版本号:当你做了向下兼容的功能性新增, 修订号:当你做了向下兼容的问题修正。 先行版本号及版本编译信息可以加到主版本号.次版本号.修订号的后面,作为延伸。 v2.0.0 (unreleased) Added Inject allo

  • 2.10.3 (2021-07-30) 修复 video url 解析 修复 scrollIntoView 跳动 修复 require wxs 失效 修复自定义组件 class 为数组报错 修复 input 设置值为 null 时错误显示 优化 udpSocket 实现 优化渲染逻辑 2.10.2 (2021-07-20) 修复 slot 渲染逻辑 2.10.1 (2021-07-16) 优化 i