aws-cdk-lib
Version: 
Version 2 of the AWS Cloud Development Kit library
153 lines (152 loc) • 5.74 kB
TypeScript
import { Construct } from 'constructs';
import * as codecommit from '../../../aws-codecommit';
import * as codepipeline from '../../../aws-codepipeline';
import { EventPattern, IRuleTarget } from '../../../aws-events';
import * as iam from '../../../aws-iam';
import { Action } from '../action';
/**
 * How should the CodeCommit Action detect changes.
 * This is the type of the `CodeCommitSourceAction.trigger` property.
 */
export declare enum CodeCommitTrigger {
    /**
     * The Action will never detect changes -
     * the Pipeline it's part of will only begin a run when explicitly started.
     */
    NONE = "None",
    /**
     * CodePipeline will poll the repository to detect changes.
     */
    POLL = "Poll",
    /**
     * CodePipeline will use CloudWatch Events to be notified of changes.
     * This is the default method of detecting changes.
     */
    EVENTS = "Events"
}
/**
 * The CodePipeline variables emitted by the CodeCommit source Action.
 */
export interface CodeCommitSourceVariables {
    /** The name of the repository this action points to. */
    readonly repositoryName: string;
    /** The name of the branch this action tracks. */
    readonly branchName: string;
    /** The date the currently last commit on the tracked branch was authored, in ISO-8601 format. */
    readonly authorDate: string;
    /** The date the currently last commit on the tracked branch was committed, in ISO-8601 format. */
    readonly committerDate: string;
    /** The SHA1 hash of the currently last commit on the tracked branch. */
    readonly commitId: string;
    /** The message of the currently last commit on the tracked branch. */
    readonly commitMessage: string;
}
/**
 * Represents a custom event rule in AWS CodePipeline Actions.
 *
 * This interface defines the structure for specifying a custom event rule
 * in the AWS CodePipeline Actions module. The event rule is defined by an
 * event pattern and a target.
 *
 * @see https://docs.aws.amazon.com/codecommit/latest/userguide/monitoring-events.html
 * @see https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_events_targets-readme.html
 */
export interface ICustomEventRule {
    /**
     * event pattern when this rule should be triggered
     */
    readonly eventPattern: EventPattern;
    /**
     * Target e.g. Lambda when event pattern is fulfilled
     */
    readonly target: IRuleTarget;
    /**
     * Rulename
     */
    readonly ruleName?: string;
    /**
     * Description
     */
    readonly description?: string;
}
/**
 * Construction properties of the `CodeCommitSourceAction CodeCommit source CodePipeline Action`.
 */
export interface CodeCommitSourceActionProps extends codepipeline.CommonAwsActionProps {
    /**
     *
     */
    readonly output: codepipeline.Artifact;
    /**
     * @default 'master'
     */
    readonly branch?: string;
    /**
     * How should CodePipeline detect source changes for this Action.
     *
     * @default CodeCommitTrigger.EVENTS
     */
    readonly trigger?: CodeCommitTrigger;
    /**
     * The CodeCommit repository.
     */
    readonly repository: codecommit.IRepository;
    /**
     * Role to be used by on commit event rule.
     * Used only when trigger value is CodeCommitTrigger.EVENTS.
     *
     * @default a new role will be created.
     */
    readonly eventRole?: iam.IRole;
    /**
     * Whether the output should be the contents of the repository
     * (which is the default),
     * or a link that allows CodeBuild to clone the repository before building.
     *
     * **Note**: if this option is true,
     * then only CodeBuild actions can use the resulting `output`.
     *
     * @default false
     * @see https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference-CodeCommit.html
     */
    readonly codeBuildCloneOutput?: boolean;
    /**
     * You can pass a `customEventRule` to set up a custom event rule for the CodeCommit source action.
     * You must provide the `eventPattern` and `target` properties in the `customEventRule` object.
     * Check which `eventPattern` to use: https://docs.aws.amazon.com/codecommit/latest/userguide/monitoring-events.html
     * @default Event rule which is triggered by CodeCommit repository on commit
     */
    readonly customEventRule?: ICustomEventRule;
}
/**
 * CodePipeline Source that is provided by an AWS CodeCommit repository.
 *
 * If the CodeCommit repository is in a different account, you must use
 * `CodeCommitTrigger.EVENTS` to trigger the pipeline.
 *
 * (That is because the Pipeline structure normally only has a `RepositoryName`
 * field, and that is not enough for the pipeline to locate the repository's
 * source account. However, if the pipeline is triggered via an EventBridge
 * event, the event itself has the full repository ARN in there, allowing the
 * pipeline to locate the repository).
 */
export declare class CodeCommitSourceAction extends Action {
    /**
     * The name of the property that holds the ARN of the CodeCommit Repository
     * inside of the CodePipeline Artifact's metadata.
     *
     * @internal
     */
    static readonly _FULL_CLONE_ARN_PROPERTY = "CodeCommitCloneRepositoryArn";
    private static readonly NEW_DEFAULT_BRANCH_NAME;
    private static readonly OLD_DEFAULT_BRANCH_NAME;
    private readonly branch;
    private readonly props;
    constructor(props: CodeCommitSourceActionProps);
    /** The variables emitted by this action. */
    get variables(): CodeCommitSourceVariables;
    protected bound(_scope: Construct, stage: codepipeline.IStage, options: codepipeline.ActionBindOptions): codepipeline.ActionConfig;
    private getBranchOrDefault;
    private generateEventId;
    private eventIdFromPrefix;
}