diff --git a/.gitignore b/.gitignore
index d9faa59..3e126cd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -66,4 +66,4 @@ work/
target
# Maven Release Plugin
-release.properties
\ No newline at end of file
+release.properties
diff --git a/pom.xml b/pom.xml
index e5c8db1..855827b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,11 +3,11 @@
org.jenkins-ci.plugins
plugin
- 1.580.1
+ 3.19
aws-lambda
- 0.6.0-SNAPSHOT
+ 0.6.1-SNAPSHOT
hpi
AWS Lambda Plugin
@@ -45,8 +45,10 @@
- 1.11.64
- 2.0.0
+ 1.11.160
+ 8
+ 2.60.3
+ 2.0.0
@@ -55,7 +57,17 @@
aws-java-sdk-core
${aws.version}
-
+
+ org.jenkins-ci.plugins
+ credentials
+ 2.1.18
+
+
+ org.jenkins-ci.plugins
+ plain-credentials
+ 1.3
+
+
com.amazonaws
aws-java-sdk-lambda
${aws.version}
@@ -68,7 +80,7 @@
org.jenkins-ci.plugins
structs
- 1.6
+ 1.7
org.hamcrest
@@ -82,6 +94,12 @@
1.10.19
test
+
+
+ org.jenkins-ci.plugins
+ mailer
+ 1.18
+
diff --git a/src/main/java/com/xti/jenkins/plugin/awslambda/publish/LambdaPublishBuildStepVariables.java b/src/main/java/com/xti/jenkins/plugin/awslambda/publish/LambdaPublishBuildStepVariables.java
index 4ad5979..f8905bc 100644
--- a/src/main/java/com/xti/jenkins/plugin/awslambda/publish/LambdaPublishBuildStepVariables.java
+++ b/src/main/java/com/xti/jenkins/plugin/awslambda/publish/LambdaPublishBuildStepVariables.java
@@ -55,7 +55,6 @@ public boolean getUseInstanceCredentials() {
return useInstanceCredentials;
}
- @DataBoundSetter
public void setAwsAccessKeyId(String awsAccessKeyId) {
this.awsAccessKeyId = awsAccessKeyId;
}
@@ -64,7 +63,6 @@ public String getAwsAccessKeyId() {
return this.awsAccessKeyId;
}
- @DataBoundSetter
public void setAwsSecretKey(String awsSecretKey) {
this.awsSecretKey = Secret.fromString(awsSecretKey).getEncryptedValue();
}
diff --git a/src/main/java/com/xti/jenkins/plugin/awslambda/upload/LambdaUploadBuildStep.java b/src/main/java/com/xti/jenkins/plugin/awslambda/upload/LambdaUploadBuildStep.java
index 7d5e5a8..ebf8ea9 100644
--- a/src/main/java/com/xti/jenkins/plugin/awslambda/upload/LambdaUploadBuildStep.java
+++ b/src/main/java/com/xti/jenkins/plugin/awslambda/upload/LambdaUploadBuildStep.java
@@ -26,6 +26,8 @@
* #L%
*/
+import com.cloudbees.plugins.credentials.CredentialsProvider;
+import com.cloudbees.plugins.credentials.common.IdCredentials;
import com.xti.jenkins.plugin.awslambda.callable.DeployCallable;
import com.xti.jenkins.plugin.awslambda.util.LambdaClientConfig;
import hudson.Extension;
@@ -41,6 +43,7 @@
import jenkins.tasks.SimpleBuildStep;
import net.sf.json.JSONObject;
import org.jenkinsci.Symbol;
+import org.jenkinsci.plugins.plaincredentials.StringCredentials;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.StaplerRequest;
@@ -66,6 +69,13 @@ public void setLambdaUploadBuildStepVariables(LambdaUploadBuildStepVariables Lam
@Override
public void perform(@Nonnull Run, ?> run, @Nonnull FilePath workspace, @Nonnull Launcher launcher, @Nonnull TaskListener listener) throws InterruptedException, IOException {
+ IdCredentials cred = CredentialsProvider.findCredentialById(
+ lambdaUploadBuildStepVariables.getCredentialsId(),
+ IdCredentials.class,
+ run);
+ StringCredentials c = (StringCredentials)cred;
+ lambdaUploadBuildStepVariables.setAwsAccessKeyId(c.getId());
+ lambdaUploadBuildStepVariables.setAwsSecretKey(c.getSecret().getPlainText());
perform(lambdaUploadBuildStepVariables, run, workspace, launcher, listener);
}
diff --git a/src/main/java/com/xti/jenkins/plugin/awslambda/upload/LambdaUploadBuildStepVariables.java b/src/main/java/com/xti/jenkins/plugin/awslambda/upload/LambdaUploadBuildStepVariables.java
index 7f93711..6a84f96 100644
--- a/src/main/java/com/xti/jenkins/plugin/awslambda/upload/LambdaUploadBuildStepVariables.java
+++ b/src/main/java/com/xti/jenkins/plugin/awslambda/upload/LambdaUploadBuildStepVariables.java
@@ -26,6 +26,10 @@
* #L%
*/
+import com.cloudbees.plugins.credentials.CredentialsMatchers;
+import com.cloudbees.plugins.credentials.CredentialsProvider;
+import com.cloudbees.plugins.credentials.common.StandardListBoxModel;
+import com.cloudbees.plugins.credentials.domains.DomainRequirement;
import com.xti.jenkins.plugin.awslambda.AWSLambdaDescriptor;
import com.xti.jenkins.plugin.awslambda.util.ExpansionUtils;
import com.xti.jenkins.plugin.awslambda.util.JenkinsProxy;
@@ -33,15 +37,24 @@
import com.xti.jenkins.plugin.awslambda.util.Tokenizer;
import hudson.EnvVars;
import hudson.Extension;
+import hudson.Util;
import hudson.model.AbstractDescribableImpl;
+import hudson.model.Item;
+import hudson.model.Queue;
+import hudson.model.queue.Tasks;
+import hudson.security.ACL;
import hudson.util.FormValidation;
import hudson.util.ListBoxModel;
import hudson.util.Secret;
+import jenkins.model.Jenkins;
import org.apache.commons.lang.StringUtils;
+import org.jenkinsci.plugins.plaincredentials.StringCredentials;
+import org.kohsuke.stapler.AncestorInPath;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.DataBoundSetter;
import org.kohsuke.stapler.QueryParameter;
+import java.util.Collections;
import java.util.HashMap;
/**
@@ -70,6 +83,7 @@ public class LambdaUploadBuildStepVariables extends AbstractDescribableImpl emptyList(),
+ CredentialsMatchers.anyOf(CredentialsMatchers.instanceOf(StringCredentials.class)))
+ .includeCurrentValue(credentialsId);
+ }
+
+ public FormValidation doCheckCredentialsId(@AncestorInPath Item item,
+ @QueryParameter String value) {
+ if (item == null && !Jenkins.getInstance().hasPermission(Jenkins.ADMINISTER) ||
+ item != null && !item.hasPermission(Item.EXTENDED_READ)) {
+ return FormValidation.ok();
+ }
+
+ value = Util.fixEmptyAndTrim(value);
+ if (value == null) {
+ return FormValidation.ok();
+ }
+
+ for (ListBoxModel.Option o : CredentialsProvider
+ .listCredentials(StringCredentials.class, item, item instanceof Queue.Task
+ ? Tasks.getAuthenticationOf((Queue.Task) item)
+ : ACL.SYSTEM,
+ Collections. emptyList(),
+ CredentialsMatchers.anyOf(CredentialsMatchers.instanceOf(StringCredentials.class)))) {
+ if (StringUtils.equals(value, o.value)) {
+ return FormValidation.ok();
+ }
+ }
+ // no credentials available, can't check
+ return FormValidation.warning("Cannot find any credentials with id " + value);
+ }
+
/**
* This human readable name is used in the configuration screen.
*/
diff --git a/src/main/java/com/xti/jenkins/plugin/awslambda/upload/LambdaUploadPublisher.java b/src/main/java/com/xti/jenkins/plugin/awslambda/upload/LambdaUploadPublisher.java
index 91d194e..aaae303 100644
--- a/src/main/java/com/xti/jenkins/plugin/awslambda/upload/LambdaUploadPublisher.java
+++ b/src/main/java/com/xti/jenkins/plugin/awslambda/upload/LambdaUploadPublisher.java
@@ -26,11 +26,14 @@
* #L%
*/
+import com.cloudbees.plugins.credentials.CredentialsProvider;
+import com.cloudbees.plugins.credentials.common.IdCredentials;
import com.xti.jenkins.plugin.awslambda.callable.DeployCallable;
import com.xti.jenkins.plugin.awslambda.upload.LambdaUploadAction;
import com.xti.jenkins.plugin.awslambda.upload.DeployConfig;
import com.xti.jenkins.plugin.awslambda.upload.LambdaUploadVariables;
import com.xti.jenkins.plugin.awslambda.util.LambdaClientConfig;
+import hudson.EnvVars;
import hudson.Extension;
import hudson.FilePath;
import hudson.Launcher;
@@ -40,6 +43,7 @@
import hudson.tasks.Notifier;
import hudson.tasks.Publisher;
import net.sf.json.JSONObject;
+import org.jenkinsci.plugins.plaincredentials.StringCredentials;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.StaplerRequest;
@@ -63,9 +67,22 @@ public List getLambdaVariablesList() {
public boolean perform(AbstractBuild, ?> build, Launcher launcher,
BuildListener listener) {
boolean returnValue = true;
+ EnvVars environment;
+ try{environment = build.getEnvironment(listener);}
+ catch(Exception e){
+ e.printStackTrace();
+ }
if (lambdaVariablesList != null){
for (LambdaUploadVariables lambdaVariables : lambdaVariablesList) {
+ IdCredentials cred = CredentialsProvider.findCredentialById(
+ lambdaVariables.getCredentialsId(),
+ IdCredentials.class,
+ build);
+ StringCredentials c = (StringCredentials)cred;
+ lambdaVariables.setAwsAccessKeyId(c.getId());
+ lambdaVariables.setAwsSecretKey(c.getSecret().getPlainText());
+
returnValue = returnValue && perform(lambdaVariables, build, launcher, listener);
}
}
diff --git a/src/main/java/com/xti/jenkins/plugin/awslambda/upload/LambdaUploadVariables.java b/src/main/java/com/xti/jenkins/plugin/awslambda/upload/LambdaUploadVariables.java
index 8b3a3c3..bd8b513 100644
--- a/src/main/java/com/xti/jenkins/plugin/awslambda/upload/LambdaUploadVariables.java
+++ b/src/main/java/com/xti/jenkins/plugin/awslambda/upload/LambdaUploadVariables.java
@@ -26,6 +26,10 @@
* #L%
*/
+import com.cloudbees.plugins.credentials.CredentialsMatchers;
+import com.cloudbees.plugins.credentials.CredentialsProvider;
+import com.cloudbees.plugins.credentials.common.StandardListBoxModel;
+import com.cloudbees.plugins.credentials.domains.DomainRequirement;
import com.xti.jenkins.plugin.awslambda.AWSLambdaDescriptor;
import com.xti.jenkins.plugin.awslambda.util.ExpansionUtils;
import com.xti.jenkins.plugin.awslambda.util.JenkinsProxy;
@@ -33,17 +37,24 @@
import com.xti.jenkins.plugin.awslambda.util.Tokenizer;
import hudson.EnvVars;
import hudson.Extension;
-import hudson.model.AbstractDescribableImpl;
-import hudson.model.Items;
+import hudson.Util;
+import hudson.model.*;
+import hudson.model.queue.Tasks;
+import hudson.security.ACL;
import hudson.util.FormValidation;
import hudson.util.ListBoxModel;
import hudson.util.Secret;
+import jenkins.model.Jenkins;
import org.apache.commons.lang.StringUtils;
+import org.jenkinsci.plugins.plaincredentials.StringCredentials;
+import org.kohsuke.stapler.AncestorInPath;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.DataBoundSetter;
import org.kohsuke.stapler.QueryParameter;
+import java.util.Collections;
import java.util.HashMap;
+import java.util.UUID;
/**
* Describable containing Lambda post build action config, checking feasability of migrating it to upload package.
@@ -72,6 +83,7 @@ public class LambdaUploadVariables extends AbstractDescribableImpl emptyList(),
+ CredentialsMatchers.anyOf(CredentialsMatchers.instanceOf(StringCredentials.class)))
+ .includeCurrentValue(credentialsId);
+ }
+
+ public FormValidation doCheckCredentialsId(@AncestorInPath Item item,
+ @QueryParameter String value) {
+ if (item == null && !Jenkins.getInstance().hasPermission(Jenkins.ADMINISTER) ||
+ item != null && !item.hasPermission(Item.EXTENDED_READ)) {
+ return FormValidation.ok();
+ }
+
+ value = Util.fixEmptyAndTrim(value);
+ if (value == null) {
+ return FormValidation.ok();
+ }
+
+ for (ListBoxModel.Option o : CredentialsProvider
+ .listCredentials(StringCredentials.class, item, item instanceof Queue.Task
+ ? Tasks.getAuthenticationOf((Queue.Task) item)
+ : ACL.SYSTEM,
+ Collections. emptyList(),
+ CredentialsMatchers.anyOf(CredentialsMatchers.instanceOf(StringCredentials.class)))) {
+ if (StringUtils.equals(value, o.value)) {
+ return FormValidation.ok();
+ }
+ }
+ // no credentials available, can't check
+ return FormValidation.warning("Cannot find any credentials with id " + value);
+ }
/**
* This human readable name is used in the configuration screen.
*/
diff --git a/src/main/resources/com/xti/jenkins/plugin/awslambda/upload/LambdaUploadBuildStepVariables/config.jelly b/src/main/resources/com/xti/jenkins/plugin/awslambda/upload/LambdaUploadBuildStepVariables/config.jelly
index 56f4e1c..0075800 100644
--- a/src/main/resources/com/xti/jenkins/plugin/awslambda/upload/LambdaUploadBuildStepVariables/config.jelly
+++ b/src/main/resources/com/xti/jenkins/plugin/awslambda/upload/LambdaUploadBuildStepVariables/config.jelly
@@ -1,18 +1,13 @@
-
+
-
-
-
-
-
-
-
-
-
+
+
+
diff --git a/src/main/resources/com/xti/jenkins/plugin/awslambda/upload/LambdaUploadPublisher/config.jelly b/src/main/resources/com/xti/jenkins/plugin/awslambda/upload/LambdaUploadPublisher/config.jelly
index 64f0ccf..eeb929f 100644
--- a/src/main/resources/com/xti/jenkins/plugin/awslambda/upload/LambdaUploadPublisher/config.jelly
+++ b/src/main/resources/com/xti/jenkins/plugin/awslambda/upload/LambdaUploadPublisher/config.jelly
@@ -1,4 +1,4 @@
-
+
@@ -6,11 +6,8 @@