2023-08-23 13:10:17 -04:00
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
2024-10-16 11:53:18 -04:00
import { fileURLToPath } from "node:url" ;
2023-08-23 13:10:17 -04:00
// snippet-start:[javascript.v3.codebuild.actions.CreateProject]
import {
ArtifactsType ,
CodeBuildClient ,
ComputeType ,
CreateProjectCommand ,
EnvironmentType ,
SourceType ,
} from "@aws-sdk/client-codebuild" ;
// Create the AWS CodeBuild project.
export const createProject = async (
projectName = "MyCodeBuilder" ,
roleArn = "arn:aws:iam::xxxxxxxxxxxx:role/CodeBuildAdmin" ,
buildOutputBucket = "xxxx" ,
2023-10-02 12:43:28 -04:00
githubUrl = "https://..." ,
2023-08-23 13:10:17 -04:00
) => {
const codeBuildClient = new CodeBuildClient ( { } ) ;
const response = await codeBuildClient . send (
new CreateProjectCommand ( {
artifacts : {
// The destination of the build artifacts.
type : ArtifactsType . S3 ,
location : buildOutputBucket ,
} ,
// Information about the build environment. The combination of "computeType" and "type" determines the
// requirements for the environment such as CPU, memory, and disk space.
environment : {
// Build environment compute types.
// https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-compute-types.html
computeType : ComputeType . BUILD _GENERAL1 _SMALL ,
// Docker image identifier.
// See https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-available.html
image : "aws/codebuild/standard:7.0" ,
// Build environment type.
type : EnvironmentType . LINUX _CONTAINER ,
} ,
name : projectName ,
// A role ARN with permission to create a CodeBuild project, write to the artifact location, and write CloudWatch logs.
serviceRole : roleArn ,
source : {
// The type of repository that contains the source code to be built.
type : SourceType . GITHUB ,
// The location of the repository that contains the source code to be built.
location : githubUrl ,
} ,
2023-10-02 12:43:28 -04:00
} ) ,
2023-08-23 13:10:17 -04:00
) ;
console . log ( response ) ;
// {
// '$metadata': {
// httpStatusCode: 200,
// requestId: 'b428b244-777b-49a6-a48d-5dffedced8e7',
// extendedRequestId: undefined,
// cfId: undefined,
// attempts: 1,
// totalRetryDelay: 0
// },
// project: {
// arn: 'arn:aws:codebuild:us-east-1:xxxxxxxxxxxx:project/MyCodeBuilder',
// artifacts: {
// encryptionDisabled: false,
// location: 'xxxxxx-xxxxxxx-xxxxxx',
// name: 'MyCodeBuilder',
// namespaceType: 'NONE',
// packaging: 'NONE',
// type: 'S3'
// },
// badge: { badgeEnabled: false },
// cache: { type: 'NO_CACHE' },
// created: 2023-08-18T14:46:48.979Z,
// encryptionKey: 'arn:aws:kms:us-east-1:xxxxxxxxxxxx:alias/aws/s3',
// environment: {
// computeType: 'BUILD_GENERAL1_SMALL',
// environmentVariables: [],
// image: 'aws/codebuild/standard:7.0',
// imagePullCredentialsType: 'CODEBUILD',
// privilegedMode: false,
// type: 'LINUX_CONTAINER'
// },
// lastModified: 2023-08-18T14:46:48.979Z,
// name: 'MyCodeBuilder',
// projectVisibility: 'PRIVATE',
// queuedTimeoutInMinutes: 480,
// serviceRole: 'arn:aws:iam::xxxxxxxxxxxx:role/CodeBuildAdmin',
// source: {
// insecureSsl: false,
// location: 'https://...',
// reportBuildStatus: false,
// type: 'GITHUB'
// },
// timeoutInMinutes: 60
// }
// }
return response ;
} ;
// snippet-end:[javascript.v3.codebuild.actions.CreateProject]
// Invoke main function if this file was run directly.
if ( process . argv [ 1 ] === fileURLToPath ( import . meta . url ) ) {
createProject ( ) ;
}