用于生成buildkite管道yaml的cli工具
bkyml的Python项目详细描述
一个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