跳转到主要内容

与Go持续交付交互的CLI客户端

项目描述

Coverage Status Build Status Latest Version Downloads Python versions Package status

在过去九个月中,我和同事们编写了很多不同的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

配置

此脚本已准备好在以下两种情况下运行

  1. 从您的本地机器

  2. 从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 (14.3 kB 查看哈希)

上传于

构建分发

gocd_cli-0.10.0-py2-none-any.whl (21.1 kB 查看哈希值)

上传于 Python 2

由以下支持