用于管理和自动化Red Hat软件版本的cli工具

rh-elliott的Python项目详细描述


Elliott-Errata工具自动化

elliott是自动化勘误表几个方面的工具 生命周期。这是因为勘误表/咨询过程有钩子 进入其他几个系统,并手动协调所有这些 乏味且容易出错。

目录

基础和术语

要想熟练地操作埃利奥特,首先要了解 我们使用的语言,以及一些勘误表过程。让我们 介绍一些基本知识。

  • Elliott是这个软件,写大写或小写 只要你记得它的结尾是two"t"s
  • 埃利奥特最初是由 萨姆·穆尼拉是 提到史蒂芬·斯皮尔伯格1982年的夏季大片, e.t.外星人
    • "et"也是引用勘误表工具的一种快捷方式,请立即查看连接?
  • 语法与同义词
    • 勘误表-是单词"勘误表"的单独版本
    • 勘误表-是复数形式,指"勘误表"的集合
    • 建议-是我们使用的另一个词,它可以替换 勘误表
      • 这个词主要用于人类的对话或印刷品中。 作为信息性消息("此错误已附加到 咨询RHBA-1337")
      • 在幕后,api和代码通常使用术语erratum
  • brew版本-nvrs(名称版本发布)和数字标识
    • 在子命令中交替使用nvr或数字生成id
    • 例如,apb-1.1.16-1.el7是构建的nvr 668623
    • 这是apb包,版本1.1.16,第一次发布(-1), 对于RHEL 7(.el7

当软件 首次发布或更新。为每个新的 在产品系列中发布或更新。建议包含对 其他公共和私人系统中的项目。

  • Bugzilla Bug被添加到Advisory中,它们的状态(verifiedon_qa等)会定期刷新,因为通知无法移动 转发以供发布,直到所有相关的错误都通过了测试
  • Brew RPM版本附加到Advisory,其中包含最新的 软件和错误修复
  • 签署RPM版本时,Brew映像(容器)版本是 使用新的/更新的并附加到一个单独的 咨询

设置和安装

pip安装rh elliott

认证

继续之前,请确保您有有效的kerberos票证。有效的 使用Elliott需要kerberos票证。请参阅以下链接 帮助您了解Red Hat的kerberos基础知识:

一旦你处理好了,你应该运行一个简单的命令 埃利奥特。我建议如下,它将验证您是否可以访问 通过尝试获取最近 创建的建议:

<elliott> $ ./elliott list
2018-11-20T04:23:44 NEW_FILES Red Hat OpenShift Enterprise Container Image Updates https://errata.devel.redhat.com/advisory/38040
2018-11-15T14:36:55 QE OpenShift Container Platform 3.5 images update https://errata.devel.redhat.com/advisory/37969
2018-11-13T01:17:33 QE OpenShift Container Platform 3.6 images update https://errata.devel.redhat.com/advisory/37911
2018-10-31T15:23:47 NEW_FILES Red Hat OpenShift Enterprise Container Image Updates https://errata.devel.redhat.com/advisory/37632
2018-10-18T11:11:25 NEW_FILES openshift3/jenkins-agent-nodejs-8-rhel7 Container Image Updates https://errata.devel.redhat.com/advisory/37441

用法

在这里,我们将介绍如何有效地使用Elliott。

注意:每个elliott<;foo>;命令都有一个完整的 详细的"帮助"页。这包括所有 选项。我们不会列出每个 命令在这里。这将集中在让你适应 基础.

获取-查看建议

您已经看到了如何列出最近创建的 带有列表的勘误表 使用get命令详细说明。

要开始,请复制从列表返回的一个id 命令,例如32916 上一个例子。我们将直接传递给get。你会 查看与以前相同的简短输出。

<elliott> $ ./elliott get 32916
2018-03-02T15:19:08 NEW_FILES TEST OpenShift Container Platform 3.5 bug fix and enhancement update https://errata.devel.redhat.com/advisory/32916

假设您需要有关此特定咨询的其他信息。在 在这种情况下,您可以为命令提供--json选项(这是 所有这些都记录在命令--help输出中:

<elliott> $ ./elliott get 32916 --json
{
  "diffs": {},
  "jira_issues": {
    "jira_issues": [],
    "id_field": "key",
    "id_prefix": "jira:",
    "idsfixed": [],
    "to_fetch": [],
    "type": "jira_issues",
    "errata": {
      "rhba": {
      "rating": 0,
      "rhnqa": 0,
	  ...

返回的json对象非常大,而且非常庞大。我推荐 如果您想修剪 输出。如果你想的话,把它放在传呼机里也不错 滚动它。例如,只查看内容 信息)从api返回,您可以使用.content过滤器 在jq中:

$ ./elliott get 32916 --json | jq '.content' | less
{
  "content": {
    "revision_count": 1,
    "packages": null,
    "errata_id": 32916,
    "description": "Red Hat OpenShift Container Platform is the company's cloud ...

创建-创建新的建议

与Elliott一起创建咨询只需要很少的投入 有关勘误表的细节。您必须提供:

  • 产品发布(openshift-3.y

将自动为您选择发布日期。但是,你可以 如果有问题,请重写此日期。这种咨询 必须指定。有效的选项包括rpmimage

注意:此命令不会在没有 明确说明。

下面是--help选项中的两个示例:

从现在起21天内预览RPM公告(默认发布日期) 对于OSE3.9。默认样板文本将打印到 以json对象的形式显示的屏幕,提交 到API:

<elliott> $ ./elliott --group openshift-3.9 create --kind rpm

在中的第一个星期一为3.5系列创建图像提示 行军。日期以简单的格式给出,最后我们 通过提供 --是选项:

<elliott> $ ./elliott --group openshift-3.5 create \
    --kind image \
    --date 2018-May-05 \
    --yes

更改状态-更改通知的状态

更改顾问的状态。例如,将顾问从 新的_文件错误和构建仍在添加到qe中 说明测试人员可以接管的位置。

在这里,我们将把示例测试建议32916从new_files移到 qe

<elliott> $ ./elliott change-state --state QE 32916

查找错误-查找Bugzilla错误,添加到建议中

Bugzilla bug可以自动附加到一个公告。钍保持不变 跟踪哪些记录的问题/增强包括在 当它上船时提供咨询。另外,重要的是要知道 在附加的错误被 在一定程度上得到证实。勘误表工具ui将显示 以百分比形式提供给您的信息,说明 每个状态都有附加的错误。

Bugzilla查询是为给定的产品版本构造的(例如: openshift-3.9)返回处于modified状态的错误。在 Bugzilla,这个modified状态表示工程师 编写代码来实现增强或修复特定的错误 关联的代码已合并到该组件git中 存储库。

从技术上讲,候选bug是处于modified状态的bug 其目标版本设置为提供的产品版本(GA 或异步更新)。

查找错误有两种操作模式:

  1. 自动查询bugzilla并附加所有发现的bug(作为 如上所述)
  2. 在命令行上手动提供错误ID

示例:自动查找openshift 3.9更新的bug(但是 不要附加它们)。请注意,我们不需要提供

<elliott> $ ./elliott --group openshift-3.9 find-bugs --auto
2018-03-19T17:49:44.573042 Searching group directory: /home/tbielawa/rhat/cd/enterprise-images/groups/openshift-3.9
2018-03-19T17:49:44.584135 Using branch from group.yml: rhaos-3.9-rhel-7
Would have added 7 bugs: 1537593, 1510212, 1519365, 1529482, 1550797, 1543647, 1551904

为了将bug添加到通知中,必须提供 作为--add选项的值进行提示:

<elliott> $ ./elliott --group openshift-3.9 find-bugs --auto --add 32916

可以使用--flag将标志添加到已识别的错误中 选项. < /P>

使用--id选项手动提供一个或多个错误。

有关其他示例和说明,请参见--help输出。

查找版本-查找brew RPM/image版本,添加到建议中

Brew RPM和图像生成可以附加到Advisory。正如我们注意到的 已经在create命令中,我们处理了两个不同的 咨询类型、转速和图像。在附加生成时,请确保 您正在将正确的版本附加到匹配的公告。

构建必须满足非常具体的标准,才能被认为是可行的 生成以添加到顾问中。例如,假设 --group=openshift-3.7,那么一个构建就是一个可行的构建 以下所有条件:

  • 在brew中有标记:rhaos-3.7-rhel7-candidate
  • 在brew中没有标记:rhaos-3.7-rhel7
  • 未连接到任何打开的RHBA、RHSA或RHEA

也就是说,一个可行的构建被标记为"候选",而不是 已收到"已发货"标签,且未附加到任何打开的 咨询(允许关闭咨询)。

下面是一个例子,说明我们如何查找 附加到3.6

<elliott> $ ./elliott list
2018-11-20T04:23:44 NEW_FILES Red Hat OpenShift Enterprise Container Image Updates https://errata.devel.redhat.com/advisory/38040
2018-11-15T14:36:55 QE OpenShift Container Platform 3.5 images update https://errata.devel.redhat.com/advisory/37969
2018-11-13T01:17:33 QE OpenShift Container Platform 3.6 images update https://errata.devel.redhat.com/advisory/37911
2018-10-31T15:23:47 NEW_FILES Red Hat OpenShift Enterprise Container Image Updates https://errata.devel.redhat.com/advisory/37632
2018-10-18T11:11:25 NEW_FILES openshift3/jenkins-agent-nodejs-8-rhel7 Container Image Updates https://errata.devel.redhat.com/advisory/37441
0

如果我们再次运行相同的命令并支持--attach选项 以有效的advisorynumber作为参数,然后发现 构建将附加到咨询而不是仅仅打印到 屏幕。

我们还可以使用 --build-b)选项。与自动发现一样,仍必须提供--kind{rpm,image}选项。

有关其他示例和说明,请参见--help输出。

数据源

Elliott依赖外部数据源为其提供咨询和搜索参数的样板 用于Bugzilla查询。这些数据以yaml文件的形式存储在本地,或者理想情况下存储在单独的 具有分支结构的git存储库与要使用的值匹配。

无论哪种情况,都必须使用--data path参数或其覆盖设置之一指向此数据源。

erratatool.yml

<elliott> $ ./elliott list
2018-11-20T04:23:44 NEW_FILES Red Hat OpenShift Enterprise Container Image Updates https://errata.devel.redhat.com/advisory/38040
2018-11-15T14:36:55 QE OpenShift Container Platform 3.5 images update https://errata.devel.redhat.com/advisory/37969
2018-11-13T01:17:33 QE OpenShift Container Platform 3.6 images update https://errata.devel.redhat.com/advisory/37911
2018-10-31T15:23:47 NEW_FILES Red Hat OpenShift Enterprise Container Image Updates https://errata.devel.redhat.com/advisory/37632
2018-10-18T11:11:25 NEW_FILES openshift3/jenkins-agent-nodejs-8-rhel7 Container Image Updates https://errata.devel.redhat.com/advisory/37441
1

bugzilla.yml

<elliott> $ ./elliott list
2018-11-20T04:23:44 NEW_FILES Red Hat OpenShift Enterprise Container Image Updates https://errata.devel.redhat.com/advisory/38040
2018-11-15T14:36:55 QE OpenShift Container Platform 3.5 images update https://errata.devel.redhat.com/advisory/37969
2018-11-13T01:17:33 QE OpenShift Container Platform 3.6 images update https://errata.devel.redhat.com/advisory/37911
2018-10-31T15:23:47 NEW_FILES Red Hat OpenShift Enterprise Container Image Updates https://errata.devel.redhat.com/advisory/37632
2018-10-18T11:11:25 NEW_FILES openshift3/jenkins-agent-nodejs-8-rhel7 Container Image Updates https://errata.devel.redhat.com/advisory/37441
2

测试

我通常使用此设置运行单元测试:

  • 切换到工具
  • 运行。./hack/env_setup.sh
  • 切换回存储库根目录

然后运行单元测试:

<elliott> $ ./elliott list
2018-11-20T04:23:44 NEW_FILES Red Hat OpenShift Enterprise Container Image Updates https://errata.devel.redhat.com/advisory/38040
2018-11-15T14:36:55 QE OpenShift Container Platform 3.5 images update https://errata.devel.redhat.com/advisory/37969
2018-11-13T01:17:33 QE OpenShift Container Platform 3.6 images update https://errata.devel.redhat.com/advisory/37911
2018-10-31T15:23:47 NEW_FILES Red Hat OpenShift Enterprise Container Image Updates https://errata.devel.redhat.com/advisory/37632
2018-10-18T11:11:25 NEW_FILES openshift3/jenkins-agent-nodejs-8-rhel7 Container Image Updates https://errata.devel.redhat.com/advisory/37441
3

添加或删除您希望的任何其他*\u test.py测试。

如果可以,您可以打开HTML覆盖率报告:

  • xdg open cover/index.html

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

推荐PyPI第三方库


热门话题
java限制C++代码访问JNI中的某些类   Android上的java DateFormat:不可解析的日期   通过json进行java迭代,并为其他请求调用多个API   Netbeans中的java JavaFX项目引发异常“输入流不能为null”   多线程Java newFixedThreadPool解释   |在java字符串中无法识别。split()方法   Java中的原始包装器类是否被视为引用类型?   Java swing。如何在intellij idea GUI设计工具中重写组件方法   数组乘矩阵   java将30GB的XML文件分割成小块XML   java通过一棵树递归找到一个节点,并返回指向该节点的路径   java如何将可观察的<Observable<List<T>>转换为可观察的<List<T>>   使用java在web服务器上更改php文件中的字符串?   java希望开发像tomcat这样的servlet容器   java希望提高编程的数学技能