在AWS CDK中,如何将CodeStarConnectionsSourceAction用作CodePipeline的输入? [英] In AWS CDK, how should CodeStarConnectionsSourceAction be used as input to a CodePipeline?

查看:22
本文介绍了在AWS CDK中,如何将CodeStarConnectionsSourceAction用作CodePipeline的输入?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试一个从Github获取代码并部署它的管道(Lambda、DynamoDB等,使用CDK)。我目前正在尝试使其与CodeStarConnectionsSourceAction一起工作,但我的代码失败,出现以下错误:

  [Example4BePipeline/Example4BePipeline/Pipeline] Action Synth in stage Build: first stage may only contain Source actions
  [Example4BePipeline/Example4BePipeline/Pipeline] Action 'Synth' is using input Artifact 'Sources', which is not being produced in this pipeline

我生成该错误的代码是:

import * as cdk from "aws-cdk-lib"
import {Construct} from "constructs"
import {Example4BeDeployStage} from "./example4-be-deploy-stage"
import {CodeBuildStep, CodePipeline, CodePipelineFileSet} from "aws-cdk-lib/pipelines"
import {CodeStarConnectionsSourceAction} from "aws-cdk-lib/aws-codepipeline-actions";
import {Artifact} from "aws-cdk-lib/aws-codepipeline";

export class PipelineStack extends cdk.Stack {
    constructor(scope: Construct, id: string, props?: cdk.StackProps) {
        super(scope, id, props)

        const sourceOutput = new Artifact("Sources");
        const sourceAction = new CodeStarConnectionsSourceAction({
            actionName: "Github",
            owner: "username",
            repo: "example4-be",
            output: sourceOutput,
            connectionArn: "arn:aws:codestar-connections:us-east-1:....:connection/...."
        })
        const pipeline = new CodePipeline(this, "Example4BePipeline", {
            pipelineName: "Example4BePipeline",
            synth: new CodeBuildStep("Synth", {
                    input: CodePipelineFileSet.fromArtifact(sourceOutput),
                    installCommands: [
                        "npm install -g aws-cdk"
                    ],
                    commands: [
                        "npm ci",
                        "npm run build",
                        "npx cdk synth"
                    ]
                }
            ),
            selfMutation: false // TODO: remove before committing.
        })
    }
}

我在这里做错了什么?

推荐答案

我想出来了,这是工作代码,简短得多:

import * as cdk from "aws-cdk-lib"
import {Construct} from "constructs"
import {Example4BeDeployStage} from "./example4-be-deploy-stage"
import {CodeBuildStep, CodePipeline, CodePipelineSource} from "aws-cdk-lib/pipelines"

export class PipelineStack extends cdk.Stack {
    constructor(scope: Construct, id: string, props?: cdk.StackProps) {
        super(scope, id, props)

        const pipeline = new CodePipeline(this, "Example4BePipeline", {
            pipelineName: "Example4BePipeline",
            synth: new CodeBuildStep("Synth", {
                    input: CodePipelineSource.connection("username/example4-be", "main", {
                        connectionArn: "arn:aws:codestar-connections:us-east-1:....:connection/....",
                    }),
                    installCommands: [
                        "npm install -g aws-cdk"
                    ],
                    commands: [
                        "npm ci",
                        "npm run build",
                        "npx cdk synth"
                    ]
                }
            ),
            selfMutation: false // TODO: remove before committing.
        })
    }
}

这篇关于在AWS CDK中,如何将CodeStarConnectionsSourceAction用作CodePipeline的输入?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆