用于与go连续交付交互的cli客户端

gocd-cli的Python项目详细描述


Coverage StatusBuild StatusLatest VersionDownloadsPython versionsPackage status

在过去的九个月里,我和同事们为工作写了很多 不同的带有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

配置

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

  1. 从本地机器
  2. 从内部开始

因此,配置由配置文件和 它可以被环境变量覆盖。

当前选项是:

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

调用命令或子命令的帮助将列出所有可用的命令 关于每个命令的更多信息依次请求帮助。

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

推荐PyPI第三方库


热门话题
我可以用C++代码使用java代码吗?   java使用JSR303在派生类中提供更具体的约束   java在这个查找唯一路径数算法中我做错了什么?   java如何为2个不同的服务提供商使用2个不同的SSL证书?   java在Gridview上绘制文本   java使用连接for循环构建字符串名   java StringBuilder拆分无法处理某些文件   java事件关注EditText   Java Web Start“找不到URL的缓存资源”   java程序从命令行运行的速度比在Eclipse中慢   java为什么HttpServletRequest会截断#字符上的url输入?   java自定义折叠工具栏平滑标题大小调整   使用Mockito对安卓 java中调用另一个静态函数的函数进行单元测试   http在java客户机中使用cachecontrol头   java如何使用。是否使用Delimiter从输入文件中排除标点符号和数字?   使用上下文作为参数/参数的java   java更有效地从Jar中提取文件   java为多个JButton提供相同的actionListener