本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
示例:修改 Amazon t ECS askdef
以下是包含渲染 Amazon ECS 任务定义操作以及构建和部署操作的完整工作流程示例。该工作流程的目的是构建 Docker 映像并将其部署到您的亚马逊ECS集群中。该工作流由以下按顺序运行的构建块组成:
-
触发器-当您将更改推送到源存储库时,此触发器会自动启动工作流程运行。有关触发器的更多信息,请参阅启动工作流程使用触发器自动运行。
-
构建操作 (
BuildDocker
)-触发后,该操作使用 Dockerfile 构建 Docker 镜像,使用提交 ID 对其进行标记,然后将映像推送到亚马逊。ECR有关生成操作的更多信息,请参阅使用工作流程进行构建。 -
Render Amazon ECS 任务定义操作 (
RenderTaskDef
) — 构建操作完成后,此操作将使用包含正确提交 ID 的image
字段值更新taskdef.json
位于源存储库根目录中的现有内容。它使用新的文件名 (task-definition-random-string.json
) 保存更新的文件,然后创建包含此文件的输出构件。渲染操作还会生成一个名为的变量,task-definition
并将其设置为新任务定义文件的名称。对象和变量将用于部署操作,接下来是部署操作。 -
部署到亚马逊ECS操作 (
DeployToECS
) — 完成 “渲染亚马逊” ECS 任务定义操作后,“部署到亚马逊” ECS 操作将查找渲染操作生成的输出项目 (TaskDefArtifact
),在其中找到task-definition-random-string.json
文件,然后将其注册到您的亚马逊ECS服务。然后,亚马逊ECS服务按照task-definition-random-string.json
文件中的说明在您的亚马逊集群中运行亚马逊ECS任务和关联的 Docker 镜像容器。ECS
Name: codecatalyst-ecs-workflow SchemaVersion: 1.0 Triggers: - Type: PUSH Branches: - main Actions: BuildDocker: Identifier: aws/build@v1 Environment: Name: codecatalyst-ecs-environment Connections: - Name: codecatalyst-account-connection Role: codecatalyst-ecs-build-role Inputs: Variables: - Name: REPOSITORY_URI Value: 111122223333.dkr.ecr.us-east-2.amazonaws.com/codecatalyst-ecs-image-repo - Name: IMAGE_TAG Value: ${WorkflowSource.CommitId} Configuration: Steps: #pre_build: - Run: echo Logging in to Amazon ECR... - Run: aws --version - Run: aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin 111122223333.dkr.ecr.us-east-2.amazonaws.com #build: - Run: echo Build started on `date` - Run: echo Building the Docker image... - Run: docker build -t $REPOSITORY_URI:latest . - Run: docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG #post_build: - Run: echo Build completed on `date` - Run: echo Pushing the Docker images... - Run: docker push $REPOSITORY_URI:latest - Run: docker push $REPOSITORY_URI:$IMAGE_TAG RenderTaskDef: DependsOn: - BuildDocker Identifier: aws/ecs-render-task-definition@v1 Inputs: Variables: - Name: REPOSITORY_URI Value: 111122223333.dkr.ecr.us-east-2.amazonaws.com/codecatalyst-ecs-image-repo - Name: IMAGE_TAG Value: ${WorkflowSource.CommitId} Configuration: task-definition: taskdef.json container-definition-name: codecatalyst-ecs-container image: $REPOSITORY_URI:$IMAGE_TAG # The output artifact contains the updated task definition file. # The new file is prefixed with 'task-definition'. # The output variable is set to the name of the updated task definition file. Outputs: Artifacts: - Name: TaskDefArtifact Files: - "task-definition*" Variables: - task-definition DeployToECS: Identifier: aws/ecs-deploy@v1 Environment: Name: codecatalyst-ecs-environment Connections: - Name: codecatalyst-account-connection Role: codecatalyst-ecs-deploy-role #Input artifact contains the updated task definition file. Inputs: Sources: [] Artifacts: - TaskDefArtifact Configuration: region: us-east-2 cluster: codecatalyst-ecs-cluster service: codecatalyst-ecs-service task-definition: ${RenderTaskDef.task-definition}