From a0fa39cceb2897bfcdbd267ec8c8b68c37d4a255 Mon Sep 17 00:00:00 2001 From: Jigar Bhatt Date: Wed, 22 Jan 2020 12:09:22 -0800 Subject: [PATCH 1/4] feat: Add codebuild cdk examples to create Project, ReportGroup and SourceCredentials --- java/codebuild/README.md | 18 +++++ java/codebuild/cdk.json | 3 + java/codebuild/pom.xml | 59 +++++++++++++++ .../java/com/myorg/CodeBuildJavaCdkApp.java | 29 ++++++++ .../java/com/myorg/CodeBuildProjectStack.java | 71 +++++++++++++++++++ .../main/java/com/myorg/ReportGroupStack.java | 40 +++++++++++ .../java/com/myorg/SourceCredentialStack.java | 27 +++++++ .../java/com/myorg/CodeBuildJavaCdkTest.java | 27 +++++++ 8 files changed, 274 insertions(+) create mode 100644 java/codebuild/README.md create mode 100644 java/codebuild/cdk.json create mode 100644 java/codebuild/pom.xml create mode 100644 java/codebuild/src/main/java/com/myorg/CodeBuildJavaCdkApp.java create mode 100644 java/codebuild/src/main/java/com/myorg/CodeBuildProjectStack.java create mode 100644 java/codebuild/src/main/java/com/myorg/ReportGroupStack.java create mode 100644 java/codebuild/src/main/java/com/myorg/SourceCredentialStack.java create mode 100644 java/codebuild/src/test/java/com/myorg/CodeBuildJavaCdkTest.java diff --git a/java/codebuild/README.md b/java/codebuild/README.md new file mode 100644 index 0000000000..6f46c4de8c --- /dev/null +++ b/java/codebuild/README.md @@ -0,0 +1,18 @@ +# Welcome to your CDK Java project! + +This is a blank project for Java development with CDK. + +The `cdk.json` file tells the CDK Toolkit how to execute your app. + +It is a [Maven](https://maven.apache.org/) based project, so you can open this project with any Maven compatible Java IDE to build and run tests. + +## Useful commands + + * `mvn package` compile and run tests + * `cdk ls` list all stacks in the app + * `cdk synth` emits the synthesized CloudFormation template + * `cdk deploy` deploy this stack to your default AWS account/region + * `cdk diff` compare deployed stack with current state + * `cdk docs` open CDK documentation + +Enjoy! diff --git a/java/codebuild/cdk.json b/java/codebuild/cdk.json new file mode 100644 index 0000000000..8d02402c68 --- /dev/null +++ b/java/codebuild/cdk.json @@ -0,0 +1,3 @@ +{ + "app": "mvn -e -q exec:java" +} diff --git a/java/codebuild/pom.xml b/java/codebuild/pom.xml new file mode 100644 index 0000000000..82ef0e6eea --- /dev/null +++ b/java/codebuild/pom.xml @@ -0,0 +1,59 @@ + + + 4.0.0 + + com.myorg + code_build_java_cdk + 0.1 + + + UTF-8 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + + + + + org.codehaus.mojo + exec-maven-plugin + 1.6.0 + + com.myorg.CodeBuildJavaCdkApp + + + + + + + + + software.amazon.awscdk + core + 1.21.1 + + + + software.amazon.awscdk + codebuild + 1.21.1 + + + + + junit + junit + 4.12 + test + + + diff --git a/java/codebuild/src/main/java/com/myorg/CodeBuildJavaCdkApp.java b/java/codebuild/src/main/java/com/myorg/CodeBuildJavaCdkApp.java new file mode 100644 index 0000000000..4c5a8270f1 --- /dev/null +++ b/java/codebuild/src/main/java/com/myorg/CodeBuildJavaCdkApp.java @@ -0,0 +1,29 @@ +package com.myorg; + +import software.amazon.awscdk.core.*; + +public class CodeBuildJavaCdkApp { + public static void main(final String[] args) { + App app = new App(); + + new CodeBuildProjectStack(app, "CodeBuildProjectStack", StackProps.builder().env( + Environment.builder() + .account("firstStack") + .region("us-west-2") + .build()).build()); + + new ReportGroupStack(app, "ReportGroupStack", StackProps.builder().env( + Environment.builder() + .account("firstStack") + .region("us-west-2") + .build()).build()); + + new SourceCredentialStack(app, "SourceCredentialStack", StackProps.builder().env( + Environment.builder() + .account("firstStack") + .region("us-west-2") + .build()).build()); + + app.synth(); + } +} diff --git a/java/codebuild/src/main/java/com/myorg/CodeBuildProjectStack.java b/java/codebuild/src/main/java/com/myorg/CodeBuildProjectStack.java new file mode 100644 index 0000000000..432af42bf8 --- /dev/null +++ b/java/codebuild/src/main/java/com/myorg/CodeBuildProjectStack.java @@ -0,0 +1,71 @@ +package com.myorg; + +import software.amazon.awscdk.core.Construct; +import software.amazon.awscdk.core.Duration; +import software.amazon.awscdk.core.Stack; +import software.amazon.awscdk.core.StackProps; +import software.amazon.awscdk.services.codebuild.Artifacts; +import software.amazon.awscdk.services.codebuild.ArtifactsProps; +import software.amazon.awscdk.services.codebuild.BuildEnvironment; +import software.amazon.awscdk.services.codebuild.BuildEnvironmentVariable; +import software.amazon.awscdk.services.codebuild.BuildEnvironmentVariableType; +import software.amazon.awscdk.services.codebuild.ComputeType; +import software.amazon.awscdk.services.codebuild.ISource; +import software.amazon.awscdk.services.codebuild.LinuxBuildImage; +import software.amazon.awscdk.services.codebuild.Project; +import software.amazon.awscdk.services.codebuild.S3SourceProps; +import software.amazon.awscdk.services.codebuild.Source; +import software.amazon.awscdk.services.iam.IRole; +import software.amazon.awscdk.services.iam.Role; +import software.amazon.awscdk.services.s3.Bucket; + +import software.amazon.awscdk.services.s3.IBucket; + +import java.util.HashMap; +import java.util.Map; + + +public class CodeBuildProjectStack extends Stack { + + public CodeBuildProjectStack(final Construct scope, final String id) { + this(scope, id, null); + } + + public CodeBuildProjectStack(final Construct scope, final String id, final StackProps props) { + super(scope, id, props); + + BuildEnvironmentVariable buildEnvironmentVariable = new BuildEnvironmentVariable.Builder() + .type(BuildEnvironmentVariableType.PLAINTEXT) + .value("varValue") + .build(); + Map environmentVariableMap = new HashMap<>(); + environmentVariableMap.put("varName", buildEnvironmentVariable); + BuildEnvironment environment = BuildEnvironment.builder() + .buildImage(LinuxBuildImage.AMAZON_LINUX_2_2) + .computeType(ComputeType.SMALL) + .environmentVariables(environmentVariableMap).build(); + + Artifacts artifacts = new Artifacts(ArtifactsProps.builder().build()) { + @Override + public String getType() { + return "NO_ARTIFACTS"; + } + }; + + IBucket s3Bucket = Bucket.fromBucketName(this, id, "s3BucketName"); + ISource source = Source.s3(S3SourceProps.builder().bucket(s3Bucket).path("S3Path").build()); + + IRole role = Role.fromRoleArn(this, "someId", "arn:partition:service:region:account-id:resource-type:resource-id"); + + Project.Builder.create(this, "SampleProject") + .projectName("SampleProject") + .description("Sample Project using AWS CDK") + .role(role) + .artifacts(artifacts) + .environment(environment) + .source(source) + .timeout(Duration.minutes(10)) + .build(); + + } +} diff --git a/java/codebuild/src/main/java/com/myorg/ReportGroupStack.java b/java/codebuild/src/main/java/com/myorg/ReportGroupStack.java new file mode 100644 index 0000000000..67e3f276b2 --- /dev/null +++ b/java/codebuild/src/main/java/com/myorg/ReportGroupStack.java @@ -0,0 +1,40 @@ +package com.myorg; + +import software.amazon.awscdk.core.Construct; +import software.amazon.awscdk.core.Stack; +import software.amazon.awscdk.core.StackProps; +import software.amazon.awscdk.services.codebuild.CfnReportGroup; +import software.amazon.awscdk.services.codebuild.CfnReportGroupProps; + +public class ReportGroupStack extends Stack { + + public ReportGroupStack(final Construct scope, final String id) { + this(scope, id, null); + } + + public ReportGroupStack(final Construct scope, final String id, final StackProps props) { + super(scope, id, props); + + CfnReportGroup.S3ReportExportConfigProperty s3ReportExportConfigProperty + = CfnReportGroup.S3ReportExportConfigProperty.builder() + .bucket("S3BucketName") + .path("S3Path") + .encryptionDisabled(true) + .packaging("ZIP") + .build(); + + CfnReportGroup.ReportExportConfigProperty exportConfigProperty + = CfnReportGroup.ReportExportConfigProperty.builder() + .exportConfigType("S3") + .s3Destination(s3ReportExportConfigProperty) + .build(); + + CfnReportGroupProps reportGroupProps = CfnReportGroupProps.builder() + .exportConfig(exportConfigProperty) + .name("ReportGroupName") + .type("TEST") + .build(); + + new CfnReportGroup(this, id, reportGroupProps); + } +} diff --git a/java/codebuild/src/main/java/com/myorg/SourceCredentialStack.java b/java/codebuild/src/main/java/com/myorg/SourceCredentialStack.java new file mode 100644 index 0000000000..09644584f3 --- /dev/null +++ b/java/codebuild/src/main/java/com/myorg/SourceCredentialStack.java @@ -0,0 +1,27 @@ +package com.myorg; + +import software.amazon.awscdk.core.Construct; +import software.amazon.awscdk.core.Stack; +import software.amazon.awscdk.core.StackProps; +import software.amazon.awscdk.services.codebuild.CfnSourceCredential; +import software.amazon.awscdk.services.codebuild.CfnSourceCredentialProps; + +public class SourceCredentialStack extends Stack { + + public SourceCredentialStack(final Construct scope, final String id) { + this(scope, id, null); + } + + public SourceCredentialStack(final Construct scope, final String id, final StackProps props) { + super(scope, id, props); + + CfnSourceCredentialProps sourceCredentialProps = CfnSourceCredentialProps.builder() + .authType("BASIC_AUTH") + .serverType("BITBUCKET") + .token("app_password") + .username("app_username") + .build(); + + new CfnSourceCredential(this, id, sourceCredentialProps); + } +} diff --git a/java/codebuild/src/test/java/com/myorg/CodeBuildJavaCdkTest.java b/java/codebuild/src/test/java/com/myorg/CodeBuildJavaCdkTest.java new file mode 100644 index 0000000000..3c861f6550 --- /dev/null +++ b/java/codebuild/src/test/java/com/myorg/CodeBuildJavaCdkTest.java @@ -0,0 +1,27 @@ +package com.myorg; + +import software.amazon.awscdk.core.App; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import org.junit.Test; + +import java.io.IOException; + +import static org.junit.Assert.assertEquals; + +public class CodeBuildJavaCdkTest { + private final static ObjectMapper JSON = + new ObjectMapper().configure(SerializationFeature.INDENT_OUTPUT, true); + + @Test + public void testStack() throws IOException { + App app = new App(); + CodeBuildProjectStack stack = new CodeBuildProjectStack(app, "test"); + + // synthesize the stack to a CloudFormation template and compare against + // a checked-in JSON file. + JsonNode actual = JSON.valueToTree(app.synth().getStackArtifact(stack.getArtifactId()).getTemplate()); + assertEquals(new ObjectMapper().createObjectNode(), actual); + } +} From 1823ae203eb90bdb8c2cc22e66d98ed49d2ba217 Mon Sep 17 00:00:00 2001 From: Jigar Bhatt Date: Wed, 22 Jan 2020 12:29:24 -0800 Subject: [PATCH 2/4] fix: Remove the test class as it does not have test cases. --- .../java/com/myorg/CodeBuildJavaCdkTest.java | 27 ------------------- 1 file changed, 27 deletions(-) delete mode 100644 java/codebuild/src/test/java/com/myorg/CodeBuildJavaCdkTest.java diff --git a/java/codebuild/src/test/java/com/myorg/CodeBuildJavaCdkTest.java b/java/codebuild/src/test/java/com/myorg/CodeBuildJavaCdkTest.java deleted file mode 100644 index 3c861f6550..0000000000 --- a/java/codebuild/src/test/java/com/myorg/CodeBuildJavaCdkTest.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.myorg; - -import software.amazon.awscdk.core.App; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import org.junit.Test; - -import java.io.IOException; - -import static org.junit.Assert.assertEquals; - -public class CodeBuildJavaCdkTest { - private final static ObjectMapper JSON = - new ObjectMapper().configure(SerializationFeature.INDENT_OUTPUT, true); - - @Test - public void testStack() throws IOException { - App app = new App(); - CodeBuildProjectStack stack = new CodeBuildProjectStack(app, "test"); - - // synthesize the stack to a CloudFormation template and compare against - // a checked-in JSON file. - JsonNode actual = JSON.valueToTree(app.synth().getStackArtifact(stack.getArtifactId()).getTemplate()); - assertEquals(new ObjectMapper().createObjectNode(), actual); - } -} From 03fdc40632b3bf6cb70ba6a47437d08f114b1a4d Mon Sep 17 00:00:00 2001 From: Jigar Bhatt Date: Wed, 29 Jan 2020 11:16:11 -0800 Subject: [PATCH 3/4] Updated the cdk app by creating 3 independent app. Resolve review comments --- java/codebuild/{ => project}/README.md | 6 +- java/codebuild/{ => project}/cdk.json | 0 java/codebuild/project/pom.xml | 59 +++++++++++++++++++ .../src/main/java/com/myorg/ProjectApp.java | 21 +++++++ .../main/java/com/myorg/ProjectStack.java} | 7 +-- java/codebuild/reportgroup/README.md | 18 ++++++ java/codebuild/reportgroup/cdk.json | 3 + java/codebuild/reportgroup/pom.xml | 59 +++++++++++++++++++ .../main/java/com/myorg/ReportgroupApp.java | 21 +++++++ .../java/com/myorg/ReportgroupStack.java} | 23 ++++---- java/codebuild/sourceCredential/README.md | 18 ++++++ java/codebuild/sourceCredential/cdk.json | 3 + java/codebuild/{ => sourceCredential}/pom.xml | 8 +-- .../java/com/myorg/SourceCredentialApp.java | 21 +++++++ .../java/com/myorg/SourceCredentialStack.java | 1 - .../java/com/myorg/CodeBuildJavaCdkApp.java | 29 --------- 16 files changed, 244 insertions(+), 53 deletions(-) rename java/codebuild/{ => project}/README.md (52%) rename java/codebuild/{ => project}/cdk.json (100%) create mode 100644 java/codebuild/project/pom.xml create mode 100644 java/codebuild/project/src/main/java/com/myorg/ProjectApp.java rename java/codebuild/{src/main/java/com/myorg/CodeBuildProjectStack.java => project/src/main/java/com/myorg/ProjectStack.java} (92%) create mode 100644 java/codebuild/reportgroup/README.md create mode 100644 java/codebuild/reportgroup/cdk.json create mode 100644 java/codebuild/reportgroup/pom.xml create mode 100644 java/codebuild/reportgroup/src/main/java/com/myorg/ReportgroupApp.java rename java/codebuild/{src/main/java/com/myorg/ReportGroupStack.java => reportgroup/src/main/java/com/myorg/ReportgroupStack.java} (65%) create mode 100644 java/codebuild/sourceCredential/README.md create mode 100644 java/codebuild/sourceCredential/cdk.json rename java/codebuild/{ => sourceCredential}/pom.xml (90%) create mode 100644 java/codebuild/sourceCredential/src/main/java/com/myorg/SourceCredentialApp.java rename java/codebuild/{ => sourceCredential}/src/main/java/com/myorg/SourceCredentialStack.java (99%) delete mode 100644 java/codebuild/src/main/java/com/myorg/CodeBuildJavaCdkApp.java diff --git a/java/codebuild/README.md b/java/codebuild/project/README.md similarity index 52% rename from java/codebuild/README.md rename to java/codebuild/project/README.md index 6f46c4de8c..f00445066c 100644 --- a/java/codebuild/README.md +++ b/java/codebuild/project/README.md @@ -1,10 +1,10 @@ # Welcome to your CDK Java project! -This is a blank project for Java development with CDK. +It is a Maven-based project, so you can open this directory with any Maven-compatible Java IDE, and you should be able to build and run tests from your IDE. -The `cdk.json` file tells the CDK Toolkit how to execute your app. +You should explore the contents of this template. It demonstrates a CDK app to create a codebuild Project. -It is a [Maven](https://maven.apache.org/) based project, so you can open this project with any Maven compatible Java IDE to build and run tests. +The cdk.json file tells the CDK Toolkit how to execute your app. This example relies on maven to do that. ## Useful commands diff --git a/java/codebuild/cdk.json b/java/codebuild/project/cdk.json similarity index 100% rename from java/codebuild/cdk.json rename to java/codebuild/project/cdk.json diff --git a/java/codebuild/project/pom.xml b/java/codebuild/project/pom.xml new file mode 100644 index 0000000000..142779cd96 --- /dev/null +++ b/java/codebuild/project/pom.xml @@ -0,0 +1,59 @@ + + + 4.0.0 + + com.myorg + project + 0.1 + + + UTF-8 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + + + + + org.codehaus.mojo + exec-maven-plugin + 1.6.0 + + com.myorg.ProjectApp + + + + + + + + + software.amazon.awscdk + core + [1.21.0, 2) + + + + software.amazon.awscdk + codebuild + [1.21.0, 2) + + + + + junit + junit + 4.12 + test + + + diff --git a/java/codebuild/project/src/main/java/com/myorg/ProjectApp.java b/java/codebuild/project/src/main/java/com/myorg/ProjectApp.java new file mode 100644 index 0000000000..ab657cb5fc --- /dev/null +++ b/java/codebuild/project/src/main/java/com/myorg/ProjectApp.java @@ -0,0 +1,21 @@ +package com.myorg; + +import software.amazon.awscdk.core.App; +import software.amazon.awscdk.core.Environment; +import software.amazon.awscdk.core.StackProps; + +import java.util.Arrays; + +public class ProjectApp { + public static void main(final String[] args) { + App app = new App(); + + new ProjectStack(app, "ProjectStack", StackProps.builder().env( + Environment.builder() + .account("projectStack") + .region("us-west-2") + .build()).build()); + + app.synth(); + } +} diff --git a/java/codebuild/src/main/java/com/myorg/CodeBuildProjectStack.java b/java/codebuild/project/src/main/java/com/myorg/ProjectStack.java similarity index 92% rename from java/codebuild/src/main/java/com/myorg/CodeBuildProjectStack.java rename to java/codebuild/project/src/main/java/com/myorg/ProjectStack.java index 432af42bf8..2a43955425 100644 --- a/java/codebuild/src/main/java/com/myorg/CodeBuildProjectStack.java +++ b/java/codebuild/project/src/main/java/com/myorg/ProjectStack.java @@ -24,14 +24,13 @@ import java.util.HashMap; import java.util.Map; +public class ProjectStack extends Stack { -public class CodeBuildProjectStack extends Stack { - - public CodeBuildProjectStack(final Construct scope, final String id) { + public ProjectStack(final Construct scope, final String id) { this(scope, id, null); } - public CodeBuildProjectStack(final Construct scope, final String id, final StackProps props) { + public ProjectStack(final Construct scope, final String id, final StackProps props) { super(scope, id, props); BuildEnvironmentVariable buildEnvironmentVariable = new BuildEnvironmentVariable.Builder() diff --git a/java/codebuild/reportgroup/README.md b/java/codebuild/reportgroup/README.md new file mode 100644 index 0000000000..bf361c04ad --- /dev/null +++ b/java/codebuild/reportgroup/README.md @@ -0,0 +1,18 @@ +# Welcome to your CDK Java project! + +It is a Maven-based project, so you can open this directory with any Maven-compatible Java IDE, and you should be able to build and run tests from your IDE. + +You should explore the contents of this template. It demonstrates a CDK app to create a codebuild ReportGroup cloud formation resource. + +The cdk.json file tells the CDK Toolkit how to execute your app. This example relies on maven to do that. + +## Useful commands + + * `mvn package` compile and run tests + * `cdk ls` list all stacks in the app + * `cdk synth` emits the synthesized CloudFormation template + * `cdk deploy` deploy this stack to your default AWS account/region + * `cdk diff` compare deployed stack with current state + * `cdk docs` open CDK documentation + +Enjoy! diff --git a/java/codebuild/reportgroup/cdk.json b/java/codebuild/reportgroup/cdk.json new file mode 100644 index 0000000000..8d02402c68 --- /dev/null +++ b/java/codebuild/reportgroup/cdk.json @@ -0,0 +1,3 @@ +{ + "app": "mvn -e -q exec:java" +} diff --git a/java/codebuild/reportgroup/pom.xml b/java/codebuild/reportgroup/pom.xml new file mode 100644 index 0000000000..bb27a9281e --- /dev/null +++ b/java/codebuild/reportgroup/pom.xml @@ -0,0 +1,59 @@ + + + 4.0.0 + + com.myorg + reportgroup + 0.1 + + + UTF-8 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + + + + + org.codehaus.mojo + exec-maven-plugin + 1.6.0 + + com.myorg.ReportgroupApp + + + + + + + + + software.amazon.awscdk + core + [1.21.0, 2) + + + + software.amazon.awscdk + codebuild + [1.21.0, 2) + + + + + junit + junit + 4.12 + test + + + diff --git a/java/codebuild/reportgroup/src/main/java/com/myorg/ReportgroupApp.java b/java/codebuild/reportgroup/src/main/java/com/myorg/ReportgroupApp.java new file mode 100644 index 0000000000..669a1c1792 --- /dev/null +++ b/java/codebuild/reportgroup/src/main/java/com/myorg/ReportgroupApp.java @@ -0,0 +1,21 @@ +package com.myorg; + +import software.amazon.awscdk.core.App; +import software.amazon.awscdk.core.Environment; +import software.amazon.awscdk.core.StackProps; + +import java.util.Arrays; + +public class ReportgroupApp { + public static void main(final String[] args) { + App app = new App(); + + new ReportgroupStack(app, "ReportgroupStack", StackProps.builder().env( + Environment.builder() + .account("ReportgroupStack") + .region("us-west-2") + .build()).build()); + + app.synth(); + } +} diff --git a/java/codebuild/src/main/java/com/myorg/ReportGroupStack.java b/java/codebuild/reportgroup/src/main/java/com/myorg/ReportgroupStack.java similarity index 65% rename from java/codebuild/src/main/java/com/myorg/ReportGroupStack.java rename to java/codebuild/reportgroup/src/main/java/com/myorg/ReportgroupStack.java index 67e3f276b2..4f012191c7 100644 --- a/java/codebuild/src/main/java/com/myorg/ReportGroupStack.java +++ b/java/codebuild/reportgroup/src/main/java/com/myorg/ReportgroupStack.java @@ -6,28 +6,27 @@ import software.amazon.awscdk.services.codebuild.CfnReportGroup; import software.amazon.awscdk.services.codebuild.CfnReportGroupProps; -public class ReportGroupStack extends Stack { - - public ReportGroupStack(final Construct scope, final String id) { +public class ReportgroupStack extends Stack { + public ReportgroupStack(final Construct scope, final String id) { this(scope, id, null); } - public ReportGroupStack(final Construct scope, final String id, final StackProps props) { + public ReportgroupStack(final Construct scope, final String id, final StackProps props) { super(scope, id, props); CfnReportGroup.S3ReportExportConfigProperty s3ReportExportConfigProperty = CfnReportGroup.S3ReportExportConfigProperty.builder() - .bucket("S3BucketName") - .path("S3Path") - .encryptionDisabled(true) - .packaging("ZIP") - .build(); + .bucket("S3BucketName") + .path("S3Path") + .encryptionDisabled(true) + .packaging("ZIP") + .build(); CfnReportGroup.ReportExportConfigProperty exportConfigProperty = CfnReportGroup.ReportExportConfigProperty.builder() - .exportConfigType("S3") - .s3Destination(s3ReportExportConfigProperty) - .build(); + .exportConfigType("S3") + .s3Destination(s3ReportExportConfigProperty) + .build(); CfnReportGroupProps reportGroupProps = CfnReportGroupProps.builder() .exportConfig(exportConfigProperty) diff --git a/java/codebuild/sourceCredential/README.md b/java/codebuild/sourceCredential/README.md new file mode 100644 index 0000000000..2135393334 --- /dev/null +++ b/java/codebuild/sourceCredential/README.md @@ -0,0 +1,18 @@ +# Welcome to your CDK Java project! + +It is a Maven-based project, so you can open this directory with any Maven-compatible Java IDE, and you should be able to build and run tests from your IDE. + +You should explore the contents of this template. It demonstrates a CDK app to create a codebuild source credential cloud formation resource. + +The cdk.json file tells the CDK Toolkit how to execute your app. This example relies on maven to do that. + +## Useful commands + + * `mvn package` compile and run tests + * `cdk ls` list all stacks in the app + * `cdk synth` emits the synthesized CloudFormation template + * `cdk deploy` deploy this stack to your default AWS account/region + * `cdk diff` compare deployed stack with current state + * `cdk docs` open CDK documentation + +Enjoy! diff --git a/java/codebuild/sourceCredential/cdk.json b/java/codebuild/sourceCredential/cdk.json new file mode 100644 index 0000000000..8d02402c68 --- /dev/null +++ b/java/codebuild/sourceCredential/cdk.json @@ -0,0 +1,3 @@ +{ + "app": "mvn -e -q exec:java" +} diff --git a/java/codebuild/pom.xml b/java/codebuild/sourceCredential/pom.xml similarity index 90% rename from java/codebuild/pom.xml rename to java/codebuild/sourceCredential/pom.xml index 82ef0e6eea..ac46b4ee54 100644 --- a/java/codebuild/pom.xml +++ b/java/codebuild/sourceCredential/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.myorg - code_build_java_cdk + source_credential 0.1 @@ -28,7 +28,7 @@ exec-maven-plugin 1.6.0 - com.myorg.CodeBuildJavaCdkApp + com.myorg.SourceCredentialApp @@ -39,13 +39,13 @@ software.amazon.awscdk core - 1.21.1 + [1.21.0, 2) software.amazon.awscdk codebuild - 1.21.1 + [1.21.0, 2) diff --git a/java/codebuild/sourceCredential/src/main/java/com/myorg/SourceCredentialApp.java b/java/codebuild/sourceCredential/src/main/java/com/myorg/SourceCredentialApp.java new file mode 100644 index 0000000000..3f478b2a35 --- /dev/null +++ b/java/codebuild/sourceCredential/src/main/java/com/myorg/SourceCredentialApp.java @@ -0,0 +1,21 @@ +package com.myorg; + +import software.amazon.awscdk.core.App; +import software.amazon.awscdk.core.Environment; +import software.amazon.awscdk.core.StackProps; + +import java.util.Arrays; + +public class SourceCredentialApp { + public static void main(final String[] args) { + App app = new App(); + + new SourceCredentialStack(app, "SourceCredentialStack", StackProps.builder().env( + Environment.builder() + .account("SourceCredentialStack") + .region("us-west-2") + .build()).build()); + + app.synth(); + } +} diff --git a/java/codebuild/src/main/java/com/myorg/SourceCredentialStack.java b/java/codebuild/sourceCredential/src/main/java/com/myorg/SourceCredentialStack.java similarity index 99% rename from java/codebuild/src/main/java/com/myorg/SourceCredentialStack.java rename to java/codebuild/sourceCredential/src/main/java/com/myorg/SourceCredentialStack.java index 09644584f3..b09670eb8f 100644 --- a/java/codebuild/src/main/java/com/myorg/SourceCredentialStack.java +++ b/java/codebuild/sourceCredential/src/main/java/com/myorg/SourceCredentialStack.java @@ -7,7 +7,6 @@ import software.amazon.awscdk.services.codebuild.CfnSourceCredentialProps; public class SourceCredentialStack extends Stack { - public SourceCredentialStack(final Construct scope, final String id) { this(scope, id, null); } diff --git a/java/codebuild/src/main/java/com/myorg/CodeBuildJavaCdkApp.java b/java/codebuild/src/main/java/com/myorg/CodeBuildJavaCdkApp.java deleted file mode 100644 index 4c5a8270f1..0000000000 --- a/java/codebuild/src/main/java/com/myorg/CodeBuildJavaCdkApp.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.myorg; - -import software.amazon.awscdk.core.*; - -public class CodeBuildJavaCdkApp { - public static void main(final String[] args) { - App app = new App(); - - new CodeBuildProjectStack(app, "CodeBuildProjectStack", StackProps.builder().env( - Environment.builder() - .account("firstStack") - .region("us-west-2") - .build()).build()); - - new ReportGroupStack(app, "ReportGroupStack", StackProps.builder().env( - Environment.builder() - .account("firstStack") - .region("us-west-2") - .build()).build()); - - new SourceCredentialStack(app, "SourceCredentialStack", StackProps.builder().env( - Environment.builder() - .account("firstStack") - .region("us-west-2") - .build()).build()); - - app.synth(); - } -} From ad48bce27e70502ceb5d383ef1df8dbea8d2fde2 Mon Sep 17 00:00:00 2001 From: Jigar Bhatt Date: Wed, 29 Jan 2020 17:17:29 -0800 Subject: [PATCH 4/4] Update the README for all the apps --- java/codebuild/project/README.md | 4 +++- java/codebuild/reportgroup/README.md | 3 +++ java/codebuild/sourceCredential/README.md | 3 +++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/java/codebuild/project/README.md b/java/codebuild/project/README.md index f00445066c..e217444390 100644 --- a/java/codebuild/project/README.md +++ b/java/codebuild/project/README.md @@ -2,7 +2,9 @@ It is a Maven-based project, so you can open this directory with any Maven-compatible Java IDE, and you should be able to build and run tests from your IDE. -You should explore the contents of this template. It demonstrates a CDK app to create a codebuild Project. +You should explore the contents of this template. It demonstrates a CDK app to create a codebuild Project. +A codebuild project includes information about how to run a build, including where to get the source code, which build environment to use, which build commands to run, and where to store the build output. In short, build project provides information to Code Build about how to build, as project contains all the information. +To get more details on the properties and methods of a Project object, do look at https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-codebuild.Project.html The cdk.json file tells the CDK Toolkit how to execute your app. This example relies on maven to do that. diff --git a/java/codebuild/reportgroup/README.md b/java/codebuild/reportgroup/README.md index bf361c04ad..6f4c2d8f6b 100644 --- a/java/codebuild/reportgroup/README.md +++ b/java/codebuild/reportgroup/README.md @@ -3,6 +3,9 @@ It is a Maven-based project, so you can open this directory with any Maven-compatible Java IDE, and you should be able to build and run tests from your IDE. You should explore the contents of this template. It demonstrates a CDK app to create a codebuild ReportGroup cloud formation resource. +A report group contains test reports and specifies shared settings. For each report group configured in a build project, a run of the build project creates a test report. Multiple runs of a build project configured with a report group create multiple test reports in that report group, each with results of the same test cases specified for that report group. +The test cases are specified for a report group in the buildspec file of a build project. You can specify up to 5 report groups in one build project. +To get more details on the properties and methods of a refor group, do look at https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-codebuild.CfnReportGroup.html The cdk.json file tells the CDK Toolkit how to execute your app. This example relies on maven to do that. diff --git a/java/codebuild/sourceCredential/README.md b/java/codebuild/sourceCredential/README.md index 2135393334..ec0a3b3a26 100644 --- a/java/codebuild/sourceCredential/README.md +++ b/java/codebuild/sourceCredential/README.md @@ -3,6 +3,9 @@ It is a Maven-based project, so you can open this directory with any Maven-compatible Java IDE, and you should be able to build and run tests from your IDE. You should explore the contents of this template. It demonstrates a CDK app to create a codebuild source credential cloud formation resource. +Source Credentials includes information about the credentials for a GitHub, GitHub Enterprise, or Bitbucket repository. For Bitbucket, you use app password. FOr Github and Github enterprise, you use personal_access_token. This example is shows the Bitbucket credentials. +We strongly recommend that you use AWS Secrets Manager to store your credentials or the NoEcho parameter to mask your credentials. +To get more details on the properties and methods of a source credential, do look at https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-codebuild.CfnSourceCredential.html The cdk.json file tells the CDK Toolkit how to execute your app. This example relies on maven to do that.