gpt4 book ai didi

java - 使用java客户端实时检索jenkins的构建日志

转载 作者:行者123 更新时间:2023-12-01 21:56:57 25 4
gpt4 key购买 nike

对于某些任务,我需要从 Jenkins 实时获取构建日志。我正在使用以下代码来检索日志。然而问题是,由于我实时运行下面的代码(当 Jenkins 作业运行时),我得到了部分数据,因为构建日志随着作业的进展不断更新。例如,假设作业在中午 12 点开始并持续 10 分钟,当下面的代码在中午 12:01 运行时,它只会获得部分日志,因为日志会随着作业的进展不断追加。

是否有一种有效的方法来持续轮询并获取每个请求的所有增量。

谢谢。

public static InputStream getInputStream(){

URL urls = null;
try {
urls = new URL("https://jenkins-prod/job/Tests/job/Pipeline_Tests/lastBuild/consoleText");
} catch (MalformedURLException e) {
e.printStackTrace();
}
HttpURLConnection connection = null;
try {
connection = (HttpURLConnection) urls.openConnection();
} catch (IOException e) {
e.printStackTrace();
}
connection.setDoOutput(true);
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2");
System.setProperty("http.agent", "Chrome");
connection.setInstanceFollowRedirects(false);
try {
connection.setRequestMethod("GET");
} catch (ProtocolException e) {
e.printStackTrace();
}
connection.setRequestProperty("Content-Type", "application/json");

try {

BufferedReader br = new BufferedReader(new InputStreamReader(
(connection.getInputStream())));

String line;
do {
line = br.readLine();
System.out.println(line);
System.out.flush();
} while ((line = br.readLine())!= null);

return connection.getInputStream();

} catch (IOException ex) {
ex.printStackTrace();
}
return null;
}

最佳答案

如果确实需要通过程序实时读取构建日志(构建运行时);假设您将阅读作业“A”的日志

  • 定义作业“A”的预构建操作,该操作将启动您的“监听器”构建开始之前的程序。
  • 预构建将启动您的监听器,如果您可以在小周期内监听,那么您将捕获构建开始的时间。

但是,如果要求可能有所不同,您可以在构建完成后获得内容,则可以使用此类插件将构建日志内容发送到任何地方。一个例子https://wiki.jenkins.io/display/JENKINS/Email-ext+plugin发送电子邮件的插件。

关于java - 使用java客户端实时检索jenkins的构建日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58737307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com