From 0822ad12b834dea7efc885c1e98129a924d318de Mon Sep 17 00:00:00 2001 From: Gleb Samsonov Date: Tue, 7 Feb 2017 13:59:08 +0300 Subject: [PATCH 1/2] exposing deployment id --- .../codedeploy/AWSCodeDeployPublisher.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java b/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java index fd1be49..c99abd0 100644 --- a/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java +++ b/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java @@ -35,10 +35,12 @@ import hudson.Launcher; import hudson.Extension; import hudson.Util; +import hudson.EnvVars; import hudson.model.AbstractBuild; import hudson.model.BuildListener; import hudson.model.AbstractProject; import hudson.model.Result; +import hudson.model.Environment; import hudson.tasks.BuildStepMonitor; import hudson.tasks.BuildStepDescriptor; import hudson.tasks.Publisher; @@ -70,7 +72,7 @@ /** * The AWS CodeDeploy Publisher is a post-build plugin that adds the ability to start a new CodeDeploy deployment * with the project's workspace as the application revision. - *

+ * * To configure, users must create an IAM role that allows "S3" and "CodeDeploy" actions and must be assumable by * the globally configured keys. This allows the plugin to get temporary credentials instead of requiring permanent * credentials to be configured for each project. @@ -79,6 +81,7 @@ public class AWSCodeDeployPublisher extends Publisher { public static final long DEFAULT_TIMEOUT_SECONDS = 900; public static final long DEFAULT_POLLING_FREQUENCY_SECONDS = 15; public static final String ROLE_SESSION_NAME = "jenkins-codedeploy-plugin"; + public static final String AWS_CODEDEPLOY_DEPLOYMENT_ID = "AWS_CODEDEPLOY_DEPLOYMENT_ID"; private static final Regions[] AVAILABLE_REGIONS = {Regions.AP_NORTHEAST_1, Regions.AP_SOUTHEAST_1, Regions.AP_SOUTHEAST_2, Regions.EU_WEST_1, Regions.US_EAST_1, Regions.US_WEST_2, Regions.EU_CENTRAL_1, Regions.US_WEST_1, Regions.SA_EAST_1, Regions.AP_NORTHEAST_2, Regions.AP_SOUTH_1}; private final String s3bucket; @@ -235,7 +238,12 @@ public boolean perform(AbstractBuild build, Launcher launcher, BuildListener lis } else { String deploymentId = createDeployment(aws, revisionLocation); - + if(build instanceof AbstractBuild) { + AbstractBuild ab = (AbstractBuild)build; + envVars.put(AWS_CODEDEPLOY_DEPLOYMENT_ID, deploymentId); + EnvVars envVarsObject = new EnvVars(envVars); + ab.getEnvironments().set(0, Environment.create(envVarsObject)); + } success = waitForDeployment(aws, deploymentId); } @@ -495,8 +503,8 @@ public BuildStepMonitor getRequiredMonitorService() { /** * Descriptor for {@link AWSCodeDeployPublisher}. Used as a singleton. * The class is marked as public so that it can be accessed from views. - *

- *

+ * + * * See src/main/resources/com/amazonaws/codedeploy/AWSCodeDeployPublisher/*.jelly * for the actual HTML fragment for the configuration screen. */ From ebb77a77aca4af93b57dc442796979f82c7d1b5c Mon Sep 17 00:00:00 2001 From: Gleb Samsonov Date: Tue, 7 Feb 2017 16:03:11 +0300 Subject: [PATCH 2/2] delete instanceof check (we'll add it for workflowrun instance) --- .../com/amazonaws/codedeploy/AWSCodeDeployPublisher.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java b/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java index c99abd0..f05d9aa 100644 --- a/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java +++ b/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java @@ -238,12 +238,9 @@ public boolean perform(AbstractBuild build, Launcher launcher, BuildListener lis } else { String deploymentId = createDeployment(aws, revisionLocation); - if(build instanceof AbstractBuild) { - AbstractBuild ab = (AbstractBuild)build; - envVars.put(AWS_CODEDEPLOY_DEPLOYMENT_ID, deploymentId); - EnvVars envVarsObject = new EnvVars(envVars); - ab.getEnvironments().set(0, Environment.create(envVarsObject)); - } + envVars.put(AWS_CODEDEPLOY_DEPLOYMENT_ID, deploymentId); + EnvVars envVarsObject = new EnvVars(envVars); + build.getEnvironments().set(0, Environment.create(envVarsObject)); success = waitForDeployment(aws, deploymentId); }