import * as core from "@terrascript/core"; export interface SecondaryArtifactsArgs extends core.SchemaArgs { artifactIdentifier: string | core.StringOut; bucketOwnerAccess?: string | core.StringOut; encryptionDisabled?: boolean | core.BooleanOut; location?: string | core.StringOut; name?: string | core.StringOut; namespaceType?: string | core.StringOut; overrideArtifactName?: boolean | core.BooleanOut; packaging?: string | core.StringOut; path?: string | core.StringOut; type: string | core.StringOut; } export class SecondaryArtifacts extends core.Schema { @core.attr(String) public artifactIdentifier!: string | core.StringOut; @core.attr(String) public bucketOwnerAccess?: string | core.StringOut; @core.attr(Boolean) public encryptionDisabled?: boolean | core.BooleanOut; @core.attr(String) public location?: string | core.StringOut; @core.attr(String) public name?: string | core.StringOut; @core.attr(String) public namespaceType?: string | core.StringOut; @core.attr(Boolean) public overrideArtifactName?: boolean | core.BooleanOut; @core.attr(String) public packaging?: string | core.StringOut; @core.attr(String) public path?: string | core.StringOut; @core.attr(String) public type!: string | core.StringOut; } export interface CloudwatchLogsArgs extends core.SchemaArgs { groupName?: string | core.StringOut; status?: string | core.StringOut; streamName?: string | core.StringOut; } export class CloudwatchLogs extends core.Schema { @core.attr(String) public groupName?: string | core.StringOut; @core.attr(String) public status?: string | core.StringOut; @core.attr(String) public streamName?: string | core.StringOut; } export interface S3LogsArgs extends core.SchemaArgs { bucketOwnerAccess?: string | core.StringOut; encryptionDisabled?: boolean | core.BooleanOut; location?: string | core.StringOut; status?: string | core.StringOut; } export class S3Logs extends core.Schema { @core.attr(String) public bucketOwnerAccess?: string | core.StringOut; @core.attr(Boolean) public encryptionDisabled?: boolean | core.BooleanOut; @core.attr(String) public location?: string | core.StringOut; @core.attr(String) public status?: string | core.StringOut; } export interface LogsConfigArgs extends core.SchemaArgs { cloudwatchLogs?: CloudwatchLogs; s3Logs?: S3Logs; } export class LogsConfig extends core.Schema { @core.attr(CloudwatchLogs) public cloudwatchLogs?: CloudwatchLogs; @core.attr(S3Logs) public s3Logs?: S3Logs; } export interface GitSubmodulesConfigArgs extends core.SchemaArgs { fetchSubmodules: boolean | core.BooleanOut; } export class GitSubmodulesConfig extends core.Schema { @core.attr(Boolean) public fetchSubmodules!: boolean | core.BooleanOut; } export interface BuildStatusConfigArgs extends core.SchemaArgs { context?: string | core.StringOut; targetUrl?: string | core.StringOut; } export class BuildStatusConfig extends core.Schema { @core.attr(String) public context?: string | core.StringOut; @core.attr(String) public targetUrl?: string | core.StringOut; } export interface AuthArgs extends core.SchemaArgs { resource?: string | core.StringOut; type: string | core.StringOut; } export class Auth extends core.Schema { @core.attr(String) public resource?: string | core.StringOut; @core.attr(String) public type!: string | core.StringOut; } export interface SourceArgs extends core.SchemaArgs { auth?: Auth; buildStatusConfig?: BuildStatusConfig; buildspec?: string | core.StringOut; gitCloneDepth?: number | core.NumberOut; gitSubmodulesConfig?: GitSubmodulesConfig; insecureSsl?: boolean | core.BooleanOut; location?: string | core.StringOut; reportBuildStatus?: boolean | core.BooleanOut; type: string | core.StringOut; } export class Source extends core.Schema { @core.attr(Auth) public auth?: Auth; @core.attr(BuildStatusConfig) public buildStatusConfig?: BuildStatusConfig; @core.attr(String) public buildspec?: string | core.StringOut; @core.attr(Number) public gitCloneDepth?: number | core.NumberOut; @core.attr(GitSubmodulesConfig) public gitSubmodulesConfig?: GitSubmodulesConfig; @core.attr(Boolean) public insecureSsl?: boolean | core.BooleanOut; @core.attr(String) public location?: string | core.StringOut; @core.attr(Boolean) public reportBuildStatus?: boolean | core.BooleanOut; @core.attr(String) public type!: string | core.StringOut; } export interface RestrictionsArgs extends core.SchemaArgs { computeTypesAllowed?: core.Array | core.ArrayOut; maximumBuildsAllowed?: number | core.NumberOut; } export class Restrictions extends core.Schema { @core.attr(String, { kind: "array" }) public computeTypesAllowed?: | core.Array | core.ArrayOut; @core.attr(Number) public maximumBuildsAllowed?: number | core.NumberOut; } export interface BuildBatchConfigArgs extends core.SchemaArgs { combineArtifacts?: boolean | core.BooleanOut; restrictions?: Restrictions; serviceRole: string | core.StringOut; timeoutInMins?: number | core.NumberOut; } export class BuildBatchConfig extends core.Schema { @core.attr(Boolean) public combineArtifacts?: boolean | core.BooleanOut; @core.attr(Restrictions) public restrictions?: Restrictions; @core.attr(String) public serviceRole!: string | core.StringOut; @core.attr(Number) public timeoutInMins?: number | core.NumberOut; } export interface ArtifactsArgs extends core.SchemaArgs { artifactIdentifier?: string | core.StringOut; bucketOwnerAccess?: string | core.StringOut; encryptionDisabled?: boolean | core.BooleanOut; location?: string | core.StringOut; name?: string | core.StringOut; namespaceType?: string | core.StringOut; overrideArtifactName?: boolean | core.BooleanOut; packaging?: string | core.StringOut; path?: string | core.StringOut; type: string | core.StringOut; } export class Artifacts extends core.Schema { @core.attr(String) public artifactIdentifier?: string | core.StringOut; @core.attr(String) public bucketOwnerAccess?: string | core.StringOut; @core.attr(Boolean) public encryptionDisabled?: boolean | core.BooleanOut; @core.attr(String) public location?: string | core.StringOut; @core.attr(String) public name?: string | core.StringOut; @core.attr(String) public namespaceType?: string | core.StringOut; @core.attr(Boolean) public overrideArtifactName?: boolean | core.BooleanOut; @core.attr(String) public packaging?: string | core.StringOut; @core.attr(String) public path?: string | core.StringOut; @core.attr(String) public type!: string | core.StringOut; } export interface SecondarySourcesArgs extends core.SchemaArgs { auth?: Auth; buildStatusConfig?: BuildStatusConfig; buildspec?: string | core.StringOut; gitCloneDepth?: number | core.NumberOut; gitSubmodulesConfig?: GitSubmodulesConfig; insecureSsl?: boolean | core.BooleanOut; location?: string | core.StringOut; reportBuildStatus?: boolean | core.BooleanOut; sourceIdentifier: string | core.StringOut; type: string | core.StringOut; } export class SecondarySources extends core.Schema { @core.attr(Auth) public auth?: Auth; @core.attr(BuildStatusConfig) public buildStatusConfig?: BuildStatusConfig; @core.attr(String) public buildspec?: string | core.StringOut; @core.attr(Number) public gitCloneDepth?: number | core.NumberOut; @core.attr(GitSubmodulesConfig) public gitSubmodulesConfig?: GitSubmodulesConfig; @core.attr(Boolean) public insecureSsl?: boolean | core.BooleanOut; @core.attr(String) public location?: string | core.StringOut; @core.attr(Boolean) public reportBuildStatus?: boolean | core.BooleanOut; @core.attr(String) public sourceIdentifier!: string | core.StringOut; @core.attr(String) public type!: string | core.StringOut; } export interface RegistryCredentialArgs extends core.SchemaArgs { credential: string | core.StringOut; credentialProvider: string | core.StringOut; } export class RegistryCredential extends core.Schema { @core.attr(String) public credential!: string | core.StringOut; @core.attr(String) public credentialProvider!: string | core.StringOut; } export interface EnvironmentVariableArgs extends core.SchemaArgs { name: string | core.StringOut; type?: string | core.StringOut; value: string | core.StringOut; } export class EnvironmentVariable extends core.Schema { @core.attr(String) public name!: string | core.StringOut; @core.attr(String) public type?: string | core.StringOut; @core.attr(String) public value!: string | core.StringOut; } export interface EnvironmentArgs extends core.SchemaArgs { certificate?: string | core.StringOut; computeType: string | core.StringOut; environmentVariable?: | core.Array | core.ArrayOut; image: string | core.StringOut; imagePullCredentialsType?: string | core.StringOut; privilegedMode?: boolean | core.BooleanOut; registryCredential?: RegistryCredential; type: string | core.StringOut; } export class Environment extends core.Schema { @core.attr(String) public certificate?: string | core.StringOut; @core.attr(String) public computeType!: string | core.StringOut; @core.attr(EnvironmentVariable, { kind: "array" }) public environmentVariable?: | core.Array | core.ArrayOut; @core.attr(String) public image!: string | core.StringOut; @core.attr(String) public imagePullCredentialsType?: string | core.StringOut; @core.attr(Boolean) public privilegedMode?: boolean | core.BooleanOut; @core.attr(RegistryCredential) public registryCredential?: RegistryCredential; @core.attr(String) public type!: string | core.StringOut; } export interface SecondarySourceVersionArgs extends core.SchemaArgs { sourceIdentifier: string | core.StringOut; sourceVersion: string | core.StringOut; } export class SecondarySourceVersion extends core.Schema { @core.attr(String) public sourceIdentifier!: string | core.StringOut; @core.attr(String) public sourceVersion!: string | core.StringOut; } export interface CacheArgs extends core.SchemaArgs { location?: string | core.StringOut; modes?: core.Array | core.ArrayOut; type?: string | core.StringOut; } export class Cache extends core.Schema { @core.attr(String) public location?: string | core.StringOut; @core.attr(String, { kind: "array" }) public modes?: core.Array | core.ArrayOut; @core.attr(String) public type?: string | core.StringOut; } export interface VpcConfigArgs extends core.SchemaArgs { securityGroupIds: core.Array | core.ArrayOut; subnets: core.Array | core.ArrayOut; vpcId: string | core.StringOut; } export class VpcConfig extends core.Schema { @core.attr(String, { kind: "array" }) public securityGroupIds!: core.Array | core.ArrayOut; @core.attr(String, { kind: "array" }) public subnets!: core.Array | core.ArrayOut; @core.attr(String) public vpcId!: string | core.StringOut; } export interface FileSystemLocationsArgs extends core.SchemaArgs { identifier?: string | core.StringOut; location?: string | core.StringOut; mountOptions?: string | core.StringOut; mountPoint?: string | core.StringOut; type?: string | core.StringOut; } export class FileSystemLocations extends core.Schema { @core.attr(String) public identifier?: string | core.StringOut; @core.attr(String) public location?: string | core.StringOut; @core.attr(String) public mountOptions?: string | core.StringOut; @core.attr(String) public mountPoint?: string | core.StringOut; @core.attr(String) public type?: string | core.StringOut; } export interface ProjectArgs extends core.ResourceArgs { /** * (Required) Configuration block. Detailed below. */ artifacts: Artifacts; /** * (Optional) Generates a publicly-accessible URL for the projects build badge. Available as `badge_url * attribute when enabled. */ badgeEnabled?: boolean | core.BooleanOut; /** * (Optional) Defines the batch build options for the project. */ buildBatchConfig?: BuildBatchConfig; /** * (Optional) Number of minutes, from 5 to 480 (8 hours), for AWS CodeBuild to wait until timing out an * y related build that does not get marked as completed. The default is 60 minutes. */ buildTimeout?: number | core.NumberOut; /** * (Optional) Configuration block. Detailed below. */ cache?: Cache; /** * (Optional) Specify a maximum number of concurrent builds for the project. The value specified must b * e greater than 0 and less than the account concurrent running builds limit. */ concurrentBuildLimit?: number | core.NumberOut; /** * (Optional) Short description of the project. */ description?: string | core.StringOut; /** * (Optional) AWS Key Management Service (AWS KMS) customer master key (CMK) to be used for encrypting * the build project's build output artifacts. */ encryptionKey?: string | core.StringOut; /** * (Required) Configuration block. Detailed below. */ environment: Environment; /** * (Optional) A set of file system locations to to mount inside the build. File system locations are do * cumented below. */ fileSystemLocations?: | core.Array | core.ArrayOut; /** * (Optional) Configuration block. Detailed below. */ logsConfig?: LogsConfig; /** * (Required) Project's name. */ name: string | core.StringOut; /** * (Optional) Specifies the visibility of the project's builds. Possible values are: `PUBLIC_READ` and * PRIVATE`. Default value is `PRIVATE`. */ projectVisibility?: string | core.StringOut; /** * (Optional) Number of minutes, from 5 to 480 (8 hours), a build is allowed to be queued before it tim * es out. The default is 8 hours. */ queuedTimeout?: number | core.NumberOut; /** * The ARN of the IAM role that enables CodeBuild to access the CloudWatch Logs and Amazon S3 artifacts * for the project's builds. */ resourceAccessRole?: string | core.StringOut; /** * (Optional) Configuration block. Detailed below. */ secondaryArtifacts?: | core.Array | core.ArrayOut; /** * (Optional) Configuration block. Detailed below. */ secondarySourceVersion?: | core.Array | core.ArrayOut; /** * (Optional) Configuration block. Detailed below. */ secondarySources?: | core.Array | core.ArrayOut; /** * (Required) Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role that enab * les AWS CodeBuild to interact with dependent AWS services on behalf of the AWS account. */ serviceRole: string | core.StringOut; /** * (Required) Configuration block. Detailed below. */ source: Source; /** * (Optional) Version of the build input to be built for this project. If not specified, the latest ver * sion is used. */ sourceVersion?: string | core.StringOut; /** * (Optional) Map of tags to assign to the resource. If configured with a provider [`default_tags` conf * iguration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-conf * iguration-block) present, tags with matching keys will overwrite those defined at the provider-level * . */ tags?: core.Map | core.MapOut; /** * A map of tags assigned to the resource, including those inherited from the provider [`default_tags` * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags- * configuration-block). */ tagsAll?: core.Map | core.MapOut; /** * (Optional) Configuration block. Detailed below. */ vpcConfig?: VpcConfig; } export class Project extends core.Resource { /** * ARN of the CodeBuild project. */ @core.attr(String, { computed: true }) public arn!: string | core.StringOut; /** * (Required) Configuration block. Detailed below. */ @core.attr(Artifacts) public artifacts!: Artifacts; /** * (Optional) Generates a publicly-accessible URL for the projects build badge. Available as `badge_url * attribute when enabled. */ @core.attr(Boolean) public badgeEnabled?: boolean | core.BooleanOut; /** * URL of the build badge when `badge_enabled` is enabled. */ @core.attr(String, { computed: true }) public badgeUrl!: string | core.StringOut; /** * (Optional) Defines the batch build options for the project. */ @core.attr(BuildBatchConfig) public buildBatchConfig?: BuildBatchConfig; /** * (Optional) Number of minutes, from 5 to 480 (8 hours), for AWS CodeBuild to wait until timing out an * y related build that does not get marked as completed. The default is 60 minutes. */ @core.attr(Number) public buildTimeout?: number | core.NumberOut; /** * (Optional) Configuration block. Detailed below. */ @core.attr(Cache) public cache?: Cache; /** * (Optional) Specify a maximum number of concurrent builds for the project. The value specified must b * e greater than 0 and less than the account concurrent running builds limit. */ @core.attr(Number) public concurrentBuildLimit?: number | core.NumberOut; /** * (Optional) Short description of the project. */ @core.attr(String, { computed: true }) public description?: string | core.StringOut; /** * (Optional) AWS Key Management Service (AWS KMS) customer master key (CMK) to be used for encrypting * the build project's build output artifacts. */ @core.attr(String, { computed: true }) public encryptionKey?: string | core.StringOut; /** * (Required) Configuration block. Detailed below. */ @core.attr(Environment) public environment!: Environment; /** * (Optional) A set of file system locations to to mount inside the build. File system locations are do * cumented below. */ @core.attr(FileSystemLocations, { kind: "array" }) public fileSystemLocations?: | core.Array | core.ArrayOut; /** * Name (if imported via `name`) or ARN (if created via Terraform or imported via ARN) of the CodeBuild * project. */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Optional) Configuration block. Detailed below. */ @core.attr(LogsConfig) public logsConfig?: LogsConfig; /** * (Required) Project's name. */ @core.attr(String) public name!: string | core.StringOut; /** * (Optional) Specifies the visibility of the project's builds. Possible values are: `PUBLIC_READ` and * PRIVATE`. Default value is `PRIVATE`. */ @core.attr(String) public projectVisibility?: string | core.StringOut; /** * The project identifier used with the public build APIs. */ @core.attr(String, { computed: true }) public publicProjectAlias!: string | core.StringOut; /** * (Optional) Number of minutes, from 5 to 480 (8 hours), a build is allowed to be queued before it tim * es out. The default is 8 hours. */ @core.attr(Number) public queuedTimeout?: number | core.NumberOut; /** * The ARN of the IAM role that enables CodeBuild to access the CloudWatch Logs and Amazon S3 artifacts * for the project's builds. */ @core.attr(String) public resourceAccessRole?: string | core.StringOut; /** * (Optional) Configuration block. Detailed below. */ @core.attr(SecondaryArtifacts, { kind: "array" }) public secondaryArtifacts?: | core.Array | core.ArrayOut; /** * (Optional) Configuration block. Detailed below. */ @core.attr(SecondarySourceVersion, { kind: "array" }) public secondarySourceVersion?: | core.Array | core.ArrayOut; /** * (Optional) Configuration block. Detailed below. */ @core.attr(SecondarySources, { kind: "array" }) public secondarySources?: | core.Array | core.ArrayOut; /** * (Required) Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role that enab * les AWS CodeBuild to interact with dependent AWS services on behalf of the AWS account. */ @core.attr(String) public serviceRole!: string | core.StringOut; /** * (Required) Configuration block. Detailed below. */ @core.attr(Source) public source!: Source; /** * (Optional) Version of the build input to be built for this project. If not specified, the latest ver * sion is used. */ @core.attr(String) public sourceVersion?: string | core.StringOut; /** * (Optional) Map of tags to assign to the resource. If configured with a provider [`default_tags` conf * iguration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-conf * iguration-block) present, tags with matching keys will overwrite those defined at the provider-level * . */ @core.attr(String, { kind: "map" }) public tags?: core.Map | core.MapOut; /** * A map of tags assigned to the resource, including those inherited from the provider [`default_tags` * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags- * configuration-block). */ @core.attr(String, { computed: true, kind: "map" }) public tagsAll?: core.Map | core.MapOut; /** * (Optional) Configuration block. Detailed below. */ @core.attr(VpcConfig) public vpcConfig?: VpcConfig; constructor(name: string, args?: ProjectArgs) { super(name, "aws_codebuild_project", args); } public override getNamespace(): string { return "aws_codebuild"; } }