在Wellcome集合部署ECS服务的工具
weco-deplo的Python项目详细描述
用于在Wellcome集合部署ECS服务的工具。在
安装
对于OSX:
按照此指南安装Python 3和pip:
https://docs.python-guide.org/starting/install3/osx/
运行:pip install weco-deploy
设置
使用 以下格式:
my_awesome_project:environments:-id:prodname:Production-id:stagename:Staging# Optional image_repositories block for managing tags in your container repo rather than SSM# This is necessary to do automated deploys & will become required in the futureimage_repositories:-id:my_servicenamespace:uk.ac.wellcomeaccount_id:'12345678901'# Optional service block for automated deployments# This tag needs to match the value of ECS service tag "deployment:service"services:-id:ecs_service_tagname:My Awesome Projectrole_arn:arn:aws:iam::12345678901:role/platform-ciaws_region_name:eu-west-1
要获得自动部署功能,您需要应用以下内容 您希望部署目标的ECS服务的标签。- deployment:service:必须与中给定的值之一匹配 image_repositories.services。-deployment:env:必须匹配其中一个 environments中给定的值。在
发布到ECR的图像将被标记为env.envname,其中 “envname”是“deploy”步骤中选择的环境id。在
在您的ECS任务定义中,您应该使用 那些标签,例如
^{pr2}$身份验证
该工具假定您具有可用于假定 配置中指定的角色。在
过程
此工具希望您遵循以下过程:
- 将图像发布到ECR中的标签,例如“最新”。 图像还将被赋予一个标签,指示它们的git ref
- 在特定的git refs中,从一组图像组成的标签中准备一个版本
- 将该版本部署到“环境”
- 将图像从一个标记复制到另一个标记,例如“最新”->环境阶段““
- 使用项目配置和ECS服务标签检测要重新部署的正确服务
发布图像
可以在CI中运行此步骤以将图像发布到ECR,并确保 SSM和ECR中提供了正确的元数据
# To publish the local image "my_service:latest" to "uk.ac.wellcome/my_service:latest" in ECR weco-deploy publish --image-id my_service # To publish the local image "my_service:my_test" to "uk.ac.wellcome/my_service:my_test" in ECR weco-deploy publish --image-id my_service --label my_test
准备发行版
此步骤将在DynamoDB中创建预期部署的记录 以及发布的时间和人员。在
# To prepare a release from latest weco-deploy prepare # To prepare a release from my_test weco-deploy prepare --from-label my_test
部署版本
此步骤将从dynamo查找一个版本,尝试将其应用于 环境并记录结果
# To deploy a release to prod from the last one prep weco-deploy deploy --environment-id prod # To deploy a particular release to prod weco-deploy deploy --environment-id prod --release-id 1234567
更新版本
此命令允许您仅释放指定的服务。它允许你 要指定以前的版本,请使用逗号分隔的要更新的服务列表 以及一个更新它们的标签。在
该命令使用与旧版本相同的图像创建新版本 只有指定的服务更新到给定的标签。在
# To update only serviceOne from release 1234567 to ref.abc weco-deploy update --release-id 1234567 --service-ids serviceOne --from-label ref.abc
一步准备/发布
您可以使用release-deploy命令在一个步骤中准备/发布
# To deploy a release to prod from the last one prep weco-deploy release-deploy --from-label my_test --environment-id prod
- 项目
标签: