GoCD命令库

介绍

此功能是对GoCD中自定义命令的增强。 您现在可以选择从Go团队维护的有用命令存储库中查找命令,而不是从头开始创建命令名称和参数。 查找提供了一个起点,您可能需要编辑参数,指定工作目录等。一旦保存,行为与手动输入的自定义命令相同。 看看这个视频了解更多信息。

使用命令存储库

可以在需要指定自定义命令的任何位置使用此功能。

  • 添加一个新的管道

  • 为管道添加一个新阶段

  • 将新工作添加到舞台上
  • 将新任务添加到作业
  • 编辑任务

自定义命令和代理

Go不会检查您指定的命令在代理上是否可用。

在您希望运行的所有代理上安装相关命令。 如果它在默认路径中不可用,请将其添加到/ etc / default / go-agent或等效路径中。 这需要重新启动代理。

或者,从/ bin或等效文件夹创建一个到可执行文件路径的符号链接。 这不需要代理重新启动

参数样式的命令

此功能不支持较旧的[args](../ configuration / configuration_reference.md#exec)样式命令。 请使用config xml编辑器(Admin >Config XML)将它们转换为新语法。 例如:

<exec command="touch" args="a b c"/>

变成

<exec command="touch">
  <arg>a</arg>
  <arg>b</arg>
  <arg>c</arg>
</exec>

捆绑的存储库

默认的一组命令来自https://github.com/gocd/go-command-repo。 该存储库由Go团队维护。 Go服务器安装程序将此Git存储库的克隆捆绑在<server-install-root>/db/command_repository/default下。 Go Server的每次升级都将使用最新的一组命令覆盖此目录的内容。 因此,请不要在这里添加你的命令。 相反,请设置一个私有存储库

拉取更新

Go团队将继续向GitHub上的存储库添加(并且有时会更新)命令。 如果您希望在不等待新版本或不升级Go服务器的情况下使这些命令可用于Go服务器,则可以根据需要将它们拖入“/db/command_repository/default”。

Linux/Unix

以下是一个简单的crontab条目,您可以将它添加到Go服务帐户的crontab中,以便每天提取一次命令。

@daily cd < go-server-install-root >/db/command_repository/default;git pull >>/var/go/cronrun 2>&1

注意:不要以root/(administrators)管理员身份进行提取。 使用Go服务帐户。

Windows

在Windows上,您可以设置计划任务以按计划运行此脚本。

echo %date% %time% >>c:\pull-log.txt 2>&1
cd "C:\Program Files (x86)\Go Server\db\command_repository\default"
git pull >>c:\pull-log.txt 2>&1

以30分钟的刷新间隔缓存这些命令,因此,除非在服务器配置管理页面上的命令存储库部分下点击重新加载缓存按钮,否则您可能不会立即在查找中看到结果。

通过API

您可以对路径/go/api/admin/command-repo-cache/reload发出'POST'请求,以便用最新的命令更新命令库。

$ curl -u username:password -X POST -H 'Confirm: true' http://goserver.com:8153/go/api/admin/command-repo-cache/reload

私有存储库

如果你想添加你自己的查询命令,你应该建立你自己的Git/Mercurial/Subversion/Perforce/TFS库,让你的命令作者可以 提交/签入(commit/check-in into)。

<go-server-install-root>/db/command_repository/<your-repo-name>下创建一个克隆/工作副本。符号链接不受支持。然后将Go Server切换到此位置。要做到这一点,请转到 Admin 选项卡中 Server ConfigurationCommand Repository Management 部分,并更改 default

从Go服务器的角度来看,命令存储库仅仅是递归查找有效的command.xml文件的目录。 请注意,以点开头的目录名称将被忽略。

如果切换到自己的存储库,Go将不会从捆绑的存储库查找。你可以选择使用Go的捆绑命令集手动给你的私人命令仓库添加种子,如果你想让它们拥有你自己的命令。

建议的过程

1.命令作者向企业版本控制系统推送/检入命令

  1. Go-server上的Cron作业会在适当的时候提取/更新本地存储库/工作副本
  2. Go Server缓存命令以提高响应时间。 如果命令存储库发生更改,新命令将通过以下方式之一进入缓存:
    1. 30分钟的默认缓存失效间隔开始并且缓存被刷新 2.转到服务器管理员点击 RELOAD CACHE 按钮
    2. Go服务器管理员使用 reload API 通过cron作业或以其他方式强制高速缓存重新加载。

命令存储库中的命令不是您的Go Server配置的一部分。只有在您(可选)编辑并保存它们之后,它们才会成为Go服务器配置的一部分。

命令语法和查找逻辑

以上屏幕截图源于以下命令:

<!--
name: curl
description: Download from a protected Url and saveToFile
author: Go Team
authorinfo: http://support.thoughtworks.com/categories/20002778-go-community-support
keywords: curl, http, download, wget
moreinfo: http://curl.haxx.se/docs/manual.html
-->
<exec command="curl">
  <arg>-o</arg>
  <arg>saveToFile</arg>
  <arg>-u</arg>
  <arg>user:password</arg>
  <arg>http://targeturl</arg>
</exec>

这是有效的命令语法的一个例子。 该命令属性是强制性的。 没有其他属性是有效的。 可以指定零个或多个arg子元素。不允许其他子元素。 一个命令文件可能只包含一个命令。

请参阅README以获得完整的命令和文档语法

在查找命令时,使用以下逻辑对结果进行排序:

  1. 命令文档中名称的完全匹配(或名称缺失的文件名)
  2. 部分启动 - 命令文档中的名称匹配(或名称缺失的文件名)
  3. 在命令文档中完全匹配关键字

在每个类别中,排序都是按字母顺序排列的。

贡献命令

我们欢迎用户贡献的命令。 方法,

  1. fork this GitHub repo
  2. 克隆到你本地
  3. 提交和推送你的修改
  4. 向我们发起pull request

接受的命令将被捆绑到下一个版本中。

results matching ""

    No results matching ""