与Go持续交付交互的CLI客户端
项目描述
在过去九个月中,我和同事们编写了很多不同的shell脚本,使用curl与Go API交互。
大多数脚本都是快速且不完美的,而且因为它们是根据现在的思维模式编写的,所以我们最终到处都是复制粘贴。同时,确定可用的API端点以及它们的工作方式等。
本项目目标是使这些和类似任务变得极其简单,而无需编写可靠性一般的bash脚本。对于最常见的事情,只需一次调用即可。
注意
这仍然是早期开发阶段,边缘略显粗糙。任何错误报告、功能建议等都非常受欢迎。 :)
我计划添加对从CLI角度有意义的所有API端点的支持。并且处理我们最终编写shell脚本的一些场景。
安装和用法
安装
由于这是一个在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
配置
此脚本已准备好在以下两种情况下运行
从您的本地机器
从Go内部
因此,配置由配置文件处理,并且可以通过环境变量覆盖。
当前选项包括
- server:
要连接的服务器,例如:http://go.example.com:8153/
- user:
登录用户
- password:
相应的密码
配置文件存储在 ~/.gocd/gocd-cli.cfg 中,是一个 ini 文件。示例
[gocd]
server = http://localhost:8153/
user = admin
password = badger
环境变量以 GOCD_ 为前缀,并且总是大写。示例
GOCD_SERVER=http://loaclhost:8153/
GOCD_USER=admin
GOCD_PASSWORD=badger
加密配置密钥
> 从版本 0.9 开始支持加密配置密钥。有一个内置的 Rot13 模块,或称凯撒密码,以及一个使用 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
编写自己的命令
此项目使用 命名空间包,这意味着作为插件/命令作者,您将通过自己的命令扩展官方命名空间。
这有几个优点
CLI 可以动态更新新命令,只需安装一个 Python 包即可将其集成
可以轻松地同时使用内部/私有命令和公共命令,无需为个人命令维护分支
制作自己的命令门槛低
cli 搜索命令的方式非常简单
第一个参数是命令所属的包
第二个参数是要调用的类
任何未命名的参数都以与 cli 相同的顺序传递
任何 --parameters 都会删除短划线,并以关键字参数的形式发送
为了使它这样工作,需要遵循一个模式。对于每个包,__init__.py 文件必须通过 __all__ 变量提供所有子命令。每个命令都是一个类,而那些类名就在 __all__ 变量中。有一个示例 gocd-cli.commands.echo,它仅执行最基本的功能,以展示所有这些是如何工作的。
子命令将在命令行上由短划线分隔,这意味着 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
调用命令或子命令的帮助将列出所有可用命令,有关每个命令的更多信息,请分别请求帮助。
项目详情
下载文件
下载适合您平台的文件。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。
源分布
构建分发
gocd-cli-0.10.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5b396ad0b379c3c449e014a3d1c9c9f7936167aafd104abe700f80d421244f47 |
|
MD5 | f2d5bb2841432a6371b139943a057e97 |
|
BLAKE2b-256 | c13b5e6b46ecb32491f94b5599737b7b4f8bd5da2372a4bfe796175db93fd0bd |
gocd_cli-0.10.0-py2-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 82e63e34963fec2eb42f64297021b4df4a88d8223564d4109ffccc073c0e5e53 |
|
MD5 | cb8dfd4f2711bca405012c5342f5bb15 |
|
BLAKE2b-256 | 33b79681f9665af6be4963220f5ef20561551ec924b3a6e572339886b1efcf8d |