From c3a7d0e67da600fe5e33a3fa51b17e6ce84a0f79 Mon Sep 17 00:00:00 2001 From: "Morley, Jonathan" Date: Tue, 18 Aug 2020 12:08:22 -0400 Subject: [PATCH] Do not stop the codebuild, to allow for postbuild actions --- .tool-versions | 2 +- .../jenkins/codebuilder/CodeBuilderAgent.java | 19 ++--------------- .../codebuilder/CodeBuilderComputer.java | 21 ++++++++----------- 3 files changed, 12 insertions(+), 30 deletions(-) diff --git a/.tool-versions b/.tool-versions index 3e8977a..008953d 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -java adopt-openjdk-8u242-b08 +java adoptopenjdk-8.0.242+8.1 \ No newline at end of file diff --git a/src/main/java/dev/lsegal/jenkins/codebuilder/CodeBuilderAgent.java b/src/main/java/dev/lsegal/jenkins/codebuilder/CodeBuilderAgent.java index 035001c..07fab3c 100644 --- a/src/main/java/dev/lsegal/jenkins/codebuilder/CodeBuilderAgent.java +++ b/src/main/java/dev/lsegal/jenkins/codebuilder/CodeBuilderAgent.java @@ -59,22 +59,7 @@ public AbstractCloudComputer createComputer() { /** {@inheritDoc} */ @Override protected void _terminate(TaskListener listener) throws IOException, InterruptedException { - listener.getLogger().println("[CodeBuilder]: Terminating agent: " + getDisplayName()); - - if (getLauncher() instanceof CodeBuilderLauncher) { - String buildId = ((CodeBuilderComputer) getComputer()).getBuildId(); - if (StringUtils.isBlank(buildId)) { - return; - } - - try { - LOGGER.info("[CodeBuilder]: Stopping build ID: {}", buildId); - cloud.getClient().stopBuild(new StopBuildRequest().withId(buildId)); - } catch (ResourceNotFoundException e) { - // this is fine. really. - } catch (Exception e) { - LOGGER.error("[CodeBuilder]: Failed to stop build ID: {}", buildId, e); - } - } + LOGGER.info("[CodeBuilder]: Terminating agent: " + getDisplayName()); + ((CodeBuilderComputer) getComputer()).gracefulShutdown(); } } diff --git a/src/main/java/dev/lsegal/jenkins/codebuilder/CodeBuilderComputer.java b/src/main/java/dev/lsegal/jenkins/codebuilder/CodeBuilderComputer.java index 3045e08..eccb1ac 100644 --- a/src/main/java/dev/lsegal/jenkins/codebuilder/CodeBuilderComputer.java +++ b/src/main/java/dev/lsegal/jenkins/codebuilder/CodeBuilderComputer.java @@ -13,6 +13,7 @@ import hudson.model.Executor; import hudson.model.Queue; import hudson.slaves.AbstractCloudComputer; +import hudson.slaves.OfflineCause; /** * CodeBuilderComputer class. @@ -99,19 +100,15 @@ public String toString() { return String.format("name: %s buildID: %s", getName(), getBuildId()); } - private void gracefulShutdown() { + protected void gracefulShutdown() { setAcceptingTasks(false); - Future next = Computer.threadPoolForRemoting.submit(() -> { - LOGGER.info("[CodeBuilder]: [{}]: Terminating agent after task.", this); - try { - Thread.sleep(500); - CodeBuilderCloud.jenkins().removeNode(getNode()); - } catch (Exception e) { - LOGGER.info("[CodeBuilder]: [{}]: Termination error: {}", this, e.getClass()); - } - return null; - }); - next.notify(); + LOGGER.info("[CodeBuilder]: [{}]: Terminating agent after task.", this); + try { + Thread.sleep(500); + disconnect(new OfflineCause.IdleOfflineCause()); + } catch (Exception e) { + LOGGER.info("[CodeBuilder]: [{}]: Termination error: {}", this, e.getClass()); + } } }