在Wellcome集合部署ECS服务的工具

weco-deplo的Python项目详细描述


用于在Wellcome集合部署ECS服务的工具。在

https://badge.buildkite.com/f5f17766a1334f7445548b70ef2c6de1dbb6ba58c6d4ca7cd1.svg

安装

对于OSX:

按照此指南安装Python 3pip

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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java DataInputStream UTFDataFormatException:字节88周围的输入格式错误根本原因   排序后的java输出?   Java 7 nio文件属性窗口   使用迭代器的Java fire bullet   Selenium Java Webdriver NoClassDefFoundError:org/apache/http/config/RegistryBuilder   java NDK<Utils/Log。h> 没有这样的文件或目录   java OpenCV,从图像中剪切片段   java从非线程安全类实例化线程安全类   链表的java插入方法   多线程在测试中杀死java线程   无法将泛型项实例化为Java列表   java AjaxFormComponentUpdateingBehavior onkeypress   JavaSpringBootOAuth2:无用户信息端点如何直接在客户端从JWT访问令牌加载身份验证(主体)   多线程Java线程不能并行工作   java如何从soap响应中提取相同元素类型的列表?   java SAT4J隐含用例   java检查字符串是否使用规定的规则集形成   打开写入java的eclipse文件