Извлечение журналов сборки из jenkins в режиме реального времени с использованием Java-клиента - PullRequest
0 голосов
/ 06 ноября 2019

Для какой-то задачи мне нужно получать журналы сборки от 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;
    }

1 Ответ

0 голосов
/ 06 ноября 2019

Если требуется действительно читать журналы сборки через программу в режиме реального времени (во время сборки);Предположим, вы прочтете журналы задания «A»

  • Определите действие перед сборкой для задания «A», которое запустит вашу программу «слушателя» до начала сборки.
  • Предварительноbuild запустит ваш слушатель, затем вы поймаете время, когда начнется сборка, если вы сможете прослушивать в течение небольших периодов.

Но, если требования могут отличаться, то, что вы можете получить после сборок контентаЗакончив, вы можете использовать такие плагины для отправки содержимого журнала сборки в любое место. Один из примеров https://wiki.jenkins.io/display/JENKINS/Email-ext+plugin плагин для отправки электронной почты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...