用于与go连续交付交互的cli客户端
gocd-cli的Python项目详细描述
在过去的九个月里,我和同事们为工作写了很多 不同的带有curl的小型shell脚本,与go api交互。
其中大多数是快速的脏脚本,不太健壮,因为 他们是以现在的心态写的,我们只是复制+粘贴 到处都是。找出哪些api端点是可用的,以及它们是如何 工作等等。
这个项目的目标是让这些和类似的任务变得超级简单, 不用写这么可靠的bash脚本。最常见的是 只有一次召唤。
注
这仍然是早期的发展和有点粗糙的边缘。 任何错误报告、功能建议等都非常感谢。:)
我计划添加对所有api端点的支持,这些端点可以从cli中理解 观点。同时还要处理一些我们最后写下 外壳脚本。
安装和使用
安装
因为这是pypi上提供的python包,所以您可以像 任何其他python包。
# on modern systems with Python you can install with pip $ pip install gocd-cli # on older systems you can install using easy_install $ easy_install gocd-cli
用法 命令应该主要是自我记录它们的定义, 通过help命令提供。
$ gocd usage: gocd <command> <subcommand> [<posarg1>, ...][--kwarg1=value, ...] Commands: pipeline check: Check whether a pipeline has run successfully check-all: Checks all pipelines to be green/non-stalled list: Lists all pipelines with their current status pause: Pauses the named pipeline retrigger-failed: Retrigger a pipeline/stage that has failed trigger: Triggers the named pipeline unlock: Unlocks the named pipeline if it's currently locked unpause: Unpauses the named pipeline $ gocd help pipeline retrigger-failed retrigger-failed <name> [--counter] [--stage] [--retrigger] Retrigger a pipeline/stage that has failed Flags: counter: the pipeline counter to check. Default: latest stage: if given the pipeline will only be retriggered if this stage failed retrigger: possible values (pipeline, stage) default pipeline. When pipeline and there's a failed stage retriggers the pipeline. When stage and there's a failure retriggers only that stage. $ gocd pipeline retrigger-failed Integration --stage external-points --retrigger stage
配置
此脚本已准备好在两种情况下运行:
- 从本地机器
- 从内部开始
因此,配置由配置文件和 它可以被环境变量覆盖。
当前选项是:
server: | The server to connect to, example: http://go.example.com:8153/ |
---|---|
user: | The user to login as |
password: | The corresponding password |
配置文件存储在~/.gocd/gocd-cli.cfg中,是一个ini文件。 示例:
[gocd]server=http://localhost:8153/user=adminpassword=badger
环境变量的前缀是GOCD_,并且总是全部大写。 示例:
GOCD_SERVER=http://loaclhost:8153/ GOCD_USER=admin GOCD_PASSWORD=badger
加密的配置密钥
>;版本0.9支持加密配置密钥。 rot13或Caesar cipher有一个内置模块,以及 使用blowfish的独立模块称为gocd-cli.encryption.blowfish。
这个特性是为了处理一个非常特殊的用例而添加的,其中 GO服务器的密码不允许以明文存储。但是 如果解密密钥存储在同一台机器上就可以了。这个 内置实现将被视为一个参考实现,并且 不用了。但是,如果您只是需要它不是纯文本…
用法
要加密当前明文密码,请执行以下操作:
$ gocd settings encrypt --key password encryption_module= gocd_cli.encryption.caesar password_encrypted= fhcre frperg
将这两个值复制到~/.gocd/gocd-cli.cfg文件中并删除 旧的password,下次它将使用加密的密码。
解密:
$ gocd settings decrypt --key password encryption_module= gocd_cli.encryption.caesar password= super secret
编写自己的命令
这个项目使用namespaced packages,这意味着您作为 plugin/command author将使用 命令。
这有几个优点:
- 可以使用新命令动态更新cli,只需 安装python包以使其集成
- 内部/私有命令很容易与public一起使用 命令,无需为您的个人命令维护分叉
- 低输入以生成自己的命令
cli搜索命令的方式非常简单:
- 第一个参数是命令所属的包
- 第二个参数是要调用的类
- 所有未命名的参数的传递顺序与cli上的相同
- 任何--parameters都将删除破折号并作为关键字参数发送
要让它这样工作,有一个模式要遵守。对于每个包 __init__.py文件必须提供^{tt8}中的所有子命令$ 变量。每个命令都是一个类,它是 变量__all__。有一个例子gocd-cli.commands.echo 只有D最起码能说明这一切是如何运作的。
命令行上的子命令将被破折号分隔,这意味着 RetriggerFailed在命令行上将变成retrigger-failed。
$ gocd <command> <subcommand> posarg1 --kwarg1 # or how it's referred to in code $ gocd <package> <command class> posarg1 --kwarg1 # or when used $ gocd pipeline retrigger-failed Simple-with-lock --stage=firstStage \ --retrigger=stage
调用命令或子命令的帮助将列出所有可用的命令 关于每个命令的更多信息依次请求帮助。