为Fargate计划任务使用codedeploy



我正在尝试为我们的一个应用程序设置一个仅由计划任务组成的CI/CD管道。似乎不明白这些建议的CI/CD工作流程。据我所知,所有的在线文档和示例都与服务一起工作。

目前,我的任务配置为使用"最新的";标记,但是,我希望能够在特定版本上运行它们,并且当新版本发布时,使用命名版本。

如果有影响的话,我将使用CDK进行所有的配置。

任何提示都非常感谢。

我认为构建、测试和部署到ECR或Docker的CodePipeline堆栈将负责CI/CD部分。就计划任务部分而言,也许这提供了一些启发:

public class MyWorkloadTaskStack extends Stack {
    public MyWorkloadTaskStack(@Nullable Construct scope, @Nullable String id, @Nullable StackProps props, @NotNull Cluster cluster) {
        super(scope, id, props);
        FargateTaskDefinition task = FargateTaskDefinition.Builder.create(this, "MyWorkloadTask")
                .memoryLimitMiB(1024)
                .cpu(256)
                .build();
        task.addContainer("Workload", ContainerDefinitionOptions.builder()
                .image(fromRegistry("zsquare/my-workload"))
                .logging(AwsLogDriver.Builder.create()
                        .logGroup(LogGroup.Builder.create(this, "LogGroup")
                                .logGroupName("MyWorkloadTaskLogGroup")
                                .removalPolicy(RETAIN)
                                .retention(ONE_MONTH)
                                .build())
                        .streamPrefix("MyWorkloadTask")
                        .build())
                .build());
        Rule rule = Rule.Builder.create(this, "MyWorkloadRule")
                .schedule(cron(CronOptions.builder()
                        .hour("11")
                        .minute("15")
                        .build()))
                .build();
        rule.addTarget(EcsTask.Builder.create()
                .cluster(cluster)
                .subnetSelection(SubnetSelection.builder()
                        .subnetType(PUBLIC)
                        .build())
                .taskDefinition(task)
                .taskCount(1)
                .containerOverrides(asList(ContainerOverride.builder()
                        .containerName("Workload")
                        .build()))
                .build());
    }
}

这将创建一个EventBridge规则来运行名为"Workload"每天11:15 UTC。没有正在运行的服务被创建,只是一个任务开始,完成它的工作,然后优雅地结束。

它记录到CloudWatch的前缀是"MyWorkloadTask"使日志易于查找。

在这个例子中,任务定义本身是从Docker中提取的,但是指定ECR是很简单的。它假设您已经在其他地方创建了一个Cluster,并将其作为参数传递到这里。

相关内容

  • 没有找到相关文章

最新更新