用于生成buildkite管道yaml的cli工具

bkyml的Python项目详细描述


https://travis-ci.org/joscha/bkyml.svg?branch=masterhttps://coveralls.io/repos/github/joscha/bkyml/badge.svg?branch=master

一个cli工具,可以动态生成buildkite的pipeline.yaml文件。

通过pip install bkyml安装(请参见https://pypi.org/project/bkyml/

示例:

bkyml comment 'Frontend tests pipeline'
bkyml env \
    --var FORCE_COLOR 1
bkyml steps
bkyml command\
    --command 'yarn install'\
    --command 'yarn test'\
    --label ':karma: tests'
bkyml wait
bkyml plugin \
    --plugin 'org/upload-coverage#1.0.0'dir=./coverage

将产生

# Frontend tests pipelineenv:FORCE_COLOR:'1'steps:-label:':karma:tests'command:-yarn install-yarn test-wait-plugins:org/upload-coverage#1.0.0:dir:./coverage

这允许您动态生成管道:

#!/bin/env bash
set -eu -o pipefail

bkyml comment "Pipeline for running all tests in test/*"
bkyml steps

# add a new command step to run the tests in each test directory
for test_dir in test/*/;do
  bkyml command\
      --command "run_tests ${test_dir}"\
      --label "Run tests for '${test_dir}'"done

子命令

步骤

示例:

bkyml steps

将产生

steps:

评论

示例:

bkyml comment \
'Hello world!''What a nice day :)'

将产生

# Hello world!# What a nice day :)

环境

示例:

bkyml env \
    --var A B \
    --var C D

将产生

env:A:BC:D

命令

示例:

bkyml command\
    --command 'yarn install'\
    --command 'yarn test'\
    --env FORCE_COLOR 1\
    --branches master \
    --label ':yarn: tests'\
    --agents yarn true\
    --artifact-paths 'logs/**/*''coverage/**/*'\
    --parallelism 5\
    --concurrency 2\
    --concurrency-group my/group \
    --timeout-in-minutes 60\
    --skip 'Some reason'\
    --retry automatic \
    --retry-automatic-tuple '*'2\
    --retry-automatic-tuple 13\
    --plugin docker-compose#v1.3.2 build=app image-repository=index.docker.io/org/repo

将产生

-label:':yarn:tests'command:-yarn install-yarn testbranches:masterenv:FORCE_COLOR:'1'agents:yarn:'true'artifact_paths:-logs/**/*-coverage/**/*parallelism:5concurrency:2concurrency_group:my/grouptimeout_in_minutes:60skip:Some reasonretry:automatic:-exit_status:'*'limit:2-exit_status:1limit:3plugins:docker-compose#v1.3.2:build:appimage-repository:index.docker.io/org/repo

还有:

  • --retry-automatic-limit
  • --retry-automatic-exit-code

不能与–retry automatic tuple一起使用

以及:

  • --retry-manual-allowed(允许手动重试,默认值)
  • --no-retry-manual-allowed(不允许手动重试)
  • --retry-manual-reason REASON(给出禁止重试的原因)
  • --retry-manual-permit-on-passed(允许在作业通过后重试)
  • --no-retry-manual-permit-on-passed(默认情况下,作业通过后不允许重试)

示例:

bkyml command\
    --command 'x'\
    --retry manual \
    --retry-manual-permit-on-passed \
    --no-retry-manual-allowed \
    --retry-manual-reason "Just because"

将导致

-command:xretry:manual:allowed:falsereason:Just becausepermit_on_passed:true

插件

示例:

bkyaml plugin \
    --plugin 'org/repo#1.0.0'some=var other=var \
    --plugin 'org/other_repo'more=var \
    --name 'My name is working'

将导致

-name:My name is workingplugins:org/repo#1.0.0:some:varother:varorg/other_repo:more:var

等待

示例:

bkyaml wait\
    --continue-on-failure

将导致

-wait:continue_on_failure:true

触发器

示例:

bkyaml trigger 'my-pipeline'\
    --branches master '*-release'\
    --build-message 'My build message'\
    --build-commit c0ffee \
    --build-branch green \
    --build-env FORCE_COLOR 1\
    --build-meta-data release-name 1.0.0

将导致

-trigger:my-pipelinebranches:master *-releasebuild:branch:greencommit:c0ffeemessage:My build messageenv:FORCE_COLOR:'1'meta_data:release-name:1.0.0

阻塞

示例:

bkyaml block ':rocket: Release'

将导致

-block:':rocket:Release'

带有选择字段的示例:

bkyaml block ':rocket: Release!'\
    --field-select \
'key'\
'Field label'\
'Some hint'\
true\
        a \
'a=A label'\
'b=B label'

将导致:

-block:':rocket:Release!'fields:-text:Field labelkey:keyhint:Some hintrequired:truedefault:aoptions:-label:A labelvalue:a-label:B labelvalue:b

带有文本字段的示例:

bkyaml block ':rocket: Release!'\
    --field-text \
'release-name'\
'Release name'\
'What should the next release name be?'\
true\
'Some release name'

将导致:

-block:':rocket:Release!'fields:-text:Release namekey:release-namehint:What should the next release name be?required:truedefault:Some release name

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

推荐PyPI第三方库


热门话题
java JavaFX TableView更新单元格,不更新对象值   在扫描器中使用分隔符的java   java OkHttp 4.9.2,连接无法重用,导致端口耗尽   eclipse中的c JNI:运行Java代码   java是否在出厂的所有硬件设备中都有/mnt/sdcard/Android/data文件夹(或等效文件夹)?   Java,在eclipse中访问资源文件夹中的图像   java为什么Bluemix dashDB操作抛出SqlSyntaxErrorException,SQLCODE=1667?   JavaHtmlUnitWebClient。getPage不处理javascript   Google API认证的java问题   java如何将JSON数组反序列化为Apache beam PCollection<javaObject>   ServerSocket停止接收命令,java/安卓   来自Java类的安卓 Toast消息   java如何自动重新加载应用程序引擎开发服务器?   java是否可以尝试/捕获一些东西来检查是否抛出了异常?   java如何做到这一点当我按下load game时,它不仅会加载信息,还会将您带到游戏中?   Java选项Xmx代表什么?   Java映射,它在插入时打印值   设置“ulimit c unlimited”后,java无法生成系统核心转储