diff --git a/src/main/java/com/amazonaws/codedeploy/AWSClients.java b/src/main/java/com/amazonaws/codedeploy/AWSClients.java index 0b25e63..224564d 100644 --- a/src/main/java/com/amazonaws/codedeploy/AWSClients.java +++ b/src/main/java/com/amazonaws/codedeploy/AWSClients.java @@ -89,6 +89,8 @@ public static AWSClients fromBasicCredentials(String region, String awsAccessKey /** * Via the default provider chain (i.e., global keys for this Jenkins instance), return the account ID for the * currently authenticated user. + * @param proxyHost Proxy host DNS + * @param proxyPort Proxy host port number * @return 12-digit account id */ public static String getAccountId(String proxyHost, int proxyPort) { diff --git a/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java b/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java index fd1be49..ed670ae 100644 --- a/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java +++ b/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java @@ -70,7 +70,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. @@ -95,6 +95,7 @@ public class AWSCodeDeployPublisher extends Publisher { private final String region; private final String includes; private final String excludes; + private final boolean useDefaultExcludes; private final String subdirectory; private final String proxyHost; private final int proxyPort; @@ -131,7 +132,8 @@ public AWSCodeDeployPublisher( String proxyHost, int proxyPort, String excludes, - String subdirectory) { + String subdirectory, + Boolean useDefaultExcludes) { this.externalId = externalId; this.applicationName = applicationName; @@ -144,6 +146,13 @@ public AWSCodeDeployPublisher( this.region = region; this.includes = includes; this.excludes = excludes; + if (useDefaultExcludes == null) { + // if not defined, default to true to retain backward compatibilty for versions <= 1.15 + this.useDefaultExcludes = true; + } + else { + this.useDefaultExcludes = useDefaultExcludes; + } this.subdirectory = subdirectory; this.proxyHost = proxyHost; this.proxyPort = proxyPort; @@ -179,6 +188,7 @@ public AWSCodeDeployPublisher( } else { this.s3prefix = s3prefix; } + } @Override @@ -357,7 +367,7 @@ private RevisionLocation zipAndUpload(AWSClients aws, String projectName, FilePa try { sourceDirectory.zip( outputStream, - new DirScanner.Glob(this.includes, this.excludes) + new DirScanner.Glob(this.includes, this.excludes, this.useDefaultExcludes) ); } finally { outputStream.close(); @@ -495,8 +505,7 @@ 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. */ @@ -711,6 +720,10 @@ public String getExcludes() { return excludes; } + public boolean getUseDefaultExcludes() { + return useDefaultExcludes; + } + public String getSubdirectory() { return subdirectory; } diff --git a/src/main/resources/com/amazonaws/codedeploy/AWSCodeDeployPublisher/config.jelly b/src/main/resources/com/amazonaws/codedeploy/AWSCodeDeployPublisher/config.jelly index 104cdb1..c0ea466 100644 --- a/src/main/resources/com/amazonaws/codedeploy/AWSCodeDeployPublisher/config.jelly +++ b/src/main/resources/com/amazonaws/codedeploy/AWSCodeDeployPublisher/config.jelly @@ -27,6 +27,11 @@If checked, the deployment will exclude files based on the Ant default exclude list.
+ +