From aecbeeecd84b3f442329eb7fec944497a56e0633 Mon Sep 17 00:00:00 2001 From: Nick Le Mouton Date: Mon, 2 Mar 2020 16:30:26 +1300 Subject: [PATCH 1/9] Add Github deploy --- pom.xml | 2 +- .../codedeploy/AWSCodeDeployPublisher.java | 29 +++++++++++++++++-- .../AWSCodeDeployPublisher/config.jelly | 6 ++++ .../help-githubCommitId.html | 3 ++ .../help-githubRepository.html | 3 ++ 5 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 src/main/resources/com/amazonaws/codedeploy/AWSCodeDeployPublisher/help-githubCommitId.html create mode 100644 src/main/resources/com/amazonaws/codedeploy/AWSCodeDeployPublisher/help-githubRepository.html diff --git a/pom.xml b/pom.xml index 8fa2ce1..acac394 100644 --- a/pom.xml +++ b/pom.xml @@ -54,7 +54,7 @@ org.jenkins-ci.plugins aws-java-sdk - 1.11.119 + 1.11.248 diff --git a/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java b/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java index a2d6672..13570e2 100644 --- a/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java +++ b/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java @@ -30,6 +30,7 @@ import com.amazonaws.services.codedeploy.model.GetDeploymentRequest; import com.amazonaws.services.codedeploy.model.RegisterApplicationRevisionRequest; import com.amazonaws.services.codedeploy.model.S3Location; +import com.amazonaws.services.codedeploy.model.GitHubLocation; import hudson.AbortException; import hudson.FilePath; @@ -85,6 +86,8 @@ public class AWSCodeDeployPublisher extends Publisher implements SimpleBuildStep private final String s3bucket; private final String s3prefix; + private final String githubRepository; + private final String githubCommitId; private final String applicationName; private final String deploymentGroupName; // TODO allow for deployment to multiple groups private final String deploymentConfig; @@ -117,6 +120,8 @@ public class AWSCodeDeployPublisher extends Publisher implements SimpleBuildStep public AWSCodeDeployPublisher( String s3bucket, String s3prefix, + String githubRepository, + String githubCommitId, String applicationName, String deploymentGroupName, String deploymentConfig, @@ -183,6 +188,9 @@ public AWSCodeDeployPublisher( } else { this.s3prefix = s3prefix; } + + this.githubRepository = githubRepository; + this.githubCommitId = githubCommitId; } @Override @@ -229,8 +237,13 @@ public void perform(@Nonnull Run build, @Nonnull FilePath workspace, @Nonnu if (workspace == null) { throw new IllegalArgumentException("No workspace present for the build."); } - final FilePath sourceDirectory = getSourceDirectory(workspace, envVars); - final RevisionLocation revisionLocation = zipAndUpload(aws, projectName, sourceDirectory, logger, envVars); + + if (!StringUtils.isEmpty(this.githubRepository) && !StringUtils.isEmpty(this.githubCommitId)) { + final RevisionLocation revisionLocation = createFromGitHub(); + } else { + final FilePath sourceDirectory = getSourceDirectory(workspace); + final RevisionLocation revisionLocation = zipAndUpload(aws, projectName, sourceDirectory); + } registerRevision(aws, revisionLocation, logger, envVars); if ("onlyRevision".equals(deploymentMethod)){ @@ -398,6 +411,18 @@ private RevisionLocation zipAndUpload(AWSClients aws, String projectName, FilePa } } + private RevisionLocation createFromGitHub() { + GitHubLocation githubLocation = new GitHubLocation(); + githubLocation.setRepository(this.githubRepository); + githubLocation.setCommitId(this.githubCommitId); + + RevisionLocation revisionLocation = new RevisionLocation(); + revisionLocation.setRevisionType(RevisionLocationType.GitHub); + revisionLocation.setGitHubLocation(githubLocation); + + return revisionLocation; + } + private void registerRevision(AWSClients aws, RevisionLocation revisionLocation, PrintStream logger, Map envVars) { String applicationName = getApplicationNameFromEnv(envVars); diff --git a/src/main/resources/com/amazonaws/codedeploy/AWSCodeDeployPublisher/config.jelly b/src/main/resources/com/amazonaws/codedeploy/AWSCodeDeployPublisher/config.jelly index 104cdb1..d3ba81d 100644 --- a/src/main/resources/com/amazonaws/codedeploy/AWSCodeDeployPublisher/config.jelly +++ b/src/main/resources/com/amazonaws/codedeploy/AWSCodeDeployPublisher/config.jelly @@ -18,6 +18,12 @@ + + + + + + diff --git a/src/main/resources/com/amazonaws/codedeploy/AWSCodeDeployPublisher/help-githubCommitId.html b/src/main/resources/com/amazonaws/codedeploy/AWSCodeDeployPublisher/help-githubCommitId.html new file mode 100644 index 0000000..3ea7aaa --- /dev/null +++ b/src/main/resources/com/amazonaws/codedeploy/AWSCodeDeployPublisher/help-githubCommitId.html @@ -0,0 +1,3 @@ +
+ The GitHub commit id hash of the revision to be pushed to CodeDeploy. This is to be used in Pipeline mode. +
diff --git a/src/main/resources/com/amazonaws/codedeploy/AWSCodeDeployPublisher/help-githubRepository.html b/src/main/resources/com/amazonaws/codedeploy/AWSCodeDeployPublisher/help-githubRepository.html new file mode 100644 index 0000000..4fd2096 --- /dev/null +++ b/src/main/resources/com/amazonaws/codedeploy/AWSCodeDeployPublisher/help-githubRepository.html @@ -0,0 +1,3 @@ +
+ The GitHub repository used to pull the revision from. This is to be used in Pipeline mode. +
From ba3c94ab17ee59fdc07ae303d5b17d72c15e1560 Mon Sep 17 00:00:00 2001 From: Nick Le Mouton Date: Mon, 2 Mar 2020 16:38:43 +1300 Subject: [PATCH 2/9] Fix missing envVars --- .../java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java b/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java index 13570e2..a9730eb 100644 --- a/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java +++ b/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java @@ -241,8 +241,8 @@ public void perform(@Nonnull Run build, @Nonnull FilePath workspace, @Nonnu if (!StringUtils.isEmpty(this.githubRepository) && !StringUtils.isEmpty(this.githubCommitId)) { final RevisionLocation revisionLocation = createFromGitHub(); } else { - final FilePath sourceDirectory = getSourceDirectory(workspace); - final RevisionLocation revisionLocation = zipAndUpload(aws, projectName, sourceDirectory); + final FilePath sourceDirectory = getSourceDirectory(workspace, envVars); + final RevisionLocation revisionLocation = zipAndUpload(aws, projectName, sourceDirectory, envVars); } registerRevision(aws, revisionLocation, logger, envVars); From ea919443f38f2f2a49670171feb6d8cdc83ad4b4 Mon Sep 17 00:00:00 2001 From: Nick Le Mouton Date: Mon, 2 Mar 2020 16:41:49 +1300 Subject: [PATCH 3/9] Missing logger --- .../java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java b/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java index a9730eb..58f0066 100644 --- a/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java +++ b/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java @@ -242,7 +242,7 @@ public void perform(@Nonnull Run build, @Nonnull FilePath workspace, @Nonnu final RevisionLocation revisionLocation = createFromGitHub(); } else { final FilePath sourceDirectory = getSourceDirectory(workspace, envVars); - final RevisionLocation revisionLocation = zipAndUpload(aws, projectName, sourceDirectory, envVars); + final RevisionLocation revisionLocation = zipAndUpload(aws, projectName, sourceDirectory, logger, envVars); } registerRevision(aws, revisionLocation, logger, envVars); From eede220eec6054a38245b758d28e7a310612a4d3 Mon Sep 17 00:00:00 2001 From: Nick Le Mouton Date: Mon, 2 Mar 2020 16:44:06 +1300 Subject: [PATCH 4/9] Fix scoping --- .../com/amazonaws/codedeploy/AWSCodeDeployPublisher.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java b/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java index 58f0066..e094f78 100644 --- a/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java +++ b/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java @@ -238,11 +238,13 @@ public void perform(@Nonnull Run build, @Nonnull FilePath workspace, @Nonnu throw new IllegalArgumentException("No workspace present for the build."); } + RevisionLocation revisionLocation; + if (!StringUtils.isEmpty(this.githubRepository) && !StringUtils.isEmpty(this.githubCommitId)) { - final RevisionLocation revisionLocation = createFromGitHub(); + revisionLocation = createFromGitHub(); } else { final FilePath sourceDirectory = getSourceDirectory(workspace, envVars); - final RevisionLocation revisionLocation = zipAndUpload(aws, projectName, sourceDirectory, logger, envVars); + revisionLocation = zipAndUpload(aws, projectName, sourceDirectory, logger, envVars); } registerRevision(aws, revisionLocation, logger, envVars); From 7c301ae81815979b99e82fa8ecf522226882428a Mon Sep 17 00:00:00 2001 From: Nick Le Mouton Date: Mon, 2 Mar 2020 16:48:45 +1300 Subject: [PATCH 5/9] Fix test --- .../com/amazonaws/codedeploy/AWSCodeDeployPublisherTest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/test/java/com/amazonaws/codedeploy/AWSCodeDeployPublisherTest.java b/src/test/java/com/amazonaws/codedeploy/AWSCodeDeployPublisherTest.java index 827ed97..7dfa65f 100644 --- a/src/test/java/com/amazonaws/codedeploy/AWSCodeDeployPublisherTest.java +++ b/src/test/java/com/amazonaws/codedeploy/AWSCodeDeployPublisherTest.java @@ -19,6 +19,8 @@ public void testRoundTripConfiguration() throws Exception { final AWSCodeDeployPublisher publisher = new AWSCodeDeployPublisher( "testBucket", "testPrefix", + "", + "", "testApplicationName", "testDeploymentGroupName", "testDeploymentConfig", From e297aae98fbf5bcb628a7d099c197abef05a9179 Mon Sep 17 00:00:00 2001 From: Nick Le Mouton Date: Mon, 2 Mar 2020 16:56:41 +1300 Subject: [PATCH 6/9] Add properties to test --- .../testSaveUsesSecret/jobs/testSecrets/config.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/test/resources/com/amazonaws/codedeploy/AWSCodeDeployPublisherTest/testSaveUsesSecret/jobs/testSecrets/config.xml b/src/test/resources/com/amazonaws/codedeploy/AWSCodeDeployPublisherTest/testSaveUsesSecret/jobs/testSecrets/config.xml index 969807c..a2b842c 100644 --- a/src/test/resources/com/amazonaws/codedeploy/AWSCodeDeployPublisherTest/testSaveUsesSecret/jobs/testSecrets/config.xml +++ b/src/test/resources/com/amazonaws/codedeploy/AWSCodeDeployPublisherTest/testSaveUsesSecret/jobs/testSecrets/config.xml @@ -40,6 +40,8 @@ test_bucket + + TestApplication TestDeploymentGorup false From 4a55e0b22bb0686c519cd7089d80043c3d17ba77 Mon Sep 17 00:00:00 2001 From: Nick Le Mouton Date: Mon, 2 Mar 2020 17:02:07 +1300 Subject: [PATCH 7/9] Add getters --- .../com/amazonaws/codedeploy/AWSCodeDeployPublisher.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java b/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java index e094f78..dd7cb02 100644 --- a/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java +++ b/src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java @@ -688,6 +688,14 @@ public String getS3prefix() { return s3prefix; } + public String getGithubRepository() { + return githubRepository; + } + + public String getGithubCommitId() { + return githubCommitId; + } + public Long getPollingTimeoutSec() { return pollingTimeoutSec; } From 232cd18e0fef74494a3c9e02f5797a8d1f88c3fe Mon Sep 17 00:00:00 2001 From: Nick Le Mouton Date: Mon, 2 Mar 2020 17:09:39 +1300 Subject: [PATCH 8/9] Test --- .../com/amazonaws/codedeploy/AWSCodeDeployPublisherTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/amazonaws/codedeploy/AWSCodeDeployPublisherTest.java b/src/test/java/com/amazonaws/codedeploy/AWSCodeDeployPublisherTest.java index 7dfa65f..9184ea2 100644 --- a/src/test/java/com/amazonaws/codedeploy/AWSCodeDeployPublisherTest.java +++ b/src/test/java/com/amazonaws/codedeploy/AWSCodeDeployPublisherTest.java @@ -19,8 +19,8 @@ public void testRoundTripConfiguration() throws Exception { final AWSCodeDeployPublisher publisher = new AWSCodeDeployPublisher( "testBucket", "testPrefix", - "", - "", + null, + null, "testApplicationName", "testDeploymentGroupName", "testDeploymentConfig", From f5371bd219ebaa2bb80f89e8096c7eea8cd7218c Mon Sep 17 00:00:00 2001 From: Nick Le Mouton Date: Mon, 2 Mar 2020 17:15:44 +1300 Subject: [PATCH 9/9] Remove github vars from config test --- .../com/amazonaws/codedeploy/AWSCodeDeployPublisherTest.java | 4 ++-- .../testSaveUsesSecret/jobs/testSecrets/config.xml | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/test/java/com/amazonaws/codedeploy/AWSCodeDeployPublisherTest.java b/src/test/java/com/amazonaws/codedeploy/AWSCodeDeployPublisherTest.java index 9184ea2..7dfa65f 100644 --- a/src/test/java/com/amazonaws/codedeploy/AWSCodeDeployPublisherTest.java +++ b/src/test/java/com/amazonaws/codedeploy/AWSCodeDeployPublisherTest.java @@ -19,8 +19,8 @@ public void testRoundTripConfiguration() throws Exception { final AWSCodeDeployPublisher publisher = new AWSCodeDeployPublisher( "testBucket", "testPrefix", - null, - null, + "", + "", "testApplicationName", "testDeploymentGroupName", "testDeploymentConfig", diff --git a/src/test/resources/com/amazonaws/codedeploy/AWSCodeDeployPublisherTest/testSaveUsesSecret/jobs/testSecrets/config.xml b/src/test/resources/com/amazonaws/codedeploy/AWSCodeDeployPublisherTest/testSaveUsesSecret/jobs/testSecrets/config.xml index a2b842c..969807c 100644 --- a/src/test/resources/com/amazonaws/codedeploy/AWSCodeDeployPublisherTest/testSaveUsesSecret/jobs/testSecrets/config.xml +++ b/src/test/resources/com/amazonaws/codedeploy/AWSCodeDeployPublisherTest/testSaveUsesSecret/jobs/testSecrets/config.xml @@ -40,8 +40,6 @@ test_bucket - - TestApplication TestDeploymentGorup false