(@aws-cdk/aws-codepipeline) - 在用@aws-cdk/aws-codepipeline 制作的管道中使用等效的 "ShellScriptAction"

(@aws-cdk/aws-codepipeline) - Using "ShellScriptAction" equivalent in a Pipeline made with @aws-cdk/aws-codepipeline

这是我的问题。我目前正在努力 运行 在我的管道中执行基本的 shell 脚本操作。 管道是通过 Pipeline 构造在 @aws-cdk/aws-codepipeline

中创建的
import { Artifact, IAction, Pipeline } from "@aws-cdk/aws-codepipeline"
const pipeline = new Pipeline(this, "backend-pipeline",{
...
});

现在,我正在 运行 构建一个交叉部署管道,并希望在创建 lambda 后立即调用它。以前,一个简单的 ShellScriptAction 在旧的 (@aws-cdk/pipelines) 包中就足够了,但由于某种原因,包 pipelinesaws-codepipeline 都同时维护.

我想知道的是如何在新的 (aws-codepipeline) 包中 运行 一个简单的基本命令,最好是 ActionStage .

提前致谢!

@aws-cdk/aws-codepipeline 适用于 AWS Codepipeline。 @aws-cdk/pipelines 用于利用 AWS Codepipeline 部署 CDK 应用程序。详细了解该软件包及其理由 here

关于你的问题,这里有一些选择。

首先,如果您正在寻找针对 运行 任意命令的简单 CodeBuild 操作,您可以使用 CodeBuildAction.

还有一个专门用于调用 lambda 的单独操作,它是 LambdaInvokeAction

两者都是 @aws-cdk/aws-codepipeline-actions 模块的一部分。

您可以在 codepipeline_actions.CodeBuildAction to run arbitrary shell commands in your pipeline. The CDK has several build tool constructs*, used in different places. pipelines.CodePipeline specializes in deploying CDK apps, while the lower-level codepipeline.Pipeline 中使用 codebuild.PipelineProject 具有更广泛的构建功能:

Build tool construct CloudFormation Resource Can use where?
pipelines.ShellStep AWS::CodeBuild::Project pipelines.CodePipeline
pipelines.CodeBuildStep AWS::CodeBuild::Project pipelines.CodePipeline
codebuild.PipelineProject AWS::CodeBuild::Project codepipeline.Pipeline
codebuild.Project AWS::CodeBuild::Project codepipeline.Pipeline or standalone

对于您的情况,设置为 Pipeline > Stage > CodeBuildAction > PipelineProject

// add to stage actions
new codepipeline_actions.CodeBuildAction({
  actionName: 'CodeBuild',
  project: new codebuild.PipelineProject(this, 'PipelineProject', {
    buildSpec: codebuild.BuildSpec.fromObject({
      version: '0.2',
      phases: {
        build: { commands: ['echo "[project foo] $PROJECT_FOO"'] },
      },
    }),
    environmentVariables: {
      PROJECT_FOO: {
        value: 'Foo',
        type: codebuild.BuildEnvironmentVariableType.PLAINTEXT,
      },
    },
  }),
  input: sourceOutput,
});

* 您提到的 ShellScriptAction 是另一个,现在已在 v1 中弃用并从 v2 中删除。