动态生成buildkite管道

buildpipe的Python项目详细描述


Build StatusDocumentation StatusPyPI Version

buildpipe允许您动态生成buildkite管道,以便您可以:

  • 管理连续部署逻辑,例如仅在工作时间部署
  • 仅通过查看指定项目中的git更改来维护monorepos
  • 指定项目之间的依赖关系,以便它们的步骤是并发的

安装

pip install buildpipe

示例

注意:有关完整的工作示例,请参见Buildkite Monorepo Example

# trigger deploy steps on master during business hoursdeploy:branch:mastertimezone:US/Easternallowed_hours_regex:'9|1[0-7]'allowed_weekdays_regex:'[1-5]'blacklist_dates:-'01-01'-'12-31'# ignore certain files from triggering steps with fnmatchignore:-'*.md'-'pyproject/*.ini'stairs:-name:testscope:projectbuildkite:command:-cd $$BUILDPIPE_PROJECT_PATH-make test-name:buildscope:projectemoji:":docker:"tags:-docker-onlybuildkite:agents:-queue=buildbranches:mastercommand:-make build-make publish-image-name:tagscope:stairemoji:":github:"buildkite:branches:mastercommand:make tag-name:deploy-stagingscope:projectemoji:":shipit:"deploy:truebuildkite:branches:mastercommand:-cd $$BUILDPIPE_PROJECT_PATH-make deploy-staging-name:deploy-prodscope:projectemoji:":shipit:"deploy:truebuildkite:branches:mastercommand:-cd $$BUILDPIPE_PROJECT_PATH-make deploy-prodprojects:-name:pyprojectpath:pyprojectemoji:":python:"tags:-docker-onlydependencies:-jsproject-name:jsprojectpath:jsprojectemoji:":javascript:"skip:-deploy-staging

上面的buildpipe配置文件指定了以下内容:

  • repo中有两个项目需要跟踪:jsproject和pyproject。
  • 楼梯是一组台阶。它可以有一个“项目”或“楼梯”的范围。范围“项目”为每个更改的项目创建一个步骤,而范围“楼梯”仅创建一个步骤。
  • 也可以使用标记规则限制楼梯的范围。例如,pyproject有“docker only”标记,因此将包含构建步骤;但是jsproject没有该步骤。
  • 任何git文件更改都是项目路径的子路径,将触发每个项目的步骤。
  • 此外,pyproject将path jsproject作为依赖项:jsproject中的任何更改都将触发pyproject包含在管道中的步骤。注意依赖关系是路径而不是项目。
  • 带有“deploy:true”的楼梯只会在东部时间上午9点到下午5点之间的工作日(不是除夕或除夕)触发。
  • 项目jsproject永远不会创建step deploy staging。
  • PyProject下以.md或.ini文件结尾的文件在触发部署步骤时将被忽略。

在上面的配置中,如果只接触到pyproject下的文件,并且合并发生在工作时间内,那么buildpipe将创建以下步骤:

steps:-wait-command:-cd $$BUILDPIPE_PROJECT_PATH-make testenv:BUILDPIPE_PROJECT_NAME:pyprojectBUILDPIPE_PROJECT_PATH:pyprojectBUILDPIPE_STAIR_NAME:testBUILDPIPE_STAIR_SCOPE:projectlabel:'testpyproject:python:'-wait-agents:-queue=buildbranches:mastercommand:-cd $$BUILDPIPE_PROJECT_PATH-make build-make publish-imageenv:BUILDPIPE_PROJECT_NAME:pyprojectBUILDPIPE_PROJECT_PATH:pyprojectBUILDPIPE_STAIR_NAME:buildBUILDPIPE_STAIR_SCOPE:projectlabel:'buildpyproject:docker:'-wait-branches:mastercommand:make tagenv:BUILDPIPE_STAIR_NAME:tagBUILDPIPE_STAIR_SCOPE:stairlabel:'tag:github:'-wait-branches:mastercommand:-cd $$BUILDPIPE_PROJECT_PATH-make deploy-stagingconcurrency:1concurrency_group:deploy-staging-pyprojectenv:BUILDPIPE_PROJECT_NAME:pyprojectBUILDPIPE_PROJECT_PATH:pyprojectBUILDPIPE_STAIR_NAME:deploy-stagingBUILDPIPE_STAIR_SCOPE:projectlabel:'deploy-stagingpyproject:shipit:'-wait-branches:mastercommand:-cd $$BUILDPIPE_PROJECT_PATH-make deploy-prodconcurrency:1concurrency_group:deploy-prod-pyprojectenv:BUILDPIPE_PROJECT_NAME:pyprojectBUILDPIPE_PROJECT_PATH:pyprojectBUILDPIPE_STAIR_NAME:deploy-prodBUILDPIPE_STAIR_SCOPE:projectlabel:'deploy-prodpyproject:shipit:'

设置

在buildkite pipeline settings ui中,您只需在“commands to run”(要运行的命令)中添加以下内容即可:

buildpipe -i path/to/buildpipe.yml -o pipeline.yml
buildkite-agent pipeline upload pipeline.yml

测试

make test

许可证

麻省理工学院

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

推荐PyPI第三方库


热门话题
在IE10中重新加载另一个帧时,internet explorer Java小程序失败/消失   ThreadLocal变量的java性能   java系统。出来println不是打印输出   java从JAXB类获取元素属性   java组织。天啊。科尔巴。包裹。InvalidName:IDL:omg。org/CORBA/ORB/InvalidName:1.0   java有没有办法让非事务连接抛出异常?   java是否有任何方法可以使用JdbcTemplate和查询/条件Fluent API   javajpa级联类型。刷新不工作?   未考虑java Maven依赖关系管理   java MySQL MBR包含抛出MySQLExceptionError的语句   java验证整数并将其设为5位数   java发现了循环依赖的问题   java Hibernate left join fetch到使用@ManyToMany关联映射的softdeleted实体生成无效查询?   JavaH:commandButton多个操作:下载文件并呈现ajax表   Google Contacts API在Java、C#、Python或Ruby中是否有一个Hello World示例?