Как немедленно регистрировать данные из кода, работающего на подчиненном устройстве Jenkins? - PullRequest
0 голосов
/ 28 января 2019

Я разрабатываю пользовательский плагин для сборки Jenkins, в котором некоторые части кода должны работать на ведомом устройстве.Я могу войти из этого кода в мастер Jenkins, однако все данные для регистрации эффективно регистрируются в одном чанке только после завершения выполнения кода в ведомом устройстве.На самом деле я хотел бы, чтобы данные регистрировались сразу после каждой подпрограммы.

Вот мой код для запуска вещей под ведомым устройством на основе механизма Jenkins VirtualChannel / Callable (упрощено):

    public void perform(Run<?, ?> run, FilePath workspace, Launcher launcher, TaskListener listener) throws InterruptedException, IOException {

        ServerNode serverNode = new ServerNode(workspace,listener)

        Result result = Result.SUCCESS,
        VirtualChannel channel = launcher.getChannel();
        try {
            result = channel.call(serverNode);
        }catch(Exception e)
        {
        }

        run.setResult(result);
    }


    public class ServerNode implements Callable<Result,Exception>{

        private final FilePath workspace;
        private final TaskListener taskListener;

        public ServerNode(FilePath workspace, TaskListener taskListener) throws IOException, InterruptedException {

            this.workspace = workspace;
            this.taskListener = taskListener;              
        }

        @Override
        public Result call() throws Exception
        {
            //Code executed in the slave
            taskListener.getLogger().print("run some code on slave!");
            taskListener.getLogger().print("run some more code on slave!");

            // Do a lot more, time-consuming stuff....

            //We are finally done
            return Result.SUCCESS;

        }
    }

Таким образом, в этом примере мастер записывает:

run some code on slave!
run some more code on slave!

И проблема в том, что он делает это только в одном фрагменте после того, как call() сделано.

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