|
30 | 30 | import com.amazonaws.services.codedeploy.model.GetDeploymentRequest; |
31 | 31 | import com.amazonaws.services.codedeploy.model.RegisterApplicationRevisionRequest; |
32 | 32 | import com.amazonaws.services.codedeploy.model.S3Location; |
| 33 | +import com.amazonaws.services.codedeploy.model.GitHubLocation; |
33 | 34 |
|
34 | 35 | import hudson.AbortException; |
35 | 36 | import hudson.FilePath; |
@@ -84,6 +85,8 @@ public class AWSCodeDeployPublisher extends Publisher implements SimpleBuildStep |
84 | 85 |
|
85 | 86 | private final String s3bucket; |
86 | 87 | private final String s3prefix; |
| 88 | + private final String githubRepository; |
| 89 | + private final String githubCommitId; |
87 | 90 | private final String applicationName; |
88 | 91 | private final String deploymentGroupName; // TODO allow for deployment to multiple groups |
89 | 92 | private final String deploymentConfig; |
@@ -113,6 +116,8 @@ public class AWSCodeDeployPublisher extends Publisher implements SimpleBuildStep |
113 | 116 | public AWSCodeDeployPublisher( |
114 | 117 | String s3bucket, |
115 | 118 | String s3prefix, |
| 119 | + String githubRepository, |
| 120 | + String githubCommitId, |
116 | 121 | String applicationName, |
117 | 122 | String deploymentGroupName, |
118 | 123 | String deploymentConfig, |
@@ -180,6 +185,9 @@ public AWSCodeDeployPublisher( |
180 | 185 | } else { |
181 | 186 | this.s3prefix = s3prefix; |
182 | 187 | } |
| 188 | + |
| 189 | + this.githubRepository = githubRepository; |
| 190 | + this.githubCommitId = githubCommitId; |
183 | 191 | } |
184 | 192 |
|
185 | 193 | @Override |
@@ -226,8 +234,15 @@ public void perform(@Nonnull Run<?,?> build, @Nonnull FilePath workspace, @Nonnu |
226 | 234 | if (workspace == null) { |
227 | 235 | throw new IllegalArgumentException("No workspace present for the build."); |
228 | 236 | } |
229 | | - final FilePath sourceDirectory = getSourceDirectory(workspace); |
230 | | - final RevisionLocation revisionLocation = zipAndUpload(aws, projectName, sourceDirectory); |
| 237 | + |
| 238 | + RevisionLocation revisionLocation; |
| 239 | + |
| 240 | + if (!StringUtils.isEmpty(this.githubRepository) && !StringUtils.isEmpty(this.githubCommitId)) { |
| 241 | + revisionLocation = createFromGitHub(); |
| 242 | + } else { |
| 243 | + final FilePath sourceDirectory = getSourceDirectory(workspace); |
| 244 | + revisionLocation = zipAndUpload(aws, projectName, sourceDirectory); |
| 245 | + } |
231 | 246 |
|
232 | 247 | registerRevision(aws, revisionLocation); |
233 | 248 | if ("onlyRevision".equals(deploymentMethod)){ |
@@ -395,6 +410,18 @@ private RevisionLocation zipAndUpload(AWSClients aws, String projectName, FilePa |
395 | 410 | } |
396 | 411 | } |
397 | 412 |
|
| 413 | + private RevisionLocation createFromGitHub() { |
| 414 | + GitHubLocation githubLocation = new GitHubLocation(); |
| 415 | + githubLocation.setRepository(this.githubRepository); |
| 416 | + githubLocation.setCommitId(this.githubCommitId); |
| 417 | + |
| 418 | + RevisionLocation revisionLocation = new RevisionLocation(); |
| 419 | + revisionLocation.setRevisionType(RevisionLocationType.GitHub); |
| 420 | + revisionLocation.setGitHubLocation(githubLocation); |
| 421 | + |
| 422 | + return revisionLocation; |
| 423 | + } |
| 424 | + |
398 | 425 | private void registerRevision(AWSClients aws, RevisionLocation revisionLocation) { |
399 | 426 |
|
400 | 427 | String applicationName = getApplicationNameFromEnv(); |
|
0 commit comments