Skip to content

Add Github deploy #24

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 9 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
<dependency>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.11.119</version>
<version>1.11.248</version>
</dependency>
</dependencies>

Expand Down
39 changes: 37 additions & 2 deletions src/main/java/com/amazonaws/codedeploy/AWSCodeDeployPublisher.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -183,6 +188,9 @@ public AWSCodeDeployPublisher(
} else {
this.s3prefix = s3prefix;
}

this.githubRepository = githubRepository;
this.githubCommitId = githubCommitId;
}

@Override
Expand Down Expand Up @@ -229,8 +237,15 @@ 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);

RevisionLocation revisionLocation;

if (!StringUtils.isEmpty(this.githubRepository) && !StringUtils.isEmpty(this.githubCommitId)) {
revisionLocation = createFromGitHub();
} else {
final FilePath sourceDirectory = getSourceDirectory(workspace, envVars);
revisionLocation = zipAndUpload(aws, projectName, sourceDirectory, logger, envVars);
}

registerRevision(aws, revisionLocation, logger, envVars);
if ("onlyRevision".equals(deploymentMethod)){
Expand Down Expand Up @@ -398,6 +413,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<String, String> envVars) {

String applicationName = getApplicationNameFromEnv(envVars);
Expand Down Expand Up @@ -661,6 +688,14 @@ public String getS3prefix() {
return s3prefix;
}

public String getGithubRepository() {
return githubRepository;
}

public String getGithubCommitId() {
return githubCommitId;
}

public Long getPollingTimeoutSec() {
return pollingTimeoutSec;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,12 @@
<f:entry title="S3 Prefix" field="s3prefix">
<f:textbox default="" />
</f:entry>
<f:entry title="GitHub Repository" field="githubRespository">
<f:textbox default="" />
</f:entry>
<f:entry title="GitHub Commit Id" field="githubCommitId">
<f:textbox default="" />
</f:entry>
<f:entry title="Subdirectory" field="subdirectory">
<f:textbox default="" />
</f:entry>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<div>
The GitHub commit id hash of the revision to be pushed to CodeDeploy. This is to be used in Pipeline mode.
</div>
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<div>
The GitHub repository used to pull the revision from. This is to be used in Pipeline mode.
</div>
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ public void testRoundTripConfiguration() throws Exception {
final AWSCodeDeployPublisher publisher = new AWSCodeDeployPublisher(
"testBucket",
"testPrefix",
"",
"",
"testApplicationName",
"testDeploymentGroupName",
"testDeploymentConfig",
Expand Down