Для какой-то задачи мне нужно получать журналы сборки от jenkins в режиме реального времени. Я использую следующий код для получения журналов. Однако проблема в том, что, поскольку я выполняю приведенный ниже код в режиме реального времени (когда выполняется задание jenkins), я получаю частичные данные, поскольку журналы сборки продолжают обновляться по мере выполнения задания. Например, предположим, что задание началось в 12:00 и длится 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;
}