精通-JIRA7-第二版-全-

精通 JIRA7 第二版(全)

原文:annas-archive.org/md5/fe15924287df2b0384eef25d5a410ffb

译者:飞龙

协议:CC BY-NC-SA 4.0

序言

JIRA 是 Atlassian 推出的一个流行的缺陷跟踪工具,具有出色的自定义能力和对各种功能的精细控制。开箱即用,JIRA 提供了问题和缺陷跟踪功能,能够创建任务、分配给用户并生成有用的报告。然而,JIRA 的真正强大之处在于它所提供的自定义功能。

有经验的 JIRA 管理员希望学习高级主题并扩展其知识的将从本书中受益。本书提供了对 JIRA 7 所有组件的全面解释,包括 JIRA Software、JIRA Core 和 JIRA Service Desk。

本书包含了实际案例和使用场景,你将首先学习如何规划 JIRA 安装。接着,你将快速回顾基础概念,并详细理解自定义内容,包括各种使用场景的示例数据,以及 JIRA 管理的各个方面,如用户管理、组、角色和安全级别,重点考虑企业应用。接下来,本书将带你学习如何进行插件开发,以扩展 JIRA 的功能,并介绍如何使用 REST API 在 JIRA 之上构建应用程序。还将讨论如何通过 CSV 文件从其他工具迁移数据。本书还专门有一部分内容,介绍 JIRA Service Desk 应用的实施,这是一个非常受欢迎的支持请求和票务系统插件。

本书还将讨论 Scrum 和 Kanban 技术的实施,以及敏捷报告。我们将介绍 Groovy 脚本,这是一种强大的工具,可以为 JIRA 管理员提供巨大的灵活性。此外,我们还将探讨一些常见的数据库表格,用于获取有用的结果,并讨论在 JIRA 实例中添加自定义 CSS 和 JavaScript 的可能性。最后,我们将通过最佳实践和故障排除总结本书,帮助你找出问题所在并解决它。

本书内容概述

第一章,规划你的 JIRA 安装,涵盖了如何规划 JIRA 安装,以确保安装的长期性,使其未来能够容纳更多用户和数据。本章还简要讨论了安装和更新过程。

第二章,在 JIRA 中搜索,详细解释了如何使用基本搜索功能从 JIRA 中获取数据,并通过编写高级查询使用 JQL。

第三章,报告 – 使用图表可视化数据,涵盖了 JIRA 中内置的各种项目报告,以及如何将它们展示在仪表板上。

第四章, 定制 JIRA 以进行测试管理,说明了如何修改配置以实现新的问题类型,用于测试活动和测试用例。还详细讨论了实施具有条件的新工作流程以及新权限方案的过程。

第五章, 理解 Zephyr 及其特性,详细演示了在 JIRA 中管理测试的流程实现。

第六章, 使用案例的示例实施,提供了许多不同实施的例子,例如帮助台系统和需求管理,读者可以在其公司中加以利用。

第七章, 用户管理、组和项目角色,解释了如何管理 JIRA 中的用户以及如何将它们组织成各种组。

第八章, 配置 JIRA 用户目录以连接 LDAP、Crowd 和 JIRA 用户服务器,讨论了如何将您的 JIRA 实例与 LDAP 和 Crowd 集成,用于外部用户管理。

第九章, JIRA 插件开发和利用 REST API,说明了如何开始为 JIRA 开发插件以扩展功能。还讨论了 JIRA REST API 的使用,该 API 使我们可以从外部工具访问 JIRA 功能,并提供了示例。

第十章, 在 JIRA 中导入和导出数据及迁移配置,讲述了如何使用 CSV 导入和项目导入功能从外部工具导入数据。本章还解释了定期备份的重要性以及从备份文件恢复 JIRA 的步骤。

第十一章, 在 JIRA 软件中使用敏捷看板,解释了如何在 JIRA 中实施 Scrum 和 Kanban 技术。详细讨论了在这些看板上进行 Sprint 计划以及各种定制功能,还介绍了跟踪项目进度的燃尽图和速度图表。

第十二章, 使用 Script Runner 和 CLI 插件进行 JIRA 管理,介绍了管理员可以安装的插件以及使用脚本进行的各种额外功能,这些功能帮助管理员进行各种定制,这些定制在其他情况下是不可能的。

第十三章,数据库访问,解释了如何直接从 JIRA 数据库中获取数据。本章包含了许多有用的查询,用于从数据库中检索信息。同时还解释了如何从嵌入的 HSSQL 数据库访问数据。

第十四章,定制外观、感觉与行为,讨论了如何通过自定义样式表对 JIRA 设计进行极端修改,同时还解释了如何使用 JavaScript 控制 HTML 字段。

第十五章,实施 JIRA Service Desk,解释了如何配置和设置 JIRA Service Desk 应用程序以处理您的支持请求。

第十六章,将 JIRA 与常见的 Atlassian 应用程序及其他工具集成,提供了如何将 JIRA 与 Confluence、SVN 和 Git 连接的信息。

第十七章,JIRA 最佳实践,讨论了 JIRA 管理员应牢记的各种事项,不仅仅是在实施 JIRA 之前,还包括他们在持续过程中应遵循的各种实践。

第十八章,故障排除 JIRA,介绍了识别实例中问题的各种方法。本章列出了人们在 JIRA 中常遇到的问题。

本书所需内容

要安装和运行 JIRA,需要以下软件和工具:

  • JIRA 7.1.1 或更高版本

  • MySQL 5.6 或更高版本

  • Java 1.8 或更高版本

  • PHP 5.4

  • Chrome 7 或更高版本

  • Firefox 4 或更高版本

在相关章节中,适用时会解释如何获取此软件及其使用方法。

本书适用人群

如果您是管理中小型 JIRA 实例的 JIRA 管理员,并且希望学习如何管理企业级实例,那么本书将帮助您扩展知识,并为您提供高级技能。需要先了解 JIRA 的核心概念。此外,基本的 CSS、JavaScript 和 Java 知识将有助于理解。

约定

本书中,您会看到多种文本样式,用来区分不同类型的信息。以下是这些样式的几个示例及其含义的解释。

文本中的代码词汇、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 账户名会按如下方式显示:“atlas-run-standalone 命令用于为您设置并启动 JIRA 实例。”

一段代码块如下所示:

#if ($mentionable)
 $!rendererParams.put("mentionable", true)
 #if ($issue.project.key && $issue.project.key != "")
 $!rendererParams.put("data-projectkey", "$!issue.project.key")
 #end
 #if ($issue.key && $issue.key != "")
 $!rendererParams.put("data-issuekey", "$!issue.key")
 #end
#end

任何命令行输入或输出如下所示:

atlas-mvn eclipse:eclipse

新术语重要单词 用粗体显示。在屏幕上看到的单词,例如在菜单或对话框中,文本中会像这样显示:“在菜单栏中,点击 Windows | Preferences。”

注意

警告或重要注意事项会以这样的框出现。

提示

提示和技巧将以这样的方式显示。

读者反馈

我们非常欢迎读者的反馈。告诉我们你对这本书的看法——你喜欢或不喜欢的部分。读者反馈对我们非常重要,因为它帮助我们开发出你真正能从中受益的书籍。如果你想给我们提供反馈,只需通过电子邮件发送至 feedback@packtpub.com,并在邮件主题中提及书名。如果你在某个领域有专长,且有兴趣写作或为书籍贡献内容,请参阅我们的作者指南:www.packtpub.com/authors

客户支持

现在你已经成为一本 Packt 书籍的骄傲拥有者,我们提供了一些帮助你最大化利用购买内容的资源。

下载示例代码

你可以从你的账户下载本书的示例代码文件,网址是 www.packtpub.com。如果你是从其他地方购买的本书,你可以访问 www.packtpub.com/support 并注册,将文件通过电子邮件直接发送给你。

你可以按照以下步骤下载代码文件:

  1. 使用你的电子邮件地址和密码登录或注册我们的官方网站。

  2. 将鼠标指针悬停在顶部的 SUPPORT 标签上。

  3. 点击 Code Downloads & Errata

  4. Search 框中输入书名。

  5. 选择你要下载代码文件的书籍。

  6. 从下拉菜单中选择你购买这本书的渠道。

  7. 点击 Code Download

下载完文件后,请确保使用最新版本的工具解压或提取文件夹:

  • WinRAR / 7-Zip for Windows

  • Zipeg / iZip / UnRarX for Mac

  • 7-Zip / PeaZip for Linux

本书的代码包也托管在 GitHub 上,网址为 github.com/PacktPublishing/Mastering-JIRA-7-Second-Edition。我们还提供了来自我们丰富书籍和视频目录中的其他代码包,地址是 github.com/PacktPublishing/。去看看吧!

下载本书的彩色图片

我们还为你提供了一份包含本书中所有截图/图表彩色图像的 PDF 文件。这些彩色图片将帮助你更好地理解输出的变化。你可以从 www.packtpub.com/sites/default/files/downloads/MasteringJIRA7SecondEdition_ColorImages.pdf 下载该文件。

勘误表

尽管我们已尽最大努力确保内容的准确性,但错误仍然可能发生。如果您在我们的书籍中发现错误——无论是文本错误还是代码错误——我们将非常感激您向我们报告。通过这样做,您不仅可以帮助其他读者避免困扰,还能帮助我们改进后续版本。如果您发现任何勘误,请通过访问 www.packtpub.com/submit-errata 提交,选择您的书籍,点击勘误提交表格链接,并填写勘误的详细信息。一旦您的勘误被验证,您的提交将被接受,勘误将被上传到我们的网站或添加到该书的现有勘误列表中。

若要查看先前提交的勘误表,请访问 www.packtpub.com/books/content/support 并在搜索框中输入书名。相关信息将出现在勘误表部分。

盗版

互联网版权材料的盗版问题在所有媒体中都是一个持续存在的问题。在 Packt,我们非常重视版权和许可证的保护。如果您在互联网上发现我们作品的任何非法副本,请立即向我们提供该地址或网站名称,以便我们采取相应措施。

请通过电子邮件联系 copyright@packtpub.com,并提供涉嫌盗版材料的链接。

感谢您帮助我们保护作者的权益,以及我们继续为您提供有价值内容的能力。

问题

如果您对本书的任何方面有问题,可以通过 questions@packtpub.com 联系我们,我们将尽力解决问题。

第一章:规划您的 JIRA 安装

Atlassian JIRA 是一个专有的问题追踪系统。它用于跟踪错误、解决问题和管理项目功能。市场上有许多类似的工具,但 JIRA 的最大优势在于它可以轻松配置,并提供广泛的自定义选项。默认情况下,JIRA 提供缺陷/错误跟踪功能,但也可以定制成帮助台系统、简单的测试管理套件或具有端到端可追溯性的项目管理系统。

本章简要介绍了 JIRA 及其新特性,主要包括三个版本:JIRA CoreJIRA SoftwareJIRA Service Desk。重点介绍了 JIRA 的规划、安装和设置。阅读完本章后,您应该了解如何规划您的 JIRA 安装,并确保其安装的可持续性,以便未来可以容纳更多的用户和数据。我们将从一个问卷开始,您需要在公司部署 JIRA 实例之前回答这个问卷。您将了解运行 JIRA 所需的系统和硬件要求。Windows 和 Linux 操作系统的安装程序简要讨论,本章详细解释了设置向导。

本章涵盖的内容包括:

  • JIRA 7 的新特性是什么?

  • 规划您的 JIRA 安装

  • 系统要求

  • 设置 MySQL 数据库

  • JIRA 设置向导

  • JIRA 目录结构、启动/关闭脚本和日志文件

  • 规划您的升级

  • 更新 JIRA 插件

  • 应用、用途和示例

  • JIRA 核心概念

JIRA 7 的新特性是什么?

备受期待的 JIRA 7 于 2015 年 10 月发布,现在提供三种不同的应用版本:

  • JIRA Core

  • JIRA 软件

  • JIRA 服务台

让我们分别讨论其中的每一个。

JIRA Core

这包括您可能熟悉的 JIRA 基础应用,当然也有一些新特性。JIRA Core 是 JIRA 功能的简化版本,我们一直在使用,直到 6.x 版本。

JIRA 软件

这包括 JIRA Core 和 JIRA Agile 的所有功能。从 JIRA 7 开始,JIRA Agile 将不再作为插件提供,您将无法从市场中安装 JIRA Agile。

JIRA 服务台

这包括 JIRA Core 和 JIRA 服务台的所有功能。与 JIRA 软件一样,JIRA 服务台将不再作为插件提供,您不能从市场中安装它。

Atlassian 进行的这一应用拆分是考虑到 JIRA 在全球各地不同组织中的使用情况,它使得公司能够轻松选择适合其需求的正确应用程序。然而,这并不意味着所有三个应用程序(JIRA Core、JIRA Agile 和 JIRA Service Desk)不能在同一实例上使用。您完全可以购买 JIRA Software,并在其上安装 JIRA Service Desk 应用程序。

除了这种拆分外,JIRA 7 还带来了新功能,例如 发布中心,可以实时查看版本状态、改进的侧边栏(您可以添加自己的快捷方式)、更好的报告功能以及更好的开发工具可见性。我们将在本书的相关章节中讨论并重点介绍这些改进。

在本书中,我们将安装内置有 JIRA Agile 的 JIRA Software,稍后我们将安装 JIRA Service Desk。

规划您的 JIRA 安装

在安装 JIRA 到生产阶段并进行部署之前,有一些要点需要牢记。这里讨论的要点理想情况下应该成为您的 JIRA 问卷的一部分,您将在与产品负责人和项目经理讨论后准备并填写此问卷。这不仅有助于您规划当前的安装,还能为您提供有关工具未来使用情况的良好预估。

从一开始,就开始准备文档以存储以下所有信息:

  • 用户数量:这是 JIRA 管理员最需要关注的事情。如果您在 JIRA 中使用的是有限的用户许可证,则应该知道目前使用 JIRA 的用户数量,以及几个月后将使用它的用户数量。在企业系统中,许可证中没有对访问系统的活跃用户数量进行定义的限制,但重要的是要关注这里讨论的各个方面:

    • 用户是属于一个团队还是多个团队?也可以将 JIRA 实例的有限访问权限提供给客户和第三方供应商。

    • 如果用户属于多个与不同小组合作的团队,那么是否需要限制这些小组内部项目的可见性?

  • 项目数量:JIRA 许可证不会对项目数量进行限制。无论是使用 10 用户的许可证还是 100 用户的许可证,都可以创建任意数量的项目。项目数量越多,数据库中将存储大量问题,管理员需要管理大量方案。了解预计将在 JIRA 中存储的项目数量是有帮助的。

  • JIRA 服务器硬件推荐:运行 JIRA 所需的硬件取决于多个变量,例如用户数量、项目数量、流量以及 JIRA 中使用的方案数量:

    • 对于大约 50 个项目和 100 个用户,问题数少于 5000,建议配置 16 GB RAM 和多核 CPU。

    • 对于大约 100 个项目和 3,000 个用户,且问题数少于 100,000—32GB RAM,2 个 Intel (R) Xeon (R),CPU E5520 @ 2.27 GHz(16 个逻辑核心)处理器。

    • Atlassian 提供了推荐的规模指南。更多信息请参考以下网址:confluence.atlassian.com/enterprise/jira-sizing-guide-461504623.html

  • 你需要 JIRA 中的邮件通知吗?:你是否希望向用户发送电子邮件通知?JIRA 能够在各种事件发生时向用户发送电子邮件,例如创建、更新和解决问题。为了发送电子邮件,需要一个 SMTP 服务器。JIRA 还可以与 Google Apps for Work 配置;只需输入用户名和密码即可启用通知。也可以使用专用电子邮件创建问题并发布评论。通过 JIRA 中的电子邮件处理程序,可以配置此功能,以便用户无需启动 JIRA 就能在他们被分配的票证上发表评论;他们只需回复从 JIRA 收到的电子邮件即可。

  • 身份验证:JIRA 有自己的内部目录用户管理系统,其中存储了用户的信息。默认情况下,在安装 JIRA 时启用此功能。也可以使用目录服务器如 LDAP 进行身份验证、用户和组管理。在大型组织中使用大量工具时,集成的身份验证机制至关重要,这样最终用户就不必记住多个密码。

  • JIRA 能否在多个位置使用?:了解用户的地理位置以及他们将从哪里访问 JIRA 实例是很重要的。选择 JIRA 服务器在这里变得尤为重要;应该从所有这些位置进行延迟检查,服务器的位置应当能够为所有访问它的用户提供最佳性能。作为 JIRA 管理员,你的责任是执行性能常规维护活动,比如在 JIRA 中进行索引。你应该了解在用户较少连接系统的时间窗口。

  • 系统将有多少并发用户访问?:如果一个地理位置有成千上万的用户,他们可能会同时访问系统。这将导致性能下降。虽然提前了解白天的峰值使用情况非常重要,但仍有各种性能提升措施可以进行优化。

  • 每个项目大概能存储多少个问题?:与所有产品相关方讨论工具的使用情况。你应该有足够的存储空间来容纳大量数据。当然,作为管理员,你应当对使用情况有一定了解。一个项目可以有数千个问题,而且这些问题可能会有文件附件。定期检查空闲磁盘空间。

  • 初步估算,系统最多可以存储多少个问题?:JIRA 索引有助于提高搜索结果。然而,完成此过程可能需要几分钟,并且最好在工具使用较少时进行。一个问题数量少于 100,000 的 JIRA 实例可能需要 10-15 分钟才能完成,因此在宣布停机之前需要考虑这一点。了解系统中将存在多少问题有助于做出更好的决策。

  • 用户是否还会在他们的项目中上传附件?:JIRA 的开箱即用概念提供了将文件与问题一起附加的功能。当然,这是一个理想的功能,每个人都希望能够使用它。所有附件都存储在磁盘上。也许出于某些合理的原因,你不需要这个功能,因此最好先与产品利益相关者讨论这个问题。

  • 你打算创建多少个自定义字段?:理想情况下,所有的方案和配置应该在实施前就进行文档化,但清楚地了解你在系统中需要创建多少个自定义字段总是很有帮助的。

  • 平台和数据库的选择:JIRA(作为一个纯 Java 应用程序)可以安装在 Windows 或 Linux 操作系统上。它需要一个 JDK 或 JRE 环境来运行。如果你的 IT 团队更习惯使用 Windows 和 SQL,那么可以选择 Windows。Linux 有一些优势(如 SSH)并且更适合开源工具(如 Postgres 或 MySQL)。

  • 与其他工具的集成:JIRA 可以与来自 Atlassian 和其他常用软件开发工具的很多工具进行集成。你是否需要与 Confluence、FishEye/Crucible、Bamboo、Git 或 SVN 集成?在一开始就考虑这些可能的集成。

    一般来说,为了获得最佳性能,大多数人首选 Linux-RedHat 或 CentOS 作为首选的发行版。首选数据库是 MySQL 和 Postgres。

提示

欲了解更多关于支持平台的信息,请访问 Atlassian 上的以下文档:confluence.atlassian.com/display/JIRA/Supported+Platforms

在 Windows 上安装 JIRA

JIRA 可以通过自动化的 Windows 安装程序轻松安装。如果你使用这种方法,则无需单独设置 JDK;安装程序会为你配置好。以下是在 Windows 上安装 JIRA 的步骤:

  1. www.atlassian.com/software/jira/download 下载适用于你的平台和架构的JIRA Windows 安装程序.exe)文件。

  2. 运行可执行文件,在下一步中选择快速安装,以使用 JIRA 的默认设置进行安装;不过,建议进行自定义安装,你可以指定安装 JIRA 的目标目录、JIRA HOME 目录和 TCP 端口。我们推荐自定义安装

  3. 你还将获得将 JIRA 安装为服务的选项。

  4. 安装 JIRA 后,它将在浏览器中自动启动以运行设置向导。

提示

参考 confluence.atlassian.com/display/JIRA/Installing+JIRA+on+Windows 了解在 Windows 上安装 JIRA 的详细步骤。

在 Linux 上安装 JIRA

就像 Windows 安装程序一样,你也可以使用控制台向导轻松地在 Linux 操作系统上安装 JIRA:

  1. www.atlassian.com/software/jira/download 下载适用于你平台和架构的 JIRA Linux 64 位/32 位安装程序(.bin)文件。

  2. 打开 Linux 控制台并将目录(cd)更改为 .bin 文件所在的目录。

  3. 如果尚未完成,使用 chmod a+x atlassian-jira-X.Y.bin 命令将 .bin 文件设为可执行。

  4. 执行 ./atlassian-jira-X.Y.bin 文件。

  5. 在下一步中,选择快速安装以使用默认设置安装 JIRA。然而,我们推荐选择自定义安装,在该方式下你可以指定 JIRA 的安装目录、JIRA HOME 目录以及 TCP 端口。我们推荐选择自定义安装

  6. 你还将获得将 JIRA 安装为服务的选项。

  7. 在安装过程完成后,JIRA 会在浏览器中自动启动,运行设置向导。

提示

参考 confluence.atlassian.com/display/JIRA/Installing+JIRA+on+Linux 了解在 Linux 上安装 JIRA 的详细步骤。

将 JIRA 安装为服务

如果你以系统管理员身份运行 Windows 或 Linux 安装程序,你将获得将 JIRA 安装为服务的选项。这对于 JIRA 管理员非常方便,因为可以将服务配置为在服务器启动时自动启动;否则,每次启动服务器时,你都需要手动启动 JIRA。

从归档文件安装 JIRA

如果你想在 Solaris 上安装 JIRA,它没有自动安装程序,必须按照以下步骤从归档文件安装 JIRA:

  1. 下载并解压 JIRA 归档文件。

  2. 设置 JIRA 主目录。

  3. 在操作系统上创建一个专门的用户账户来运行 JIRA。

  4. 使用 start-jira.sh 文件启动 JIRA。

  5. 运行设置向导。

提示

有关如何从归档文件安装 JIRA 的详细说明,请参考 confluence.atlassian.com/display/JIRA/Installing+JIRA+from+an+Archive+File+on+Windows%2C+Linux+or+Solaris

系统要求

JIRA 需要在服务器的操作系统上安装Java 开发工具包JDK)或Java 运行时环境JRE)平台。

安装 JDK 的步骤

如果您从归档文件安装 JIRA,那么 JDK 需要单独在您的系统上安装和配置。Windows 安装程序和 Linux 安装程序不需要安装 JDK,因为这些安装程序自带 JDK。

您可以从 www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 下载 JDK。

选择与您的操作系统和架构相关的版本。JIRA 7 需要 JDK 1.8 才能顺利运行。

在 Windows 上安装 JDK 的步骤如下:

  1. 卸载您系统上安装的任何早期版本的 Java。

  2. 重启系统。

  3. 使用下载的安装程序,您可以将 JDK 安装到 C:\java(请勿安装到 C:\Program Files\)。将创建一个特定于 JDK 的目录,例如 C:\Java\jdk1.8.0_92

  4. 设置 JAVA_HOME Windows 环境变量。它应该指向 JDK 安装目录,例如 Windows 机器上的 C:\Java\jdk1.8.0_92

  5. 重启系统。

在 Linux 上安装 JDK 的步骤

使用前一节中提供的链接,下载 JDK RPM 安装程序 jdk-8u92-linux-x64.rpm,并安装到您选择的位置。

设置 JAVA_HOME 变量为 export JAVA_HOME = /path/to/java

设置 MySQL 数据库

JIRA 需要将其数据存储在数据库中。为此,我们将设置一个 MySQL 数据库。JIRA 7 需要 MySQL 5.1 到 5.6 版本才能顺利运行。您应参考以下页面中描述的推荐 MySQL 服务器配置:confluence.atlassian.com/jira/connecting-jira-to-mysql-185729489.html

也可以使用 PostgreSQL、Oracle 或 Microsoft SQL Server 配合 JIRA,但在这里我们将讨论如何设置 MySQL 数据库:

  1. 使用以下命令登录到 MySQL 服务器:

    mysql -u root -p
    
    
  2. 输入密码。

  3. 使用以下命令创建一个新的数据库供 JIRA 使用:

    Create database jiradb character set utf8 COLLATE utf8_bin;
    
    
  4. 创建一个新用户并授予其数据库权限:

    GRANT SELECT,INSERT, UPDATE,DELETE,DROP,CREATE,ALTER,
            INDEX on jiradb.* TO 
            'jirauser'@'localhost' IDENTIFIED BY 'password';
    
    
  5. 使用以下命令刷新权限:

    flush privileges;
    
    

我们已创建一个 MySQL 数据库,名称为 jiradb,数据库用户名为 jirauser,数据库密码为 password。请保管好这些信息,因为我们在设置 JIRA 时需要使用这些信息。

提示

要在 JIRA 中使用 MySQL,您需要下载一个 mysql-connector-java-5.1.32-bin.jar 数据库驱动并将其复制到 JIRA 安装目录下的 lib 文件夹中。您可以从 dev.mysql.com/downloads/connector/j 下载该驱动。

JIRA 设置向导

让我们来看一下 JIRA 安装过程中的步骤:

  1. 无论您是使用自定义安装程序还是归档文件安装 JIRA,JIRA 都会首先在浏览器中启动,并进入设置向导。JIRA 设置向导

  2. 向导将提供两个选项——为我设置我自己设置。选择我自己设置,然后点击下一步按钮。JIRA 设置向导

  3. 数据库设置屏幕中,选择数据库连接我自己的数据库JIRA 设置向导

  4. 由于我们要使用 MySQL 数据库,请选择MySQL作为数据库类型。如果您想评估 JIRA,还可以选择内置(用于评估或演示)作为数据库;JIRA 使用的是HyperSQL 数据库HSQLDB),仅用于测试目的。

  5. 输入您的 MySQL 服务器主机名端口数据库名称、数据库用户名密码。您可以点击测试连接按钮检查凭证是否正确。点击下一步按钮继续。JIRA 设置向导

  6. 现在,输入此实例的应用程序标题。选择私有作为模式,此时仅管理员可以创建账户。如果希望用户自行注册,请选择公开。输入基础 URL,用户将使用此 URL 访问该实例。您也可以稍后更改,并使用域名或子域名,例如jira.company.com作为基础 URL。点击下一步按钮继续。JIRA 设置向导

  7. 指定您的许可证密钥部分,您需要输入可以从my.atlassian.com生成的许可证密钥,或者直接点击生成 JIRA 试用许可证链接,系统将跳转到 Atlassian 网站,您可以为实例的服务器 ID生成新评估许可证。生成后,您将返回实例页面,并且许可证密钥已经填入。点击下一步按钮继续。JIRA 设置向导

  8. 现在我们需要设置管理员账户。输入您的全名电子邮件地址用户名密码。不要忘记这个凭证,因为该账户将拥有 JIRA 实例的完全管理员访问权限。JIRA 设置向导

  9. 最后,我们有选择设置电子邮件通知的选项。如果公司中有 SMTP 服务器,可以使用它。对于本示例,我们使用了服务提供商作为Google Apps Mail / Gmail。配置非常简单。只需输入您的 Google Apps用户名密码。无需更改任何其他设置。您可以点击测试连接按钮以验证凭证并与电子邮件服务器通信。

  10. 点击完成按钮以完成设置向导和 JIRA 安装。JIRA 设置向导

  11. 在接下来的屏幕中,向导会询问您选择首选语言。选择语言并点击继续按钮。JIRA 设置向导

  12. 在接下来的屏幕中,你将看到 JIRA 快速导览。你可以多次点击 下一步 按钮来完成快速导览,或者点击右上角的 跳过快速导览链接。JIRA 设置向导

  13. 现在,你将自动登录并进入 系统仪表盘

JIRA 目录结构、启动/关闭脚本和日志文件

JIRA 管理员需要非常了解 JIRA 目录结构,因为你将经常需要备份、修改配置文件和恢复系统。所有这些操作都需要在服务器上进行,并且必须通过相应的目录来完成。

JIRA 安装目录

JIRA 安装目录是提取 JIRA 应用程序文件和库的目录。JIRA 不会在此处进行更改,也不会保存任何数据。

如果你通过自动化的 Windows 或 Linux 安装程序安装 JIRA,则 JIRA 安装目录存储在以下位置:

  • WindowsC:\Program Files\Atlassian\JIRA

  • Linux/opt/atlassian/jira

启动和关闭脚本位于 JIRA 安装目录下的 bin 目录中:

  • 启动脚本bin/start-jira.bat 或 bin/start-jira.sh

  • 关闭脚本bin/stop-jira.bat 或 bin/stop-jira.sh

JIRA 主目录

JIRA 主目录包含 JIRA 正常工作所需的重要文件。不要修改这些文件

如果你通过自动化的 Windows 或 Linux 安装程序安装 JIRA,JIRA 主目录的默认位置存储在以下位置:

  • WindowsC:\Program Files\Atlassian\Application Data\JIRA

  • Linux/var/atlassian/application-data/jira/

JIRA 主目录下的子目录

以下是 JIRA 主目录下的子目录列表:

  • data:JIRA 实例的应用数据存储在这里。附件及其所有版本存储在名为 attachments import 的子目录中。如果你想恢复 JIRA,备份文件需要放置在此目录中。

  • export:此目录用于存储自动备份文件。

  • log:日志文件存储在这里。

  • cache:缓存文件存储在这里。

  • tmp:在各种运行时操作(如导入、导出和索引)过程中,会生成一些临时文件。所有这些文件都存储在这里。

升级规划

你应该预期在升级过程中会遇到问题,因此,遵循以下步骤:

  1. 设置暂存环境。这可以是你的生产环境的克隆。确保你的 JIRA 实例的许可证有效。

  2. 创建所使用插件的兼容性矩阵。检查这些插件在新版本中是否有可用的升级。还要检查你的附加组件的许可证。

  3. 检查发布说明以了解 bug 修复和可能的问题。

  4. 首先在暂存环境中执行升级。

  5. 首先进行用户验收测试UAT),最好是与公司的经理或利益相关者一起进行,用户数应有限。

  6. 收集反馈并进行评审。

  7. 如有任何问题,请向 Atlassian 提交工单。如果你拥有有效的许可证,他们将提供帮助。

提示

在升级之前,请始终备份你的 JIRA 安装目录、JIRA 主目录和数据库。

升级你的 JIRA 实例

升级 JIRA 有几种不同的方法。你选择使用的方法取决于你使用的 JIRA 版本以及你使用的环境类型。

适用于关键业务应用的回退方法

当 JIRA 用于那些对业务至关重要的公司时,建议使用此方法,因为它允许你安全地回滚到先前的工作版本。按照以下步骤准备生产实例:

  1. 准备一个代理服务器。

  2. 安装并测试升级后的版本。

提示

参考 confluence.atlassian.com/display/JIRA/Upgrading+JIRA+with+a+Fallback+Method 获取有关使用回退方法升级 JIRA 的更多信息。

使用安装程序的快速方法

如果你可以接受几分钟的停机时间,且停机不会对业务产生影响,那么建议使用这种方法,它相当简单。只需要你在现有安装的应用程序上再次运行安装程序:

  1. 记下自定义的变更。

  2. 备份你的数据库。

  3. 运行 JIRA 安装程序并选择升级选项。

如果你已经修改了一些文件(例如setenv.bat)或有自己的 CSS 和 JavaScript 文件或代码,那么你需要在升级后的系统中重新进行这些更改。

提示

参考 confluence.atlassian.com/display/JIRA/Upgrading+JIRA+Using+a+Rapid+Upgrade+Method 获取有关使用 RAD 方法升级 JIRA 的更多信息。

Solaris 手动升级方法

使用快速方法,你可以轻松地升级 JIRA。然而,有些情况下你无法使用安装二进制文件。例如,如果你要在 Solaris 上安装 JIRA,Atlassian 并不提供支持的二进制文件,但你可以使用以下方法,通过 Web 应用程序归档WAR)分发文件在 Solaris 上安装 JIRA:

  1. 备份你的数据库和 JIRA 安装目录。

  2. 安装新版本。

  3. 将你新安装的 JIRA 实例指向 JIRA 当前主目录的副本。

  4. 配置 JIRA 的新版本以使用一个新的空白数据库。

  5. 最后,通过新安装的 JIRA 实例的恢复功能导入你 JIRA 的旧数据。

提示

参阅 confluence.atlassian.com/display/JIRA/Upgrading+JIRA+Manually 了解有关手动升级 JIRA 的更多信息。

更新 JIRA 插件

JIRA 有很多可以从市场上安装的插件。插件扩展了 JIRA 的功能。许多优秀的插件可以从 Atlassian 及其他提供商处获得。由于 JIRA 的快速发展,这些插件可能是新功能的开发。为了修复 bug,这些提供商不断发布插件版本更新。定期更新这些插件是个不错的主意。但建议你先在测试环境中进行升级测试。

进入 管理插件 部分,检查你的插件是否有可用的更新。JIRA 内置的通知系统也会在有插件更新时通知你。然而,理想情况下,这些更新应首先在测试环境中进行,最好是与生产环境相同的预发布服务器上。

只有当插件的新版本在你的测试环境中运行正常时,才可以在生产环境中更新它。你可以尝试使用以下方法之一来更新插件:

  • 更新插件到新版本

  • 更新所有插件

  • 通过上传文件更新插件

  • 启用自动插件更新

提示

更新插件的详细步骤可以在 confluence.atlassian.com/display/UPM/Updating+add-ons 中找到。

我们建议逐个更新插件。一次性更新所有插件可能会出现问题,而且你可能不知道是哪个插件的更新引起了问题。

JIRA 插件兼容性矩阵

作为一个好的实践,始终跟踪当前安装的所有插件、它们的当前版本、它们与已安装的 JIRA 的兼容性以及任何已知问题。

在计划更新任何插件之前,始终更新兼容性矩阵:

插件 安装版本 收费或免费 与 JIRA 6.3.6 兼容? 备注
JIRA Agile 6.6.0 收费
Clone Plus Plugin 4.0.0 收费
JIRA Suite Utilities 1.4.9 免费

在 Atlassian 市场上有很多插件可以选择,但不要无缘无故地安装太多插件。如果你正在寻找 JIRA 中的新功能,且它作为插件提供,始终通过验证下载量来查看有多少人在使用它;还有用户评分,它能让你对该插件有一个大致了解。如果你决定购买插件,那么也要检查插件提供商。

应用程序、用途和示例

自定义 JIRA 的能力是它在众多使用它的公司中受欢迎的原因。JIRA 有多种应用场景:

  • 缺陷/bug 跟踪

  • 变更请求

  • 服务台/支持工单

  • 项目管理

  • 测试用例管理

  • 需求管理

  • 流程管理

让我们来看看测试用例管理的实现:

  • 问题类型:

    • 测试活动:这将是标准问题类型

    • 测试用例:这将是一个子任务

  • 测试活动的工作流:

应用、用途及示例

  • 新状态:

    • 已发布

    • 执行中

  • 条件:

    • 测试活动只有在所有测试用例通过时才会通过

    • 只有报告者可以将此测试活动移至关闭

  • 后置操作:

    • 当测试活动关闭时,向特定组中的每个人发送电子邮件
  • 测试用例的工作流:

应用、用途及示例

  • 新状态:

    • 被阻塞

    • 通过

    • 失败

    • 审核中

  • 条件:

    • 只有被指派的用户才能将测试用例移至通过状态
  • 后置操作:

    • 当测试用例被移动到失败状态时,将问题优先级更改为“重大”
  • 自定义字段:

名称 类型 字段配置
类别 选择列表
客户名称 选择列表
重现步骤 文本区域 必填
预期输入 文本区域 必填
预期输出 文本区域 必填
前置条件 文本区域
后置条件 文本区域
活动类型 选择列表 单元功能耐久性基准测试健壮性安全性向后兼容性与基准线认证
自动化状态 选择列表 自动化手动部分自动化

JIRA 核心概念

让我们来看看 JIRA 的架构;这将帮助你理解核心概念:

JIRA 核心概念

  • 项目类别:当 JIRA 中的项目过多时,将它们分成不同的类别变得至关重要。JIRA 允许你创建多个类别,这些类别可以代表公司中的业务单元、客户或团队。

  • 项目:JIRA 项目是问题的集合。你的团队可以使用 JIRA 项目来协调产品开发、跟踪项目、管理帮助台等,具体取决于你的需求。

  • 组件:组件是项目的子部分,用于将项目中的问题分组为更小的部分。

  • 版本:版本是项目的一个时间点。它们帮助你安排和组织发布。

  • 问题类型:JIRA 允许你创建几种不同的问题类型,存储不同类型的信息。JIRA 默认提供了如 bug、任务和子任务等问题类型,但你可以创建更多的问题类型,这些类型可以有自己的工作流和不同的字段集。

  • 子任务:问题类型分为两种——标准类型和子任务,子任务是标准任务的子项。例如,你可以将“测试活动”作为标准问题类型,将“测试用例”作为子任务。

概要

在本章中,我们讨论了在公司实施 JIRA 前需要规划的事项,了解了 JIRA 未来的使用方式,以及它如何帮助 JIRA 管理员选择合适的硬件。我们还详细讨论了 JIRA 的安装及其各种升级方式。最后,我们简要讨论了一些可能的 JIRA 使用场景。

在下一章,我们将了解如何搜索问题。JIRA 配备了强大的搜索机制,帮助用户轻松找到他们所需的信息。JIRA 具有一种查询语言,称为JIRA 查询语言JQL),用于高级搜索。我们还将讨论如何将搜索查询保存为过滤器,便于以后再次使用。

第二章:在 JIRA 中搜索

本章详细解释了如何从 JIRA 中获取数据。数据可用于分析、报告和采取适当的行动。问题导航器窗口提供了一种非常简便的机制来搜索问题,但也可以使用JIRA 查询语言JQL)编写查询来细化搜索结果。你将学习如何将搜索结果保存为筛选器和图表,并将其添加到仪表板中。此筛选器和图表可以与其他用户共享,还可以作为各种小部件的数据源。

我们将覆盖以下主题:

  • 问题导航器窗口

  • 搜索问题

  • 筛选器和订阅

  • JQL 简介

  • 浏览器快捷键

  • 以 Excel、RSS、XML 和 JSON 格式导出问题

问题导航器窗口

JIRA 提供了一个强大的功能,让你快速查找问题并采取行动。例如,你可以使用以下 JQL 查询轻松查找名为cristata的项目的所有 bug(这些 bug 在过去两周内一直处于打开状态):

project = CSTA AND issuetype = Bug AND created >= -2w 

上面的查询是用 JQL(JIRA 中的查询语言)编写的。如果你是 JIRA 的新手,也可以使用基本搜索功能来查找问题,无需学习 JQL。此外,学习 JQL 并不困难。

你可以从基本搜索切换到高级搜索来处理前面的查询。让我们先来看一下问题导航器窗口中基本搜索提供的功能。

从顶部菜单栏点击问题 | 搜索问题,如下图所示:

问题导航器窗口

搜索问题

现在你将进入问题导航器,默认视图为详细视图

搜索问题

详细视图窗口中,问题的更多信息会显示出来,比如详情描述受理人报告人工作流按钮,可以将问题转换为另一个可用状态。你可以快速浏览问题并查看屏幕中央的相关信息。

列表视图不会显示太多信息。问题以表格的形式显示。你可以通过右上角的下拉菜单切换到列表视图,如下图所示:

搜索问题

默认情况下,列表视图中会显示几个问题字段,但你可以随时添加更多列到视图中。

到目前为止,我们尚未为特定项目细化问题。默认的基本搜索选项允许你应用多个条件来细化问题。在问题列表的顶部,你会看到一组按钮,能够帮助你应用多个条件。

让我们细化问题,找到cristata(CSTA)项目,其问题类型为Bug

搜索问题

我们可以进一步精细化此列表,使其仅包含处于开放状态的议题,方法是使用位于议题类型旁边的状态按钮。

那么,如果我们想进一步筛选,只查看过去两周内开启的议题怎么办呢?可以通过点击更多按钮,选择创建日期来添加许多其他议题字段的筛选条件。随后,系统会弹出一个小框,要求你输入持续时间,如下图所示:

搜索议题

点击更新按钮以应用最后一个条件,之后你将得到结果。

现在,点击最后一个名为高级的链接,你将看到此操作生成的 JQL:

project = CSTA AND issuetype = Bug AND created >= -2w 

议题导航器窗口在使用基本搜索选项应用各种条件时,总是会生成类似的 JQL。

使用文本进行搜索

屏幕顶部有一个文本框,允许你通过简单地输入文本快速搜索议题。然而,它也有一些很棒的功能,可以帮助你瞬间找到特定的议题。你只需输入议题的关键字,系统就会直接带你到该议题。你还可以通过输入my来搜索所有分配给你的议题。

提示

你可以在confluence.atlassian.com/display/JIRA/Using+Quick+Search上了解更多有关快速搜索的各种功能。

你可以使用文本搜索来查找单个词汇或短语。例如,要搜索单独的单词china,只需在搜索框中输入它。

通配符也支持单个字符和多个字符:

  • 单字符通配符搜索:

    描述 - chin?

    这将搜索 china、chino 以及它在描述字段中找到的任何其他替代词。

  • 多字符通配符搜索:

    描述 - chi*

    这将搜索所有以chi开头的单词。它可能是 China 或 Chinese。

    提示

    你可以在confluence.atlassian.com/display/JIRA/Performing+Text+Searches上了解更多文本搜索的相关信息。

过滤器和订阅

我们刚才展示了如何为特定项目搜索过去两周内打开的 Bug。现在,如果我们想要每周两次执行此搜索呢?你可以始终访问议题导航器并重新应用条件,或者编写 JQL 查询。不过,JIRA 有一个非常棒的功能,允许你不仅保存搜索结果,还可以通过电子邮件接收结果。

点击屏幕顶部的另存为按钮以保存此搜索:

过滤器和订阅

在弹出窗口中,输入过滤器名称并点击提交按钮以保存查询。在 JIRA 中,这些保存的结果称为过滤器。

保存过滤器后,你可以随时在问题导航器的左侧面板中点击过滤器名称。

订阅

电子邮件订阅是 JIRA 提供的另一个好功能,它可以将某个特定过滤器中的问题列表通过电子邮件发送给你或一组 JIRA 用户。

点击位于另存为按钮旁边的详细信息链接。将弹出一个新窗口,点击新建订阅

订阅

在下一个屏幕上,你可以选择收件人是个人订阅,或者从选择列表中选择 JIRA 组名称。

调度中,你可以选择每天每周几天每月几天高级。前三个选项是自解释的;然而,最后一个选项让你可以编写 cron 表达式。

因为我们希望每 15 天或者每月的第 15 天得到这个结果,下面的 cron 表达式将被使用:

0 30 9 15 * ? 

这里有一些更多的示例:

Cron 表达式 调度详情

|

0 30 9 15 * ?

每月 15 日上午 9:30

|

0 30 9 ? * * 

每天上午 9:30

|

0 30 9 ? * MON-FRI 

每周一、二、三、四、五的上午 9:30

提示

有关通过电子邮件获取搜索结果的更多详细信息,请参阅confluence.atlassian.com/display/JIRA/Receiving+Search+Results+via+Email

共享你的过滤器

默认情况下,你创建的过滤器仅对你自己可见;它们是私有的,但也可以允许其他用户访问你创建的过滤器。

问题下拉菜单中,选择管理过滤器

共享你的过滤器

在下一个屏幕上,你将看到所有由你创建或与你共享的过滤器列表。

点击编辑以修改过滤器共享选项:

共享你的过滤器

在新窗口中,你将获得选择与所有人项目共享的选项:

共享你的过滤器

如果你想与所有人共享过滤器,选择它,点击添加选项,然后点击保存

现在,你的过滤器可以被系统中的其他用户访问。

JQL 介绍

JQL 是 JIRA 中最好的功能之一,它可以高效地搜索问题,并提供许多实用的功能。JQL 的最佳部分是,它非常容易学习,感谢高级搜索中的自动完成功能,能够根据输入的关键词向用户提供建议。

JQL 由单个或多个查询组成,这些查询可以组合成复杂的查询。

基本的 JQL 语法

JQL 包含一个字段后跟操作符。例如,要检索所有CSTA项目的问题,你可以使用一个简单的查询,如下所示:

project = CSTA 

现在,在这个项目中,如果你想查找分配给特定用户的问题,可以使用以下查询:

project = CSTA and assignee = ravisagar 

可能会有多个问题分配给一个用户,或许我们只想关注那些优先级为 CriticalBlocker 的问题:

project = CSTA and assignee = ravisagar and priority in (Blocker,  Critical) 

如果不是要查找分配给特定用户的任务,而是想查找分配给所有用户(除了一个用户)的问题,怎么办?可以使用以下命令实现:

project = CSTA and assignee != ravisagar and priority in (Blocker,  Critical) 

所以你可以看到 JQL 由一个或多个查询组成。

JQL 中运算符的使用

运算符是比较左侧字段与右侧值的符号。以下是 JQL 中支持的所有运算符的列表:

运算符 关键字
等于 =
不等于 !=
大于 >
大于等于 >=
小于 <
小于等于 <=
不在
包含 ~
不包含 !~
不是
在……中
不在……中
不为
已更改

不是所有运算符都有关键字。例如,如果你想搜索分配给两个不同用户的所有问题,可以使用以下 JQL 查询:

assignee in (michael, john) 

使用函数的高级搜索

有时查询中的值需要是动态的。例如,如果你想写一个查询列出过去 2 天内创建的所有问题,可以使用以下查询:

created > startOfDay("-2d") 

startOfDay() 函数是在运行此查询时计算其值的函数。

我们可以进一步优化此查询,列出过去 2 天内创建的所有分配给当前用户的问题:

created > startOfDay("-2d") and assignee = currentUser() 

此查询将被保存为过滤器,并且结果将在仪表盘上通过小部件显示。所有团队中的用户都可以使用类似的查询,输出结果会有所不同,因为我们将使用特定的函数,而不是特定的值。

以下表格展示了一些常见的函数:

函数 解释
currentLogin() 该函数返回当前用户会话开始时的时间
currentUser() 该函数基于当前登录用户来显示搜索结果
endOfDay() 该函数返回当前天结束时的时间
endOfMonth() 该函数返回当前月结束时的时间
endOfWeek() 该函数返回当前周结束时的时间
endOfYear() 该函数返回当前年结束时的时间
lastLogin() 该函数返回当前用户上次会话开始时的时间
membersOf() 该函数基于特定组的成员来显示搜索结果
now() 该函数返回当前时间
startOfDay() 该函数返回当前天开始时的时间
startOfMonth() 该函数返回当前月开始时的时间
startOfWeek() 该函数返回当前周开始时的时间
startOfYear() 该函数返回当前年开始时的时间

基于时间的函数将根据用户在其个人资料中选择的本地时区来获取问题。

提示

要查看所有可用功能的完整列表,请参阅 confluence.atlassian.com/display/JIRA/Advanced+Searching+Functions

浏览器快捷键

当你开始定期使用 JIRA 时,你将节省执行常见日常任务时所用的时间,例如创建问题、进入问题导航器、进行快速搜索等。

当你登录到 JIRA 实例时,仪表板将打开。假设你想快速进入问题导航器窗口,按照以下步骤操作:

  1. 按下 G + I

    这将让你在几秒钟内直接进入问题导航器窗口。如果你在问题导航器窗口中使用详细视图,将显示第一个问题的详细信息。

  2. 按下 J

    列表中的下一个问题将显示出来。

  3. 按下 K

    现在你已返回到第一个问题。在浏览问题时,你突然记得需要创建一个工单。

  4. 按下 C

    这将为你打开创建问题界面。

  5. 按下 /

    这将把鼠标焦点移到顶部的快速搜索框。JIRA 中有很多类似的快捷方式用于各种操作(这些快捷方式需要时间来学习和记住)。从我们这里提到的一些常用快捷方式开始,随着时间的推移,学习更多的快捷方式。

提示

要查看完整的键盘快捷键列表,请参阅 confluence.atlassian.com/display/JIRA/Using+Keyboard+Shortcuts

导出 Excel、RSS、XML 和 JSON 中的问题

不时地,你需要将这些问题从 JIRA 导出,并放入 Excel 表格中,以便根据提取的信息创建复杂的透视图表。JIRA 允许你以几种标准格式(如 RSS、XML 和 Excel)导出这些问题。

问题导航器面板的右上角,有一个名为导出的按钮。当你点击这个按钮时,你将看到几个选项:

导出 Excel、RSS、XML 和 JSON 中的问题

当你点击XML时,当前在问题导航器面板中可见的问题将以 XML 格式在浏览器中打开。你可以将此页面保存为 XML 文件。

同样,你可以为问题评论生成 RSS 提要。这将给你提供一个 URL,用于访问 RSS 提要,你可以在你喜欢的提要阅读器中使用这个 URL。此提要的 URL 是相同的,每当列表有更新时,RSS 提要将自动更新。

还有导出问题为WordExcel(所有字段)Excel(当前字段)的选项。当你想根据从 JIRA 中提取的数据生成自定义报告时,导出为 Excel 是非常有用的。

启用 JIRA 中的 JSON 导出

JSON 是一种流行的格式,用于在各种应用程序之间传输数据。它是一种与语言无关的格式,可以被多种编程语言解析和处理。

默认情况下,导出 JIRA 问题为 JSON 格式的功能是禁用的,但请按照以下步骤启用此功能:

  1. 转到 JIRA,管理 | 插件 | 管理插件,在ATLASSIAN MARKETPLACE下将过滤器更改为包含所有插件

  2. 系统插件分组下,搜索名为jira-importers-plugin的插件,并展开其子模块,如下所示:启用 JSON 导出

  3. 当子模块展开时,找到名为searchrequest-jsonissue-json的两个模块,并启用它们:启用 JSON 导出

  4. 现在返回到问题导航器,您会发现在导出下有一个新的选项,名为JSON启用 JSON 导出

将问题导出为 JSON 是一个非常有用的功能,尤其对那些希望构建从 JIRA 中提取数据的工具的开发者们来说。能够以 JSON 格式导出问题对他们来说是非常有益的。

批量编辑

JIRA 的另一个强大功能是问题导航器中的批量编辑。此功能使您能够同时修改多个问题的属性。您可能会遇到需要执行此操作的情况。例如,某员工离职,另一位员工替代他加入公司。现在,可能有几百个未关闭的问题分配给了这位员工;这些问题应该理想地被重新分配给新用户,以下是相应的步骤:

  1. 首先,精炼搜索结果,以便查看分配给旧用户的所有问题:批量编辑

  2. 从右上角点击工具按钮,然后在批量更改:下选择所有 26 个问题。如果搜索结果中有 50 个问题,则此数字将为 50。

  3. 勾选您想要修改的问题:批量编辑

  4. 您可以选择一次性选择所有问题,或者选择您想要修改的几个问题。点击下一步按钮。

  5. 选择操作并选择第一个选项,即编辑问题批量编辑

  6. 选择需要进行的修改:批量编辑

  7. 在此步骤中,您将获得选择要修改的字段的选项。您还将获得选择其新值的选项。由于我们想要更改受托人,请使用复选框选择它,并搜索您希望将所有问题分配给的新用户。

    批量编辑功能还允许您修改多个属性。也许您还想更改到期日期。只需使用复选框选择另一个属性,然后点击下一步按钮。

  8. 审核您的更改:批量编辑

  9. 在上面的屏幕中,只需审核您希望执行的更改。例如,在我们的案例中,此屏幕将显示受理人的更改。当您确定更改正确时,点击确认按钮。

  10. 批量编辑完成后,您将被带回问题导航器

    提示

    使用批量编辑功能,可以修改多个问题;然而,可能有些操作,如编辑移动删除问题,可能被禁用。原因是执行批量更改的用户可能没有权限在所有选择进行批量更改的问题上执行该操作。

总结

在本章中,我们讨论了如何使用问题导航器在 JIRA 中搜索问题。我们介绍了基本搜索以及使用 JQL 的高级搜索。还涵盖了如何创建过滤器并订阅它们。我们还讨论了如何批量修改问题以及如何从问题导航器中导出问题。

一旦开始使用 JIRA 跟踪问题,分析数据以检查项目进度也变得非常重要。在下一章中,我们将讨论 JIRA 提供的各种内置报告。这些实时报告帮助经理查看各种项目统计数据并做出正确决策。仪表板和小工具也将简要讨论。

第三章:报告——使用图表可视化数据

一旦人们开始使用 JIRA,提取有用的项目信息变得非常重要,这有助于大家分析信息。这些报告帮助管理层在正确的时间做出明智的决策。JIRA 提供了许多内置的项目报告,本章将对此进行解释。仪表板也将在此介绍,帮助你理解如何与其他用户共享项目统计数据。

本章涉及的主题如下:

  • 项目报告

  • 配置和共享仪表板

  • 用于报告目的的小工具

  • 使用插件图表可视化数据

项目报告

一旦你开始使用 JIRA 跟踪任何类型的问题,提取有用信息变得至关重要。JIRA 附带的内置报告显示项目、用户和其他领域的实时统计信息。在项目运行时,报告将始终显示最新的数据。

让我们来看看这些报告中的每一份。

打开 JIRA 中的任何一个包含大量问题并且大约有 5 到 10 个用户(这些用户是指派人或报告人)的项目。当你打开项目页面时,默认视图是摘要视图,其中包含一个活动流,展示项目中的所有动态,比如新问题的创建、状态更新、评论以及基本的任何项目变更。

在项目摘要页面的左侧,在项目导航侧边栏下有一个报告链接。所有与项目相关的报告都可以在这里找到。

问题

摘要页面打开时,点击活动旁边的切换视图下拉菜单,选择统计信息。在此页面上,你会发现许多现成的过滤器,帮助你查找项目中的问题。你可以通过状态优先级指派人组件问题类型来过滤这些问题:

问题

点击这些链接中的任何一个,相关的问题将会在问题导航器中打开。

报告

在这个页面上,你将看到 JIRA 附带的报告列表。这些报告将始终显示项目的实时数据。还有一些可以安装的报告插件,用于在 JIRA 中添加更多的报告。在本章中,我们将介绍一个这样的插件——Barcharts for JIRA。

第一组报告是敏捷报告:

报告

下一组报告是问题分析预测与管理

报告

报告下,主要有三种类型的报告——敏捷问题分析预测与管理。我们将在第十一章中讨论敏捷报告,在 JIRA 软件中使用 JIRA 敏捷看板。这里将讨论后两种报告类型。

平均年龄报告

本报告显示在给定日期,问题处于未解决状态的平均天数。

点击平均年龄报告,然后在新页面中指定期间天数之前

平均年龄报告

默认情况下,天数之前30,但我们将生成60天的报告。然后,点击下一步按钮。

报告解读

本报告有两个部分:

  • 第一个是柱状图,展示了在选定期间内未解决问题的平均年龄。

  • 第二个是下图中的表格,显示了在特定日期未解决问题的实际数量及其在特定时间段内的平均年龄。

阅读此图表非常简单;如果你看到条形图在一段时间内增加,那么这意味着问题未得到解决,需要采取行动:

报告解读

创建与解决的问题报告

本报告显示了在一段时间内创建的问题数量与解决的问题数量:

创建与解决的问题报告

输入你想要生成此报告的天数,并点击下一步按钮。

报告解读

在下图中,你可以看到两条线;一条线显示创建的问题数量,另一条线显示解决的问题数量。这两条线都能很好地指示总体进展。以下数据表显示了在选定期间内某一天创建和解决的问题:

报告解读

饼图报告

此图表展示了数据的分布。例如,在你的项目中,如果你有兴趣了解所有问题类型的数量,则可以使用此报告来获取此信息:

饼图报告

从下拉菜单中选择问题类型作为统计类型,然后点击下一步按钮。

报告解读

以下饼图显示了问题类型的分布,数据表显示了此分布的百分比。类似的饼图也可以为其他字段(如责任人报告人组件状态等)生成:

报告解读

最近创建的问题报告

本报告显示了最近创建的若干问题的统计信息,包括期间天数之前。报告还显示了这些问题的状态:

最近创建的问题报告

选择季度作为期间,输入天数之前365,然后点击下一步按钮。

报告解读

以下报告显示了过去几个季度中,创建和解决的问题数量。在这个堆叠条形图中,未解决的问题显示在底部,而已解决的问题显示在顶部。通过查看该报告,你可以轻松了解特定季度项目的整体进展。下图中的数据表显示了图表上所描绘的实际数字:

报告解读

解决时间报告

有时你会想了解你的团队每个月的速度。你的团队能多快解决问题?此报告显示给定月份中问题的平均解决时间:

解决时间报告

选择按季度作为周期,输入之前的天数365,并点击下一步按钮。

报告解读

通过查看以下报告,你可以轻松看出在2014 年 5 月,团队花了很多时间来解决问题。关注这些信息对管理者至关重要,因为它有助于识别团队面临的挑战,并可以采取适当的措施加以改善:

报告解读

单级分组报告

这是一个简单的报告,仅列出按特定字段(如负责人问题类型解决方案状态优先级等)分组的问题。

本报告要求你首先创建一个筛选器。所以,让我们使用以下 JQL 创建一个简单的筛选器:

project = cursor 

将此筛选器保存为cursor_issues。在第二章,在 JIRA 中搜索,我们讨论了如何创建筛选器。

我们需要为其生成报告的项目名称是cursor

现在,当你点击报告链接时,你会被提示首先选择筛选器,然后选择统计类型,即应用group by的字段:

单级分组报告

选择cursor_issues作为筛选器,选择负责人作为统计类型,然后点击下一步按钮。

报告解读

以下报告显示了特定筛选器的所有问题,但按负责人姓名分组:

报告解读

问题创建时间报告

这个报告有助于找出过去一年中,特定季度内创建了多少问题。此外,这个报告支持多种基于日期的字段;让我们基于解决日期生成报告:

问题创建时间报告

选择已解决作为日期字段(你也可以选择其他基于日期的字段),选择按季度作为周期,并在之前的天数中输入365。这将生成过去一年的报告。让累计总数?选择。点击下一步按钮。

报告解读

以下报告显示的信息与前一部分解决时间报告类似,但此报告也可以为问题中的其他日期字段生成,例如创建时间到期时间最后查看时间已解决时间更新时间

报告解读

时间跟踪报告

这个综合报告显示了所有问题的预计工作量和剩余工作量。报告还将给出项目总体进展的指示:

时间跟踪报告

如果您只想为特定版本生成报告,请选择修复版本,并为问题选择仅包含未完成的。点击下一步按钮。

报告解读

问题中,有时间估算剩余时间工作日志等字段。当用户开始处理一个问题时,他们可以更新工作日志,记录他们至今完成的工作量。在您的项目中,如果大多数问题都已填写时间估算,那么了解这些问题的状态就变得非常重要。这是一个详细的报告,将显示所有问题的预计时间、剩余时间和总时间。这是一个用于时间跟踪和成本核算的有用报告:

报告解读

报告的最后也会显示总计

报告解读

用户工作负载报告

这个报告可以告诉我们所有项目中各种资源的占用情况。它在分配任务给用户时非常有帮助:

用户工作负载报告

选择您希望生成此报告的用户,为子任务包含选择仅包括分配给所选用户的子任务,这样在计算工作负载时,不会考虑分配给父任务下其他用户的子任务,点击下一步按钮:

用户工作负载报告

报告解读

通常,在任何公司中,用户会同时处理多个项目。在 JIRA 中,可能会有多个项目,用户可能被分配到多个项目中的问题,而这些项目可能由其他项目经理管理。您可以将任务分配给任何用户,并期望任务在给定日期之前解决,但该用户可能会被过度分配。这个报告可以告诉您某个特定用户在所有项目中的工作负载。

版本工作负载报告

如果您的项目有多个版本与实际发布或修复相关,那么了解所有这些问题的状态就变得非常重要:

版本工作负载报告

选择您希望生成报告的版本,然后点击下一步按钮。

报告解读

该报告将为特定版本提供总结,您可以看到分配给该版本的所有用户以及每个问题的分类类型和时间估算。您还可以找到诸如修复发布剩余时间以及负责人是谁等信息:

报告解释

配置和共享仪表板

当您登录到您的 JIRA 实例时,您将看到 JIRA 的系统仪表板,该仪表板显示了许多相关信息。这个仪表板有一些框,称为小工具,其中包含信息;有许多不同的小工具可以显示分配给您的问题:活动流创建与解决图表饼图等。

除了默认的系统仪表板外,还可以创建更多的仪表板,这些仪表板可以定制并与其他用户共享。例如,您可以为您的项目创建一个仪表板,并与其他用户共享,其他用户也可以访问它。

系统仪表板上,点击右上角的工具选项,选择创建仪表板

配置和共享仪表板

输入仪表板名称、描述,并选择您想要共享的对象:

配置和共享仪表板

在我们的例子中,我们想与所有人共享,但也可以与 JIRA 小组共享。现在点击添加按钮。

提示

系统仪表板只能由 JIRA 管理员修改;然而,用户创建的仪表板只能由各自的拥有者修改。

现在,您将看到一个空白仪表板,布局为两列。您可以在这两列中添加您选择的小工具:

配置和共享仪表板

也可以更改此仪表板的布局。点击右上角的编辑布局选项:

配置和共享仪表板

在叠加界面中,我们可以选择不同的布局。例如,我们可以选择三列布局,并点击关闭按钮。

用于报告目的的小工具

JIRA 带有许多有用的小工具,您可以将它们添加到仪表板中,用于报告目的。通过安装插件,您还可以在 JIRA 中添加更多的小工具。让我们来看一下这些小工具。

活动流

这个小工具会显示您 JIRA 实例中的所有最新更新。也可以将此流限制为特定的过滤器。这个小工具非常有用,因为它在仪表板上显示了最新的信息:

活动流

创建与解决图表

项目概览页面有一个图表,显示过去 30 天内创建和解决的所有问题。还有一个类似的小工具可以显示这些信息。

您还可以将持续时间从 30 天更改为您喜欢的任何时间。这种小工具可以为特定项目创建:

创建 vs 解决图表

饼图

就像项目报告中的 饼图 一样,在仪表板中也有一个类似的小工具。例如,对于特定项目,可以基于 优先级 生成一个 饼图

饼图

问题统计

这个小工具在生成各种字段的简单统计数据方面非常有用。在这里,我们感兴趣的是根据 问题统计 查看项目的分布情况:

问题统计

二维过滤器统计

问题统计 小工具可以显示每个 状态 的项目问题分布情况。如果想进一步细分这些信息怎么办?例如,有多少问题是开放的,属于哪种 问题类型?在这种情况下,可以使用 二维过滤器统计

您只需选择两个字段来生成此报告,一个用于 x 轴,另一个用于 y 轴:

二维过滤器统计

这些是可以用于仪表板的常见小工具;但实际上还有许多其他小工具。点击右上角的 添加小工具 选项,查看您的 JIRA 实例中的所有这类小工具。某些小工具是 JIRA 默认提供的,而其他一些是可安装的插件。

一旦您在仪表板中选择了所有这些小工具,它看起来就像这样:

二维过滤器统计

这是我们刚刚为特定项目创建并配置的新仪表板,但也可以创建多个仪表板。只需点击右上角 工具 下的 创建仪表板 选项即可添加另一个仪表板。

如果您有多个仪表板,可以使用屏幕左上角的链接在它们之间切换,如下截图所示:

二维过滤器统计

使用插件图表来可视化数据

除了 JIRA 默认提供的标准图表和小工具外,还可以安装一些免费插件来获得更多有用的图表。让我们来看看这些免费插件及其提供的额外功能。

JIRA 的条形图

只需安装此插件,即可在实例中添加一个 条形图 小工具。此插件提供的条形图比标准图表还多一些功能。

我们将生成一个类似于本章前面生成的报告。我们希望生成一个关于 问题类型状态 的二维报告:

JIRA 的条形图

正如你所见,这是一个堆叠条形图。此外,紧随图表后面的详细表格显示了实际数字。

使用 eazyBI 创建高级报告

JIRA 内置的默认报告相当好且有用。这些小工具可以配置以显示基于与特定项目或过滤器相关的不同字段的各种统计信息。尽管它们很有用,但这些报告和小工具有时不能提供精确的综合信息。用户也可以直接查询 JIRA 数据库以获取数据,并查找通过用户界面无法获得的报告,但并非每个人都能轻松做到这一点,因为这需要对 JIRA 数据库有很好的了解。在第十三章,数据库访问中,我们将查看一些查询,您可以用来直接从数据库中获取数据。然而,如果你在寻找一种更好的方法来生成高级报告,那么eazyBI是最适合报告目的的 JIRA 插件之一。

在本节中,我们将快速介绍此插件以及如何使用它生成全面的报告:

  1. 转到 JIRA 的管理 | 插件 | 查找新插件,在ATLASSIAN MARKETPLACE下的搜索框中搜索eazyBI

  2. eazyBI Reports and Charts for JIRA将会出现。点击免费试用以安装此插件。在接下来的弹出窗口中,点击接受按钮。

  3. 最后,系统会要求你输入 Atlassian 账户,以便生成 eazyBI 的试用许可证。安装完成后,导航菜单中将添加一个新链接,eazyBI。点击此链接进入 eazyBI 界面。

  4. 点击设置 eazyBI按钮以配置此插件。eazyBI 插件将使用单独的数据库来存储其数据;在继续操作之前,请创建一个空数据库供该插件使用:使用 eazyBI 构建高级报告

  5. eazyBI 设置界面中,选择数据库类型主机端口数据库用户名密码。点击更新设置按钮继续:使用 eazyBI 构建高级报告

  6. 添加新源应用程序界面中,选择JIRA作为源应用程序,并输入Issues作为Cube 名称。点击创建按钮继续:使用 eazyBI 构建高级报告

  7. 选择应用程序导入选项界面中,选择你想要导入到 eazyBI 数据库中的 JIRA 项目。保持其余配置不变,并点击导入按钮。eazyBI 将定期从 JIRA 导入问题到其自己的数据库:使用 eazyBI 构建高级报告

  8. 一个新源将被添加到源应用程序下。你还可以查看状态栏,显示上次导入的时间。导入将按照计划进行,通常是每天一次,但你也可以点击导入按钮以从 JIRA 拉取数据:使用 eazyBI 构建高级报告

  9. eazyBI 菜单顶部点击 分析 链接,您将找到三个示例报告。点击 Sample created vs resolved issues使用 eazyBI 构建高级报告

  10. 顶部的 Dimensions 区域包含所有可用的字段;Pages 区域包含作为当前报告筛选器的字段。RowsColumns 区域包含基于其生成报告的两个字段。您可以从 Dimensions 拖动更多字段到这三个区域中的任意一个。下面的示例报告基于 Line,但您可以选择 BarPie 和其他几种类型的图表。eazyBI 最好的地方在于这些报告是钻取报告,换句话说,您可以点击报告的特定部分并单独分析该部分。您可以基于任意选择的字段添加更多报告。

  11. 要查看报告,请转到 eazyBI 菜单中的 仪表板 并添加一个新的仪表板。点击 添加报告 按钮以添加已配置的报告。在 添加报告 弹出窗口中,点击您选择的报告并按 关闭 按钮。如果需要,可再次执行此操作以添加更多报告:使用 eazyBI 构建高级报告

  12. 一旦您添加了所需的报告,给您的仪表板命名并点击 保存更改 按钮:使用 eazyBI 构建高级报告

  13. 在保存仪表板后,您将能够查看报告。同时注意我们在配置报告时添加的 Pages 区域的筛选器。您可以使用这些筛选器来细化报告。它使最终用户能够按照他们的意愿处理报告:使用 eazyBI 构建高级报告

eazyBI 插件是默认 JIRA 报告的一个很好的补充。它还有许多其他功能,比如可以将报告导出为 CSV、Excel、PNG 和 PDF 格式。不仅如此,您还可以返回到 JIRA 仪表板,并在其中添加 eazyBI 仪表板和报告。它为您的用户提供了强大的报告功能,直接在 JIRA 界面内使用。

提示

您可以在 docs.eazybi.com/display/EAZYBIJIRA/eazyBI+Add-on+for+JIRA+Documentation 学习 eazyBI 插件的所有功能。

总结

在本章中,我们介绍了您可以生成以查找有用信息的所有项目报告。您还学习了如何创建仪表板并向其中添加各种小部件。我们还理解了如何使用 eazyBI 创建高级报告,eazyBI 是一个流行的用于生成 JIRA 中默认不可用报告的插件。

在下一章,我们将开始定制 JIRA 实例,使其像一个测试管理工具一样工作。通过实例,你将学习如何定制问题类型方案以包括新的问题类型,修改工作流,创建新的自定义字段以捕捉额外的信息,以及如何限制项目的可见性。

第四章。为测试管理自定义 JIRA

在本章中,我们将为测试管理配置和自定义 JIRA,这一点我们在第一章中也简要讨论过,规划 JIRA 安装,但在这里我们将详细讨论。JIRA 最棒的地方在于它的自定义功能。默认情况下,JIRA 可以用于错误跟踪、基于敏捷的项目管理或简单的问题跟踪,但每个组织都有自己的流程和不同的软件模型。在本章中,我们将讨论一个特定的测试管理用例,涵盖 JIRA 自定义的各个方面。我们将从收集所有需求开始。然后,我们将在 JIRA 实例中实施这些自定义功能。你将学习如何创建新的问题类型来存储测试活动和测试用例。工作流自定义也会详细讨论。我们还将修改权限方案以限制项目的可见性。学习这些自定义功能将帮助你理解 JIRA 的能力,这些能力可以应用于各种用例。

涵盖的主题如下:

  • 什么是测试管理?

  • 为测试活动和测试用例创建问题类型

  • 自定义状态转换中的工作流

  • 捕获用户在状态转换中的额外数据

  • 学习如何仅为测试活动使某些字段成为必填项

  • 限制项目的可见性,仅对特定小组和个人可见

  • 学习如何在项目中隐藏特定问题

  • 版本和组件

什么是测试管理?

测试管理是通过执行测试来验证需求的软件过程。它可以是自动化测试,也可以是手动测试,具体取决于测试用例中的定义。测试活动是测试用例的集合。可以创建测试活动来收集项目中特定模块的所有测试用例。使用 JIRA,可以执行手动测试;为了存储测试活动,我们将创建一个新的标准问题类型。另一方面,我们将创建一个新的子任务问题类型来存储测试用例。

为测试活动和测试用例创建问题类型

默认情况下,JIRA 软件自带一些标准的问题类型,分别是BugEpicStoryTask,以及一个名为Sub-task的子任务。我们需要创建两种问题类型:

  • 需求:问题类型

  • 测试活动:这将是标准问题类型

  • 测试用例:这将是子任务

让我们看看如何创建这些问题类型:

  1. 前往管理 | 问题 | 问题类型,然后点击右上角的添加问题类型按钮:为测试活动和测试用例创建问题类型

  2. 在下一个页面上,输入名称测试活动,输入描述此问题类型将用作单个测试用例的集合。,这是一个好的实践,并选择标准问题类型作为类型为测试活动和测试用例创建问题类型

  3. 执行相同的操作来创建一个测试用例子任务。唯一的例外是选择子任务问题类型作为类型

创建新的问题类型方案

问题类型方案定义了哪些问题类型将适用于特定项目。JIRA 默认提供默认问题类型方案。默认情况下,所有新创建的问题类型将添加到此方案中;我们刚创建的两个新问题类型也将被添加到此方案,使它们对所有使用该方案的项目可用。然而,作为一个好的实践,你应该始终创建一个新的问题类型方案,只包含那些相关和必要的问题。这些方案可以在所有其他具有类似需求的项目中重复使用。

让我们创建一个包含以下问题类型的新问题类型方案:

  • 错误

  • 任务

  • 测试活动

  • 测试用例

要创建一个新的问题类型方案,请执行以下步骤:

  1. 转到管理 | 问题 | 问题类型方案,并点击右上角的添加问题类型方案按钮:创建新的问题类型方案

    添加问题类型方案页面上,执行以下步骤以创建一个新的问题类型方案:

  2. 输入方案名称测试管理问题类型方案

  3. 添加一个有用的描述

  4. 将所需的问题类型从右侧的可用问题类型栏拖动到左侧的当前方案的问题类型栏。

  5. 选择测试活动作为默认问题类型

  6. 它应该看起来像下面的截图。点击保存按钮以完成:创建新的问题类型方案

新的问题类型方案将被创建并显示在列表中。正如你在下一个截图中看到的,目前没有项目使用此方案。因此,在项目列下,显示没有任何项目使用我们的新方案。我们将创建一个新项目并应用此方案:

创建新的问题类型方案

目前,我们需要创建一个新项目以应用我们的自定义设置:

创建新的问题类型方案

转到管理 | 项目,在项目列表部分,点击右上角的添加项目按钮:

创建新的问题类型方案

创建项目弹窗中,在软件下选择基础软件开发并点击下一步按钮:

创建新的问题类型方案

下一弹出窗口将确认你的选择,并显示你将在此项目中获得的问题类型工作流程。只需点击选择按钮继续。

输入我们项目的名称Project For Test Management,项目KeyPFTM。点击提交按钮:

创建新的问题类型方案

一旦项目创建完成,进入项目侧边栏,然后选择项目管理 | 问题类型。你会注意到,默认情况下,PFTM: Scrum 问题类型方案已应用于该项目。这是一个仅为该项目创建的新方案。我们将修改它并应用我们之前创建的自定义问题类型方案。在右上角,点击操作菜单,选择使用不同的方案

创建新的问题类型方案

在下一个界面,你将看到所有可用的问题类型方案列表;只需选择测试管理问题类型方案,然后点击确定按钮:

创建新的问题类型方案

现在,项目方案已经更改,且已拥有我们需要的新的问题类型。你可以通过在此新项目下创建一个新问题,并查看所有可用的我们需要的问题类型列表来验证这一点。

自定义工作流程以更改状态转换

在任何问题跟踪系统中,问题将被创建,接着进入进行中状态,最后关闭。这是一个简单工作流程的场景,包含三个状态:打开、进行中和关闭,这只适用于理想情况,但在现实情况下,工作流程,即问题从一个状态到另一个状态的流转,可能相当复杂。例如,有时你可能需要等待客户提供信息才能继续处理问题;也可能出现某人需要在关闭前审查你的任务。为了应对这种情况,我们需要能够修改这些工作流程。

每个公司都有自己的流程和软件模型。在 JIRA 中,工作流程可以非常容易地进行自定义。这是 JIRA 最强大的功能之一。我们可以轻松创建新的状态和条件。在本节中,我们将自定义测试活动和测试用例的工作流程。

测试活动的工作流程

测试活动是一个测试用例的集合。我们已经创建了其问题类型。用户将通过创建一个新的测试活动问题类型开始,然后所有作为其子任务的测试用例将被创建。

测试活动可以分配给一个特定的团队负责人,负责人可以进一步在团队成员之间分配测试用例。下图展示了测试活动的典型工作流程:

测试活动的工作流程

测试计划将移至进行中状态,同时所有的测试用例都将作为子任务被准备和创建。一旦测试用例集合被添加并最终确定,测试计划将被已发布执行中状态表示其下的测试用例正在被执行。

现在,我们需要创建一些额外的状态。系统中尚未存在这些状态。此外,我们希望添加一个约束条件,即测试计划只能在所有下属的测试用例都关闭时才能关闭,并且只有报告者可以关闭测试计划,这是 JIRA 术语中的条件。

新状态

以下是新的状态:

  • 已发布

  • 执行中

进入管理 | 问题 | 状态(在问题属性下),然后点击右上角的添加状态按钮:

新状态

输入状态已发布名称描述,然后点击添加按钮创建新状态,并重复相同的步骤创建执行中状态。

现在,我们需要创建一个工作流,并将其与测试计划关联。一个好的实践是先复制默认的 JIRA 工作流jira,然后进行修改。

进入管理 | 问题 | 工作流(在工作流下),然后使用操作下的复制链接复制默认的 JIRA 工作流jira(只读系统工作流)

新状态

复制工作流:jira弹出窗口中,输入工作流名称测试计划工作流,并添加描述

新状态

一旦工作流被复制,你将在左上角找到两个视图标签:一个是图示(默认标签),另一个是文本。当启用图示标签时,它会显示工作流的图形表示。然而,在文本标签中工作更为方便。

删除不需要的转换

你会注意到我们从默认的jira工作流复制过来的工作流中,存在一些不需要的转换,例如从已打开到已解决从已打开到已关闭等等。首先,我们需要删除这些转换。在文本模式下,点击操作下的删除转换链接:

删除不需要的转换

在下一屏幕上,选择解决问题关闭问题转换,因为我们不希望它们与已打开状态相关联:

删除不需要的转换

点击删除按钮删除选中的转换。对所有类似的无用转换执行相同的操作。此外,删除工作流中完全不需要的状态,如已解决状态。一旦没有附加的转换,你将看到一个删除步骤的链接,该链接与某个状态关联。

添加新步骤

删除所有不需要的转换后,在文本模式的底部表单中添加新的状态。通过将这些状态与步骤名称关联来将它们添加到工作流中,步骤名称与状态名称相似:

添加新步骤

点击添加按钮来添加此状态,并对Published状态执行相同的操作:

添加新步骤

您现在应该拥有所有所需的状态。

添加缺失的转换

让我们添加以下缺失的转换:

  • 进行中到已发布

  • 已发布到重新打开

  • 已发布到正在执行

  • 正在执行到已关闭

  • 已关闭到正在执行

操作下,点击特定步骤的添加转换链接:

添加缺失的转换

输入转换名称Published,输入一些有意义的描述,并选择Published作为目标步骤。在执行此转换时,也可以提示用户在屏幕上填写一些数据。今后我们将不再这样做。点击添加按钮继续。对所有需要创建的其他转换重复相同的操作。

转换名称也可以作为动词添加。例如,Under Execution 转换可以作为 Start Execution 添加。此名称会出现在问题视图屏幕上。

最终,您的工作流将类似于以下截图:

  • 文本模式的工作流:

添加缺失的转换

  • 图示模式的工作流:

添加缺失的转换

现在我们的工作流已经成型。我们拥有了所有想要的状态和转换。接下来,我们为某些转换添加一些条件。

条件

以下是测试活动的不同条件:

  • 测试活动只有在所有测试用例都关闭时才会关闭

  • 只有报告者才能将此测试活动移动到已关闭状态

第一个条件将不允许用户关闭问题,直到所有相关的测试用例都处于已关闭状态。我们希望在尝试从正在执行已关闭的转换时添加此条件:

  1. 返回文本模式,点击转换 (id) 列下的Closed链接。查看以下截图作为参考:条件

  2. 在下一个屏幕上,您将获得一些关于从Under ExecutionClosed状态的高级选项。在条件标签下,点击添加条件按钮:条件

  3. 在下一个截图中,您将看到可以添加到此转换的条件列表。选择子任务阻塞条件并点击添加按钮:条件

  4. 在下一个屏幕上,选择此条件将适用的状态。在我们的案例中,我们希望测试用例处于“已关闭”状态,因此我们将从可用状态列表中选择已关闭,并点击添加按钮:条件

  5. 同样地,为从执行中到已关闭的过渡添加一个名为仅报告者条件的条件。

  6. 最后,我们将有两个条件被添加到此过渡中,如下图所示:条件

后置功能

以下是后置功能的使用。

当工作流过渡发生后,可以执行某些操作。例如,当测试活动被关闭时,我们会向某个特定组中的所有人发送电子邮件。

我们还希望向所有属于特定组的用户发送电子邮件,通知他们测试活动已关闭。工作流可以配置为在从执行中已关闭的状态过渡时触发事件。该事件可以进一步配置为向某个组发送电子邮件。我们将在本章后面学习如何配置。

创建新工作流方案

此时,让我们将工作流与项目关联。为此,我们需要创建一个工作流方案,它是一个包含一个或多个工作流的集合,这些工作流与项目问题类型映射;为了将工作流附加到项目中,需要一个工作流方案:

  1. 转到管理 | 问题 | 工作流方案(在工作流下),然后点击右上角的添加工作流方案按钮。在添加工作流方案界面中,输入方案的名称测试管理工作流方案,并填写一些有用的描述创建新工作流方案

  2. 一旦方案创建完成,默认的JIRA 工作流将被分配给所有问题类型;然而,在我们的案例中,我们希望将刚才创建的工作流分配给测试活动问题类型:创建新工作流方案

  3. 点击左上角的添加工作流菜单,并选择添加现有创建新工作流方案

  4. 在前面的屏幕截图中,选择名为测试活动工作流的工作流,然后点击下一步按钮。创建新工作流方案

  5. 在前面的屏幕截图中,选择测试活动作为问题类型,然后点击完成按钮。这将把工作流分配给所选的问题类型。如下图所示:创建新工作流方案

    现在,如果你返回到我们的工作流方案,你会注意到测试活动问题类型正在使用我们自定义的工作流,名为测试活动工作流

  6. 返回到项目管理 | 工作流,然后点击左上角添加工作流按钮旁边的切换方案按钮。在下一个屏幕上,选择测试管理工作流方案并点击关联按钮。

工作流方案现在已与项目关联,工作流现在是活动的。请注意,活动的工作流无法修改;JIRA 会为你创建一个草稿版本,修改后的工作流可以再次发布。

在 JIRA 中添加自定义事件

转到管理 | 系统 | 事件(在高级下),并向下滚动到页面底部,那里有一个添加新事件表单:

在 JIRA 中添加自定义事件

输入事件的名称,然后输入一些有用的描述,并选择问题已关闭作为模板,因为该电子邮件的模板将与问题关闭时发送的模板类似。点击添加按钮继续。创建事件本身不会做任何有用的事情,直到我们从工作流中触发它并在通知方案中自定义它:

  1. 首先,我们需要从工作流中触发事件。让我们返回到测试活动工作流,编辑它,并点击转换(id)列下的已关闭链接。现在,转到后置功能标签页;这里的最后一项是通用事件。点击右下角的铅笔图标进行编辑,如下图所示:在 JIRA 中添加自定义事件

  2. 在下一个屏幕上,我们需要将事件从通用事件更改为发送电子邮件给测试人员。然后,点击更新按钮:在 JIRA 中添加自定义事件

  3. 现在事件将在状态转换时触发,但还有一件事需要执行才能发送电子邮件。项目的通知方案需要进行自定义,以配置当工作流触发此事件时,电子邮件将发送给谁。

自定义通知方案

要发送电子邮件,JIRA 依赖于通知方案,这些方案定义了谁将在何时接收电子邮件。如前所述,JIRA 提供了默认方案,通常复制并自定义自己的副本是一个好习惯。在这个示例中,我们也会复制默认通知方案

  1. 转到管理 | 问题 | 通知方案。在操作下,点击复制链接。它会立即复制方案,并命名为默认通知方案的副本。点击此方案下的编辑链接,并将其重命名为测试管理通知方案自定义通知方案

  2. 现在,我们需要自定义该方案以向特定组的所有用户发送电子邮件。对于此示例,您可以创建一个名为jira-testers的组,并向其中添加几个用户。有关管理用户和组的更多信息,请参阅第七章,用户管理、组和项目角色。创建组后,点击操作下的通知链接,进入测试管理通知方案

  3. 在下一个屏幕上,您将看到所有事件的列表,以及相关的用户、组或项目角色,这些人员将收到这些电子邮件:自定义通知方案

  4. 您还将看到我们创建的邮件通知给测试人员自定义事件,但这只是该方案中列出的事件;我们需要修改方案,添加jira-testers组,以便在该事件由工作流触发时接收通知。点击添加按钮:自定义通知方案

  5. 选择,从下拉菜单中选择jira-testers。点击添加按钮:自定义通知方案

    我们的方案现在已经配置完成。

  6. 现在,转到项目管理 | 通知,点击右上角的操作菜单,选择使用不同的方案。在下一个屏幕上,选择我们的新方案测试管理通知方案并点击关联按钮。

项目现在将使用下一个方案,因为自定义的工作流已经分配给该项目。所以,当测试活动从执行中状态转移到关闭状态时,电子邮件通知应该能正常工作。

测试用例的工作流

测试用例包含输入信息、预期输出、行动步骤以及环境的详细信息,用于验证是否按照原计划满足需求并确认其是否正常工作。我们将为手动测试配置 JIRA,将所有这些信息存储为问题类型。

我们已经为测试活动配置了 JIRA;在本节中,我们不会重复实现过程,它与我们刚刚讨论的内容完全相同。相反,我们将列出工作流、条件和后期功能的详细信息:

测试用例的工作流

测试用例将作为特定测试活动的子任务。一旦创建,它将在测试人员开始执行测试时首先进入进行中状态。根据这些测试结果,它可以被移动到以下之一状态:

  • 已阻塞:如果该测试用例对于其他功能的正常工作至关重要

  • 已通过:如果它正常工作

  • 已失败:如果它无法正常工作

  • 审核中:如果需要进一步调查

最后,测试用例可以是关闭重新打开。一个特定的测试活动可能包含数百个测试用例,其总体验证测试的百分比可以根据已关闭的测试用例数量来计算。

创建一个新的工作流,命名为测试用例工作流,将其添加到测试管理工作流方案中,并将其分配给测试用例作为问题类型

新状态

我们已经确定了几个需要创建的新状态:

  • 被阻止

  • 通过

  • 失败

  • 审查中

创建这些状态的过程类似于我们之前讨论的测试活动。

条件

我们希望施加约束,只有被分配的用户才能将测试用例移至通过状态:

  • 只有被分配的人员才能将测试用例移至通过状态

该工作流条件的名称为仅限被分配人条件

后置功能

当测试用例失败时,了解功能出现问题的原因可能变得很重要。为突出这个问题,我们可以自动将问题的优先级更改为最高

  • 当测试用例被移至失败状态时,将问题的优先级更改为最高

有一个名为更新问题字段的后置功能来实现这一点;修改测试用例工作流并添加一个后置功能:

后置功能

点击添加按钮。在下一个屏幕中,选择优先级作为问题字段,并将最高设置为字段值

后置功能

点击添加按钮以添加此后置功能。其余流程保持不变。您还可以修改活动工作流并在进行更改后将其发布回去。

在状态转换中捕获来自用户的附加数据

在测试活动转换的工作流中,当我们将问题从进行中状态移动到已发布状态时,我们希望用户提供一些关于测试活动类型的附加信息,这可能是一个选择列表:

  1. 转到管理 | 问题 | 自定义字段(在字段下)并点击右上角的添加自定义字段按钮:在状态转换中捕获来自用户的附加数据

  2. 选择字段类型屏幕上,选择字段类型为选择列表(单选),然后点击下一步按钮:在状态转换中捕获来自用户的附加数据

  3. 在下一个屏幕上,输入自定义字段的名称Campaign Type,输入描述,并添加将在选择列表中显示的选项在状态转换中捕获来自用户的附加数据

  4. 点击创建按钮。

  5. 在下图中,系统会提示你将该字段添加到现有的屏幕中,但不要选择任何字段。我们稍后再添加字段。如果你想在默认屏幕中添加新字段,可以通过选择默认屏幕的复选框来完成。点击更新按钮以完成操作。现在我们的字段已经创建,我们需要创建一个自定义屏幕,在从“进行中”到“已发布”的转换时展示给用户。

  6. 进入管理 | 屏幕(在屏幕下),并点击右上角的添加屏幕按钮。在下图中,输入名称已发布屏幕描述此屏幕将捕获附加数据捕获用户在状态转换中的附加数据

  7. 点击添加以创建屏幕。现在我们需要添加我们已经创建的自定义字段:捕获用户在状态转换中的附加数据

当前此屏幕上没有自定义字段;从选择字段下拉列表中,选择活动类型并将其添加到屏幕上:

捕获用户在状态转换中的附加数据

现在,我们有一个名为已发布屏幕的屏幕,并且自定义字段为活动类型:

  1. 返回到测试活动工作流,编辑它,并点击已发布链接,在转换(id)列中找到从进行中已发布的转换行:捕获用户在状态转换中的附加数据

  2. 转换:已发布屏幕中,点击右上角的编辑按钮;这将打开另一个弹窗。在这里,我们将指定转换视图已发布屏幕捕获用户在状态转换中的附加数据

点击更新按钮以完成操作。另外,别忘了发布此工作流。

现在,每当测试活动从进行中状态转换为已发布状态时,系统会向用户显示一个单独的屏幕,以捕获活动类型的值。

学习如何使某些字段仅在测试活动中成为必填项

我们已经添加了自定义字段,用户也会被提示输入该字段,但有一个问题:用户很可能不会在此字段中提供任何值并跳过它。在 JIRA 中,可以通过修改项目的字段配置来使某个字段成为必填项:

  1. 进入管理 | 字段配置(在字段下)并创建默认字段配置的副本,并将其命名为测试管理字段配置学习如何使某些字段仅在测试活动中成为必填项

  2. 在字段配置被复制后,点击配置链接(在操作下)如上图所示。学习如何仅对测试活动设置必填字段

  3. 如屏幕所示,对于每个字段,您都可以将其设置为必填,即强制要求填写。点击必填链接,字段配置将立即被修改。最后一步是创建一个字段配置方案,在该方案中,我们将此新的字段配置与测试活动问题类型关联。

  4. 进入管理 | 字段配置方案(在字段下),并点击右上角的添加字段配置方案按钮。在弹出的窗口中,填写名称测试管理字段配置方案,并给出有意义的描述。点击添加按钮继续:学习如何仅对测试活动设置必填字段

默认字段配置将与所有未映射的问题类型关联,但我们希望将测试管理字段配置测试活动问题类型关联。点击将问题类型与字段配置关联。在弹出的窗口中,选择测试活动作为问题类型,并选择测试管理字段配置作为字段配置,然后点击添加按钮继续:

学习如何仅对测试活动设置必填字段

我们的字段配置方案已经准备好。现在,进入项目管理 | 字段,然后在右上角的操作菜单中选择使用其他方案。在下一屏幕上,选择我们刚刚创建的新字段配置,并将其应用到项目中。我们刚刚学会了如何仅对特定问题类型设置必填字段。

限制项目的可见性,仅限于某些用户组和个人

JIRA 中的所有项目对所有具有访问权限的用户可见。JIRA 允许您改变这一行为。您可以将项目隐藏起来,仅允许某些用户组的成员访问该项目。

我们在本章中已经创建了一个jira-testers组。现在,让我们只允许该组的用户访问我们的测试管理项目

进入项目管理 | 权限。这将打开当前应用于该项目的默认软件方案默认权限方案页面。列表中的第二个权限是浏览项目,该权限当前授予应用角色任何登录用户)。这意味着所有在 JIRA 中拥有账户的用户都可以访问该项目。

我们基本上需要移除应用角色任何登录用户),并将jira-testers组添加为浏览项目权限的成员。

转到管理 | 问题 | 权限方案,创建默认权限方案的副本,并将其命名为测试管理权限方案。然后,编辑此新方案的权限:

  1. 首先点击移除链接,在下一个弹出窗口中,选择应用角色 - 任何登录的用户,然后点击移除按钮:将项目可见性限制为特定组和个人

  2. 然后点击编辑链接,在授权权限弹出窗口中,选择Group,并从下拉列表中选择jira-testers。点击授权按钮完成:将项目可见性限制为特定组和个人

现在,转到项目管理 | 权限,并在右上角的操作菜单中,选择使用其他方案。在下一个屏幕中,选择新方案并点击关联按钮,将此方案应用到项目。

学习如何在项目中隐藏特定问题

目前,只有属于jira-testers组的用户才能访问测试管理项目。用户可能属于其他组,但必须是jira-testers组的一部分才能查看此项目。

假设有一种情况,需要将某些问题隐藏起来,使得所有不属于特定组的用户无法查看。这只是我们在此实现的一个示例,但实际上,确实可能会遇到这样的情况。这可以通过创建问题安全方案来实现:

  1. 转到管理 | 问题 | 问题安全方案,点击底部的添加问题安全方案。在以下截图中,输入名称描述学习如何在项目中隐藏特定问题

  2. 点击添加按钮继续。

  3. 操作下,点击安全级别链接:学习如何在项目中隐藏特定问题

  4. 输入安全级别的名称描述,然后点击添加安全级别按钮:学习如何在项目中隐藏特定问题

  5. 创建完成后,点击此安全级别下操作中的添加链接,并从下拉列表中选择,选择jira-team-cursor(或你选择的任何组):学习如何在项目中隐藏特定问题

  6. 点击添加按钮继续。现在我们已经创建了一个安全方案;在将其应用到项目之前,我们还需要修改项目的权限方案,以便只有jira-team-cursor组的用户才能设置问题安全性,如下图所示:学习如何在项目中隐藏特定问题

  7. 现在,进入项目管理 | 问题安全,在右上角的操作菜单下,点击选择一个方案。在下一个屏幕上,选择测试管理安全方案作为方案,然后点击下一步按钮。

我们已经设置好了安全方案。为了测试,创建一个新用户,并将他/她加入jira-team-cursorjira-testers组。默认情况下,属于jira-testers组的每个用户都可以访问所有项目及其下的所有问题,但同时属于jira-team-cursor的用户可以从jira-testers组的用户那里隐藏特定问题。

编辑/创建问题,你将会看到一个新的系统字段,称为安全级别

学习如何在项目中隐藏特定问题

从下拉列表中,选择我们之前创建的安全级别,并保存该问题。现在,只有属于jira-team-cursor组的用户才能看到此问题。最棒的是,只有属于jira-team-cursor的用户才能设置此安全级别。

版本和组件

我们已经快完成 JIRA 的测试管理配置了;剩下的几个任务是设置版本和组件。

版本对于软件项目非常有用,用来标识软件的不同发布版本。你通常会发布第一个稳定版本的项目或产品,基于用户反馈和改进,后续版本会陆续发布。JIRA 允许你创建多个版本并将它们分配给各个问题。

进入项目管理 | 版本,输入版本的名称描述开始日期发布日期,然后点击添加按钮:

版本和组件

我们已经添加了版本(如v1.0v1.1v1.2)。你可以选择与项目相关的名称。

在任何项目中,功能可以被细分为子部分或模块。拆解较大的任务不仅有助于管理,还能帮助分隔问题。

进入项目管理 | 组件,输入组件的名称,输入描述,选择组件负责人,然后点击添加按钮:

版本和组件

我们可以添加各种组件(例如需求收集、分析、设计、文档、编码、测试和支持)。

总结

在本章中,我们定制了 JIRA 实例,使其像一个测试管理工具。我们从收集需求开始,以便在 JIRA 中实现这些用例。你学习了如何定制各种方案,以引入新的问题类型、自定义工作流、字段配置和项目权限。

在下一章,我们将学习如何配置 Zephyr,这是一个流行的 JIRA 插件,用于测试管理。这个插件将提供标准功能和内置功能,让你可以在不自定义 JIRA 的情况下开始进行软件测试。许多组织都在使用 Zephyr,我们还将学习如何利用它进行测试。

第五章:理解 Zephyr 及其功能

我们已经学会了如何定制 JIRA 进行测试管理,理解了如何配置 JIRA 中各种方案,以修改项目并与您公司实际的流程相匹配,但也有一些插件可以在不需要定制 JIRA 的情况下带来新功能。一个这样的流行插件就是Zephyr,它为 JIRA 带来了完整的测试管理功能。在本节中,我们将学习如何配置和使用 Zephyr。

讨论的主题如下:

  • 安装 Zephyr 插件

  • Zephyr 术语

  • 开始使用 Zephyr

安装 Zephyr 插件

Zephyr 是一个付费插件,在业界非常流行。如果您希望快速获得测试管理功能,而不需要自己定制 JIRA,您可以使用 Zephyr。它提供了许多符合行业标准的实用测试管理功能。

在本节中,我们将学习如何配置和使用 Zephyr。请按照以下步骤在您的实例中安装它:

  1. 进入管理 | 插件 | 查找新插件,在ATLASSIAN 市场下,输入Zephyr并按Enter键:安装 Zephyr 插件

  2. Zephyr for JIRA - 测试管理将会出现。点击免费试用按钮将此插件安装到您的实例中。在接下来的弹窗中,点击接受按钮。

  3. 最后,系统将要求您输入 Atlassian 账户以生成 Zephyr 的试用许可证:安装 Zephyr 插件

  4. 安装后,您将在您的实例中获得一个新的菜单项,测试

我们刚刚安装了 Zephyr;现在我们将学习如何配置这个插件。

Zephyr 术语

Zephyr 插件与您现有的 JIRA 项目紧密集成,但在开始使用此插件之前,有些术语需要我们理解:

  • 测试:这是测试用例以及需要测试的内容的详细描述

  • 执行:每个测试及其结果

  • 测试周期:这是一个测试分组,可能是某个特定项目版本的测试

  • 临时周期:所有没有定义周期的测试都将在临时周期中执行

开始使用 Zephyr

Zephyr 插件对新用户来说可能一开始会显得有些复杂,但在本节中,我们将学习如何快速配置此插件并使用它进行测试。

以下步骤将帮助您在最短的时间内开始使用 Zephyr 插件:

  1. 测试问题类型默认添加到所有新的软件业务项目类型中,但您也可以通过修改问题类型方案将其添加到您的项目中。让我们创建一个新项目来使用 Zephyr。

  2. 进入项目 | 创建项目,选择Scrum 软件开发,然后按下一步按钮:开始使用 Zephyr

  3. 在下一个屏幕中,按下选择按钮继续:开始使用 Zephyr

  4. 输入项目名称测试 Zephyr;项目TZ将会自动建议。点击提交按钮,项目将被创建:开始使用 Zephyr

  5. 转到项目管理并检查问题类型;你将会注意到问题类型测试已自动添加到你的项目中。现在你已经准备好开始使用 Zephyr 进行测试了。

  6. 转到项目管理 | 版本,并添加几个版本,如版本 1.0版本 1.1版本 1.2,或者任何你选择的名称。

  7. 返回到你的项目导航侧边栏,点击新的项目项测试开始使用 Zephyr

  8. 这里有三个标签——测试摘要测试周期可追溯性。点击测试周期标签。你会发现已经为我们的项目定义了一个临时周期。让我们添加一个新的测试周期。在周期摘要下,点击创建新周期按钮:开始使用 Zephyr

  9. 创建新周期弹窗中,选择版本 1.0作为版本,并将名称设置为功能性。可以选择性地输入描述构建环境,并在起始日期结束日期字段中选择日期。按下保存按钮继续。同样,对于版本 1.0,添加一个新的测试周期并命名为回归。添加后,在选择版本:下选择版本 1.0,你将会看到新添加的测试周期:开始使用 Zephyr

  10. 就像版本 1.0一样,为版本 1.1也添加功能回归测试周期。

  11. 点击导航菜单中的创建按钮。在创建问题弹窗中,选择你的项目,并将问题类型设置为测试,输入概要,然后向下滚动,直到看到Zephyr 测试步骤部分:开始使用 Zephyr

  12. 在三个部分中,输入测试步骤测试数据预期结果,然后点击添加按钮。你可以以类似的方式添加多个测试步骤。让我们再添加一个,然后点击创建按钮来创建测试。现在问题将被创建,在测试详情部分,你将看到我们添加的两个测试步骤。你还会注意到,测试类型的问题没有显示默认的工作流按钮。

  13. 现在我们需要执行测试。在测试详情部分下,有一个测试执行的子部分。最初,这个部分会是空的。你可以点击问题上方的执行按钮,或者点击该部分下方的这里链接来创建执行:开始使用 Zephyr

  14. 执行测试弹出窗口中,选择添加到现有测试周期并执行,然后选择一个特定的版本,接着测试周期的下拉列表将显示我们之前与该版本关联的测试周期。在负责人部分,如果您想将此执行分配给自己,选择,或从下拉列表中选择人员的名字。然后点击执行按钮。为另一个版本测试周期创建更多的测试执行开始使用 Zephyr

  15. 最初,每个测试执行的状态是未执行。要开始执行,请点击E按钮:开始使用 Zephyr

  16. 我们现在正在执行一个单独的测试执行,其中包含为此测试添加的各种测试步骤。每个测试步骤需要单独测试测试数据,并将输出与预期结果进行比较;根据输出,测试步骤的状态可以从未执行更改为通过失败进行中阻塞。只需点击未执行,下拉列表就会出现。如果发现任何 bug,可以将其与此测试步骤关联。点击输入缺陷,它会给您一个选项,您可以关联现有的 JIRA 问题,或者创建新问题:开始使用 Zephyr

  17. 除了每个测试步骤的单独状态外,测试的整体执行状态也可以以类似的方式进行更改:开始使用 Zephyr

  18. 当您开始执行测试执行并更改其状态时,测试执行部分将显示所有测试周期的汇总。返回到项目导航侧边栏,点击测试 | 测试周期标签,选择一个特定版本,您将看到一个周期摘要,显示我们创建的测试周期,以及与之关联的所有测试和该测试周期的整体进度百分比:开始使用 Zephyr

概述

在这一章中,我们学习了如何使用 Zephyr 插件快速添加测试管理功能,而无需自行定制 JIRA。Zephyr 是多个组织使用的流行插件。

在下一章,我们将查看一些可以在 JIRA 中实现的示例用例。现在您已经知道如何自定义 JIRA,下一章将帮助您了解一些基本配置,您可以从这些配置开始,在您的实例中实现类似的场景。

第六章:用例示例实施

你已经通过修改 JIRA 配置并使用流行的Zephyr插件了解了测试管理的自定义。本章不会重复这些配置,而是会提供示例数据,以便创建可在 JIRA 中实现的各种用例。本章将涵盖通常所需的问题类型、要添加的自定义字段和工作流示例。

用户可以将这些示例作为起点,在公司内实施类似的功能。在本章中,我们将了解如何开始收集需求,文中提到的示例用例可以进一步用来根据具体需求定制 JIRA。

本章涵盖的主题如下:

  • 收集需求

  • 准备 JIRA 配置文档

  • 为帮助台/支持票务设置 JIRA

  • 为需求管理设置 JIRA

  • 为缺陷追踪设置 JIRA

  • 自定义更改

收集需求

与任何其他软件项目一样,将 JIRA 自定义当作一个独立的项目来对待。作为 JIRA 管理员,你应当首先与所有利益相关者会面,以了解他们希望如何使用 JIRA。通常,这从与所有团队经理的头脑风暴会议开始。

当你想开始自定义 JIRA 时,务必准备一份文档来记录所需的所有配置。即使在实施之后,如果需要进行任何进一步的更改,你仍然需要更新该文档。这也有助于新管理员接管 JIRA 实例。当所有需求都存储在配置文档中时,追踪系统中所做的更改就变得更加容易。如果你已经有一个运行中的Confluence实例,你可以使用它来创建这些文档,所有利益相关者都能访问这些文档。通常,人们会将 Confluence 与 JIRA 一起使用,以便在文档上协作并共享信息。

准备 JIRA 配置文档

配置文档应包含有关所有方案的信息,并附有相关的背景信息来进行解释。

本文档应包含以下部分。

需要进行什么样的问题追踪?

首先,从以下问题开始:在 JIRA 中需要追踪什么样的问题?你是想追踪客户投诉,还是想追踪正在进行的项目中的缺陷?你可能会倾向于直接开始使用 JIRA 并进行即时自定义,但这种方式会导致系统混乱,长期来看将很难管理。

所需问题类型

一旦使用 JIRA 的目的明确后,确定需要追踪的问题类型。如果 JIRA 用于简单的缺陷追踪,现有的问题类型就足够了,但如果你希望将 JIRA 用于支持票务,那么你可能需要创建新的问题类型。

最佳实践

仅当现有的问题类型无法使用时,才创建新的问题类型。始终尝试重用系统中已有的问题类型。太多的问题类型不仅会让最终用户感到困惑,也会让管理员感到困扰。

需要捕捉哪些数据?

在创建问题时,识别需要捕捉的信息。JIRA 自带很多默认的系统字段,如摘要优先级截止日期描述等。在你的情况下,可能需要捕捉用户提供的额外信息,如客户名称或问题类别。准备一份所有自定义字段的清单,并注明它们的类型——无论是文本字段、选择列表还是日期。

确定自定义字段在哪些操作中会显示给用户:创建、编辑或查看。每个操作可能都有不同的屏幕。也可能在工作流过渡之间有额外的屏幕;例如,在将问题移到“待处理”状态之前,可能需要让用户填写反馈表单。

对于每个自定义字段,记录其行为——字段是否为必填项或可选项,应该在早期做出决定。

自定义 JIRA 的最佳实践

在 JIRA 中创建自定义字段非常简单,但随着实例的增长,可能会有很多这样的字段。始终尝试重用类似的字段。尽量为字段使用通用名称,这样它们就可以在其他项目中重复使用。上下文也可以用来在多个项目中使用相同的下拉菜单选择列表,但每个项目可以有不同的选项。最佳实践在第十七章,JIRA 最佳实践中有详细讨论。

问题工作流

你的问题如何从一个状态移动到另一个状态是由工作流定义的。这通常是公司在特定用例中遵循的流程。流程就是问题所经过的各个阶段。首先,决定工作流中需要多少个状态,然后再决定这些状态之间的过渡。过渡定义了问题是否可以从一个状态移动到另一个状态。对于每个过渡,决定需要哪些条件、验证和后置功能。在第四章,自定义 JIRA 用于测试管理中,我们详细讨论了工作流的定制。

整个项目可以使用单一的工作流,或者每个问题类型可以有自己的工作流。与项目经理仔细讨论,了解问题在各个阶段是如何流转的。

为帮助台/支持票务系统设置 JIRA

拥有软件产品和应用程序、并且为各种客户或客户提供服务的公司通常需要一个系统,让他们的用户可以提出投诉、建议和反馈。有多种专门的开源和专有工具可以用于此活动,但 JIRA 可以轻松定制为一个帮助台或支持票务系统。

问题类型

帮助台有一个机制来捕获客户的支持请求。我们还将为此目的创建一个新的问题类型,称为支持请求

方案名称 问题类型 备注
帮助台—问题类型方案 支持请求改进错误新功能新用户请求子任务 这创建了不可用的问题类型

工作流

我们将为支持请求问题类型使用自定义工作流,具体描述如下。它几乎与默认的 JIRA 工作流相同,只是多了两个额外的状态——等待客户和暂挂:

备注
打开 进行中已解决已关闭等待客户
  • 条件:只有报告人可以将问题移动到等待客户状态

  • 后置功能:这将优先级更改为轻微

|

进行中 打开已解决已关闭暂挂
  • 条件:只有报告人可以将问题移动到暂挂状态

  • 后置功能:这将优先级更改为轻微

|

已解决 已关闭重新打开 已解决状态的问题可以移动到已关闭状态或重新打开状态
重新打开 已解决已关闭进行中 一旦问题重新打开,可以重新解决、关闭或移动到进行中状态
已关闭 重新打开 已关闭的议题可以重新打开
等待客户 打开 一旦收到更多明确的信息,问题可以重新打开
暂挂 进行中 暂挂的议题可以移动到进行中状态

字段

支持请求问题类型将比默认的系统 JIRA 字段多一些额外字段:

字段名称 类型 是否必填 描述
项目 选择列表 选择项目名称
问题类型 选择列表 输入要执行的活动
摘要 文本 输入问题的简要描述

| 优先级 | 选择列表 | 否 | 值:

  • 最高

  • 中等

  • 最低

|

到期日期 日期选择器 输入问题的到期日期(如果有的话)
组件 选择列表 用户可以选择由项目管理员创建的组件。项目中的每个组件可以有一个专门的组件负责人,该用户可以配置为成为使用该组件的议题的默认指派人
影响版本 选择列表 选择该问题提出的版本
指派人 用户选择器 选择将处理此问题的用户
报告人 用户选择器 选择问题的报告人。默认是创建者
环境 文本框 指定在什么系统环境下报告了此问题
描述 文本框 在此字段中输入问题的详细信息
附件 文件 上传文件或截图

| 类别 | 选择列表 | 是 | 值:

  • 计费

  • 用户注册

  • 安装

  • 用户界面

  • 连接性

|

在创建新类型为 支持请求 的问题时,这些字段会显示给用户;对于其他问题类型,则使用系统默认字段。

屏幕方案

现在我们已经决定了支持请求所需的字段,创建一个名为 支持请求屏幕 的新屏幕:

问题类型屏幕方案名称 屏幕方案 问题类型 屏幕
Helpdesk—问题类型屏幕方案 Helpdesk—屏幕方案 支持请求 支持请求屏幕
默认屏幕方案 改进问题 Bug 新功能新用户请求子任务 默认屏幕

权限方案

正如我们之前提到的,最好复制默认权限方案,然后在其基础上进行更改。我们将把新的方案命名为Helpdesk—权限方案

以下表格突出显示了与默认权限方案不同的权限:

项目权限 用户/组/项目角色
指派问题 报告人
删除问题 报告人
处理问题 指派人

同时,如第四章中所讨论的,自定义 JIRA 用于测试管理,我们还可以使用问题安全方案将项目中的特定问题对其他用户隐藏。

在本节中,我们讨论了 JIRA 在支持票据方面的自定义。需要记住的重要事项是,登录 JIRA 提交支持请求的用户必须在 JIRA 中有一个账户,这意味着他们会计入许可证。在企业版中,如果用户无限制,这可能不是问题,但如果 JIRA 使用的是有限许可证,只有拥有 JIRA 许可证的账户才能登录并提交票据。如果 JIRA 对外开放,比如给你的客户使用,那么你应该要么拥有无限 JIRA 用户许可证,要么使用 JIRA 服务台,这是一个特别适用于支持请求的流行 JIRA 应用程序。它不要求提交支持票据的最终用户必须是 JIRA 用户许可证的一部分。

在第十五章中,实施 JIRA 服务台,我们将详细介绍这个流行的应用程序。它是一个专门用于支持请求的应用程序,不需要你自定义 JIRA。它具有典型支持项目的内建标准功能。

配置 JIRA 用于需求管理

让我们来看看使用 JIRA 需求管理的配置;我们将存储与需求相关的问题。这也将确保项目的期望被捕获,并在后续测试中进行验证。

问题类型

以下表格列出了需求管理的不同问题类型:

方案名称 问题类型 备注
需求—问题类型方案 需求文档变更请求改进 Bug 新功能新用户请求子任务 创建没有的 issue 类型

工作流

我们将为需求问题类型使用自定义工作流;它将用于存储项目需求;对于其余的所有问题类型,将使用默认的 JIRA 工作流。

以下表格展示了需求工作流:

备注
打开 进行中 新问题可以在工作开始时进入进行中状态
进行中 打开审核
  • 条件:只有受让人可以将问题移到审核状态

|

审核 进行中已解决
  • 过渡屏幕:在将问题从“审核”转到“进行中”时,要求用户输入评论

|

已解决 已关闭进行中重新打开 一旦解决,问题可以关闭,移回进行中状态,或重新打开
已关闭 重新打开 已关闭的问题可以重新打开

字段

需求问题类型将有一些额外的字段,除了默认的系统 JIRA 字段外。类似地,我们还将为文档问题类型创建一些新的自定义字段。

以下表格显示了字段名称和描述的信息:

字段名称 类型 是否必填 描述
项目 选择列表 选择项目名称
问题类型 选择列表 选择要执行的活动
摘要 文本 输入问题的简要描述
到期日期 日期选择器 选择问题的到期日期(如果有的话)
组件 选择列表 用户可以选择由项目管理员创建的组件
受让人 用户选择器 选择将处理此问题的用户
报告人 用户选择器 选择问题的报告人,默认是创建者
描述 文本字段 在此字段中输入问题的详细信息
附件 文件 上传文件或截图

| 需求类型 | 选择列表 | 是 | 值:

  • 客户

  • 功能性

  • 非功能性

  • 设计

|

可追溯性 文本字段 在此字段中,用户可以输入在一段时间内对需求所做的更改

文档

以下表格显示了字段名称和描述的信息:

字段名称 类型 是否必填 描述
项目 选择列表 选择项目名称
问题类型 选择列表 选择要执行的活动
摘要 文本 输入问题的简要描述
到期日期 日期选择器 选择问题的到期日期(如果有的话)
组件 选择列表 用户可以选择由项目管理员创建的组件
受让人 用户选择器 选择将处理此问题的用户
报告人 用户选择器 选择问题的报告人,默认是创建者
描述 文本字段 在此字段中输入问题的详细信息
附件 文件 上传文件或截图

| 文档类型 | 选择列表 | 是 | 值:

  • PDF

  • DOC

  • XLS

|

文档 ID 文本字段 如果文档存储在外部系统中,请在此处存储其 ID

在创建支持请求类型的问题时,用户将看到这些字段;对于其他问题类型,则使用系统默认字段。

屏幕方案

现在我们已经决定了支持请求所需的字段,创建一个新的屏幕,名为需求屏幕。以下表格显示了字段名称及其描述:

问题类型屏幕方案名称 屏幕方案 问题类型 屏幕
需求—问题类型屏幕方案 需求—屏幕方案 需求 需求屏幕
文档—屏幕方案 文档 文档屏幕
默认屏幕方案 变更请求改进 Bug 新特性新用户请求子任务 默认屏幕

权限方案

如前所述,最好是复制默认权限方案,然后在其基础上做修改。我们将命名我们的新方案为需求-权限方案。

以下表格突出显示了与默认权限方案不同的权限:

项目权限 用户/组/项目角色
指派问题 报告人
删除问题 报告人
工作在问题上 指派人

设置 JIRA 用于 Bug 跟踪

JIRA 可以开箱即用用于 Bug 跟踪。它自带一个名为Bug的默认问题类型,以及其他问题类型。然而,未来可能需要对默认配置进行某些更改,最好为 Bug 跟踪创建自定义方案。当然,我们会复制默认方案,并在复制的配置中进行更改。

问题类型

以下是 Bug 跟踪的问题类型:

方案名称 问题类型 备注
默认问题类型方案 改进 Bug 新特性新用户请求子任务 在这里无需创建新的问题类型或新的方案

工作流

我们将为Bug问题类型使用自定义工作流;它将用于存储项目需求;对于其他问题类型,将使用默认的 JIRA 工作流。

以下是 Bug 跟踪的工作流:

来源 目标 备注
打开 确认已解决已关闭等待客户
  • 条件:只有指派人可以确认 Bug

|

确认 进行中已解决 一旦问题确认,移至进行中状态
进行中 打开已解决已关闭暂停 处于进行中状态的问题可以重新打开、解决、关闭或置为暂停
已解决 已关闭已重新打开 已解决的问题可以被关闭或重新打开
已重新打开 已解决已关闭进行中 被重新打开的问题可以被解决、关闭或移动到进行中状态
已关闭 已重新打开 已关闭的问题可以重新打开

前述工作流与默认的 JIRA 工作流类似,唯一的不同是新增了一个名为“已确认”的状态。一旦 Bug 被提出,受托人有责任首先检查该 Bug。

字段

Bug 问题类型除了系统默认的 JIRA 字段外,还会有一些额外字段:

字段名称 类型 是否必填 描述
项目 下拉列表 选择项目名称
问题类型 下拉列表 选择要执行的活动
概要 文本 输入问题的简短描述

| 优先级 | 下拉列表 | 否 | 值:

  • 主要

  • 阻塞

  • 严重

  • 次要

  • 微不足道

|

到期日期 日期选择器 选择问题的到期日期(如果有)
组件 下拉列表 用户可以选择由项目管理员创建的组件
影响版本 下拉列表 选择报告该问题的版本
受托人 用户选择器 选择将处理此问题的用户
报告人 用户选择器 选择问题的报告人。默认报告人是创建者
环境 文本字段 指定报告此问题的系统环境
描述 文本字段 在此字段中输入问题的详细信息
附件 文件 上传文件或截图

| 类别 | 下拉列表 | 是 | 值:

  • 账单

  • 用户注册

  • 安装

  • 用户界面

  • 连接性

|

客户名称 下拉列表 如果应用程序由多个客户使用,使用此字段来记录他们的名称

这些字段在创建支持请求类型的新问题时显示给用户;对于其他问题类型,请使用系统默认字段。

屏幕方案

现在我们已经决定了要为Bug创建哪些字段,接下来创建一个名为Bug 屏幕的新屏幕:

问题类型屏幕方案名称 屏幕方案 问题类型 屏幕
Bug—问题类型屏幕方案 Bug—屏幕方案 支持请求 Bug 屏幕
默认屏幕方案 改进 Bug 新功能新用户请求子任务 默认屏幕

权限方案

如前所述,最好先复制默认权限方案,然后在此基础上进行修改。我们将新的方案命名为Helpdesk—权限方案

下表仅突出显示与默认权限方案不同的那些权限:

项目权限 用户/组/项目角色
指派问题 报告人
删除问题 报告人
处理问题 受托人
移动问题 项目角色(管理员)

自定义更改

我们讨论了可以在 JIRA 中实现的各种用例。当你第一次使用 JIRA 时,你无法准确确定这些定制中可能需要的变化。JIRA 管理员总是可以在方案中进行修改,以适应进一步的变化。然而,建立一个变更控制委员会并检查这些变化可能产生的影响总是一个好主意。我们将在第十七章中详细讨论这一点,JIRA 最佳实践

总结

在本章中,我们检查了几个可以在 JIRA 中实现的用例的示范实现。你可以通过遵循本章中给出的示例数据开始定制;到现在为止,你已经知道如何定制 JIRA,但更重要的是你要将 JIRA 的定制视为一个项目,并准备一份配置文档来存储你的需求,这是我们在本章中讨论的内容。

在下一章,我们将探讨 JIRA 中的用户管理。我们还将了解如何配置用户的默认全局权限,以控制他们应当访问的内容。我们还将学习创建组及其使用的重要性。

第七章:用户管理、组和项目角色

JIRA 可以供 10 人或 10,000 人使用,分布在多个地点。大型公司有多个团队在不同的项目上工作并使用同一个 JIRA 实例,因此通常需要管理权限。可能有某些项目应仅对某个团队开放,或者可能有第三方承包商在某个项目上工作,他们不应访问所有项目。JIRA 是管理用户访问级别和权限的不可思议的工具。

理解如何管理 JIRA 中的用户和组非常重要。在本章中,我们还将介绍项目角色——即在单个项目上工作的人员集合。

涵盖的主题如下:

  • 用户和组管理

  • 与项目角色合作

  • 管理员类型

用户和组管理

JIRA 是一个基于 Web 的应用程序,用于跟踪分配给人员的项目问题。这些问题的分配对象必须在系统中存在。当 JIRA 在任何组织中部署时,首先需要做的事情是收集将使用该工具的人员名单;因此,他们的账户需要在 JIRA 中创建。每个用户都会有一个独特的用户名和密码;这使得他们可以登录系统。JIRA 有其自身的内部认证机制,并且能够与轻量级目录访问协议LDAP)进行集成。

决定是否创建用户账户

在没有许可限制或需要定期创建用户的大型组织中,例如客户关怀系统,JIRA 可以配置为两种模式——公开模式和私有模式。如果您希望启用注册,请将 JIRA 配置为公开模式,它将在用户登录屏幕上显示注册链接。然而,如果 JIRA 中有许可限制,建议您使用私有模式,因为只有在这种情况下,JIRA 管理员才能创建账户。

按照以下步骤操作:

  1. 转到管理 | 系统 | 常规配置决定是否创建用户账户

  2. 点击右上角的编辑设置按钮。

  3. 在下一个屏幕中,您将看到更改模式的设置。根据您的许可限制,选择私人公开

  4. 完成后点击更新按钮以保存您的设置。

创建新用户

  1. 转到管理 | 用户管理 | 用户(在用户管理下)。创建新用户

  2. 点击右上角的创建用户按钮。

  3. 创建新用户屏幕中,输入电子邮件地址全名用户名密码,勾选发送通知邮件,勾选应用访问JIRA 软件,然后按创建用户按钮。创建新用户

  4. 您还可以勾选发送通知邮件

所有新用户都会被分配到具有全局权限访问 JIRA 的jira-software-users组。也就是说,只有当用户属于jira-software-users组时,他/她才能登录系统,并且这些用户也会计入许可证限制;当然,这可以通过在管理 | 应用程序 | 应用程序访问中更改应用程序访问来修改。

JIRA 有一些预配置的组,这些组比jira-software-users拥有更多权限。如果您想给用户 JIRA 管理员权限,可以将该用户也添加到jira-administrators组。

  1. 用户创建后,点击管理组按钮,如下图所示,来修改用户的组:创建新用户

  2. 在弹出的管理用户组窗口中,搜索jira-administrators组,并点击加入选定的组按钮:创建新用户

  3. 用户将没有完全的管理员权限来访问 JIRA 实例。

也可以将多个用户添加到一个组中;我们稍后在本章中会讨论这一点。

密码策略

组织通常会出于安全原因设定密码策略。JIRA 允许您定义这样的密码策略:

  1. 转到管理 | 系统 | 密码策略(位于安全下)。

  2. 默认情况下密码策略是禁用的。JIRA 提供了两种预定义的策略,基础安全,但我们将定义自己的策略。选择自定义;这时会打开一个新表单,您可以在其中输入密码的最小长度、最大长度,以及需要包含的大写字母、小写字母、数字和特殊字符的数量。

  3. 点击更新按钮以应用新策略。

创建新组

有时您需要对某个团队的所有用户执行某些操作;例如,您想为所有在特定项目中工作的人提供额外的权限。在这种情况下,可以创建一个组。它只是用户的集合。创建组本身不会做任何事情,如何使这个组发挥作用是通过权限方案来定义的。

让我们了解如何创建一个新组:

  1. 转到管理 | 用户管理 | (位于用户管理下)。

  2. 在右侧,有一个添加组的选项。只需为组输入名称,然后按添加组按钮:创建新组

一旦组被添加,它将出现在同一页面的列表中。

此外,向组中添加新用户非常容易:

  1. 点击您想要修改的组的操作栏下的编辑成员链接。创建新组

  2. 在下一节中,在将成员添加到选定组文本框中输入需要分配到新组的用户的用户名,然后按添加选定用户按钮。

一旦你创建了组,并且这些组的用户也已经确定,你就可以在项目权限方案或项目角色中使用它们。

使用项目角色

每个项目都是由不同的人执行的,每个人都有自己的一套责任。通常,项目的某些方面由这些属于团队的人员负责。例如,在软件项目中,通常会有一个项目负责人,负责管理项目中的一切并对整体进度负责,开发人员负责开发功能,然后还有一组测试人员负责验证已完成的功能。JIRA 的最初版本只有组,而 JIRA 管理员最终会为不同的项目创建多个组,如 proj-administrators、proj-developers 等。同时,每个项目的权限方案也需要为这些组进行定义。JIRA 开发人员意识到这是一个问题,并引入了项目角色的概念,这不仅让 JIRA 管理员可以管理用户,还允许项目管理员将用户添加到项目角色中或将其移除。

在 JIRA 中,你可以拥有在所有项目中都可用的全局定义角色,但在每个项目中,属于这些角色的人会有所不同。仅仅添加项目角色并在项目中添加用户,直到修改权限方案并定义项目角色在项目中的作用之前,是不会产生任何效果的。

创建项目角色

JIRA 提供了两个预定义角色,分别是管理员开发人员。你也可以在 JIRA 中创建新的角色。请按照以下步骤操作:

  1. 前往管理 | 系统 | 项目角色(在安全下):创建项目角色

  2. 要添加新角色,输入角色的名称描述,然后点击添加项目角色按钮。可以轻松地将新角色添加到系统中,但需要注意的是,在 JIRA 中添加新角色并不会对项目产生任何影响,直到我们在特定的 JIRA 项目中将用户添加到项目角色,并在权限方案中定义角色权限。

在项目角色中添加用户和组

现在我们已经有了一个新的项目角色,是时候为特定项目添加一些用户和组了:

  1. 前往任意项目的管理标签,然后进入用户和角色在项目角色中添加用户和组

  2. 点击右上角的添加用户到角色链接。在弹出的窗口中,搜索用户或组文本框中的用户,从下拉列表中选择角色,然后点击添加按钮。如果你想为某个特定项目角色添加更多用户或组,可以再次执行相同的操作。无论是用户还是组,都可以成为你的项目角色的一部分。在项目角色中添加用户和组

到目前为止,我们已经创建了一个项目角色,并为特定项目添加了用户。你可以对所有项目执行相同的操作。这些项目角色在我们实例中的所有项目中都可以使用,但现在我们需要定义该角色在项目中的权限。

授予项目角色权限

我们刚刚为实例添加的测试人员项目角色的权限需要通过修改项目的权限方案来配置:

  1. 转到项目标签,管理 | 权限

  2. 项目权限页面,点击右上角的操作按钮,选择编辑权限

  3. 现在你可以修改权限方案。让我们赋予他们管理观察者的权限。这样,他们可以添加一个既不是指派人也不是报告人,但仍然可以接收问题更新通知的第三方用户。点击编辑链接,如下图所示:授予项目角色权限

  4. 如下图所示,在授予权限弹出框中,首先选择项目角色,然后从下拉列表中选择测试人员项目角色:授予项目角色权限

  5. 点击授予按钮。

你可以像这样向新角色添加更多权限,当然,所有使用此权限方案的项目都会受到影响。

管理员类型

JIRA 管理员具有更改系统配置和方案、管理用户的权限。管理员用户是在安装 JIRA 时创建的。在大型组织中,如果有一个团队负责 JIRA,可能会有多个 JIRA 管理员。在 JIRA 中有一个名为jira-adminstators的组。安装过程中创建的管理员用户是该组的一部分,之后可以将更多用户添加到该组。

  1. 转到管理 | 系统 | 全局权限(在安全性下):管理员类型

如果你注意到,从管理员的角度来看,JIRA 提供了两种不同的权限,分别是JIRA 系统管理员JIRA 管理员

JIRA 系统管理员

属于该全局权限的用户可以执行所有管理员功能。他们可以在配置和方案中进行更改,执行系统恢复,甚至修改邮件配置。

JIRA 管理员

即使你的组织有多个 JIRA 管理员,仍然有一些功能需要进行限制。JIRA 管理员权限允许用户执行大部分管理功能,但不包括系统恢复、导入导出以及邮件配置更改,因为这些功能可能导致系统崩溃并可能造成数据丢失。因此,建议只将 JIRA 系统管理员权限授予组织中的一到两个人,其余人员可以拥有 JIRA 管理员权限。

总结

在本章中,你学习了如何管理用户和用户组。为新用户提供访问权限并将其分配到正确的用户组是 JIRA 管理员最重要的工作之一。将新用户添加到系统并分配到正确的用户组对数据完整性至关重要,并且应与公司政策保持一致。你还学习了如何创建项目角色并定义它们的权限。

在下一章中,你将学习如何将 JIRA 与 LDAP、Crowd 和 JIRA 用户服务器集成。这样,用户无需记住多个工具的登录信息,管理员也可以更轻松地从一个地方高效地管理用户。

第八章:配置 JIRA 用户目录以连接 LDAP、Crowd 和 JIRA 用户服务器

在拥有成千上万员工的公司中,有许多内部工具和系统。包括时间追踪、请假管理和内网门户等工具。很难在多个应用程序中管理用户账户;公司通常使用 轻量级目录访问协议LDAP)服务器来进行用户管理,一个用户账户可以在多个工具中使用,用户不需要记住多个密码。JIRA 也支持与 LDAP 集成。这是一个非常棒的功能,确实帮助了系统管理员管理用户。除了 LDAP,我们还将讨论如何将 JIRA 连接到另一个 JIRA 实例进行用户管理,以及如何与 Crowd 集成,Crowd 是 Atlassian 的单点登录软件。

本章将涵盖以下主题:

  • JIRA 的认证机制

  • 允许其他应用程序连接到 JIRA

  • 同步用户和组信息

JIRA 的认证机制

JIRA 是一个基于 Web 的工具,被多个用户使用,每个用户的权限取决于他们所属的组或在项目中所扮演的角色。JIRA 拥有一个内建的认证机制,称为 JIRA 内部目录,但是也可以将 JIRA 连接到外部目录。让我们看看这是如何实现的。

JIRA 内部目录

JIRA 自带一个默认启用的内部目录,第一个管理员用户是内部目录的一部分,直到你添加其他目录之前,所有的附加用户都会被添加到这个内部目录中。JIRA 将此信息存储在它自己的数据库中。

配置 LDAP

LDAP 是一种应用协议,用于查询和修改目录服务中的信息。在中型到大型公司中,拥有数百或数千个用户,每个人的电子邮件、电话号码及其他详细信息都存储在目录服务器上。用户可以在这个目录中查找彼此。每个用户的登录信息也被存储,各种应用程序可以依赖目录服务进行认证。

除了 JIRA 的内部认证,还可以通过 LDAP 连接到现有的目录服务:

  1. 转到 JIRA 管理 | 用户管理 | 用户目录(在 用户目录 下)。你会注意到 JIRA 内部目录 已经添加在这里,但是在我们添加其他目录(如 LDAP 或 Crowd)之后,用户搜索的顺序是通过 顺序 列来定义的。用户可能存在于一个或多个目录中,但他们会首先在列在顶部的目录中被搜索:配置 LDAP

  2. 点击 添加目录。将弹出一个窗口。选择 Microsoft Active Directory 并点击 下一步

  3. 在下图中,我们需要配置 LDAP 用户目录。首先,填写 服务器设置

    • 输入名称,可以命名为 Active Director server 或其他有用的名称。

    • 选择目录类型Microsoft Active Directory

    • 输入你的 LDAP 服务器的主机名

    • 输入你的 LDAP 服务器的端口号。

    • 输入你的 LDAP 服务器的用户名。通常格式为 user@domain.namecn=username,dc=domain,dc=com

    • 输入密码

    配置 LDAP

  4. 然后,输入LDAP 模式设置:

    • 输入基础 DN,通常格式为 dc=domain,dc=local。请向你的 LDAP 管理员询问具体信息:

    配置 LDAP

  5. 现在,设置LDAP 权限只读,这意味着用户信息只会从 LDAP 服务器中获取。在这种情况下,密码只能从 LDAP 服务器中更改,而不能从 JIRA 应用程序中更改。但是,如果你希望新登录的用户自动加入一个或多个 JIRA 组,请选择只读,带本地组,并在默认组成员资格:字段中输入组名:配置 LDAP

  6. 点击保存并测试按钮以保存配置。

现在,一个已经是 LDAP 服务器成员的新用户,可以使用相同的用户名和密码登录 JIRA 实例。此外,该用户将被添加到我们之前配置的其他 JIRA 组中。

了解基础 DN

公司中使用的 LDAP 目录可能包含成千上万的员工;可能不需要为公司中的所有用户提供 JIRA 访问权限。例如,考虑到有美国用户和亚洲用户的情况,JIRA 访问权限只需提供给美国用户即可。现在,LDAP 也有自己的组,称为域,可以利用这些域来限制对 JIRA 的访问。

请参阅下表了解相应 LDAP 域的可能基础 DN:

LDAP 域 基础 DN 备注
example.com dc=example,dc=com LDAP 目录中的所有用户都可以访问 JIRA
us.example.com dc=us,dc=example,dc=com 只有美国用户可以访问 JIRA
asia.example.com dc=asia,dc=example,dc=com 只有亚洲用户可以访问 JIRA

联系你的 JIRA 管理员以了解 LDAP 域。还要确保如果你使用 LDAP,那么任何拥有有效账户的用户都可以登录 JIRA,这样你的许可证限制可能会很快用尽。

连接到 Crowd

Crowd 是 Atlassian 的另一款单点登录应用程序。此应用可以用于管理多个用户目录。

实施 Atlassian Crowd

Crowd 支持多种类型的目录。它可以使用其内部的 Crowd 目录,也可以连接到组织中已使用的 LDAP 目录。作为第一步,至少需要在 Crowd 中配置其中一个目录。然后,确保将用于认证用户的组添加到你在 Crowd 中添加和配置的目录中。例如,jira-software-users 是在 JIRA 中定义的一个组。属于该组的用户可以登录 JIRA。只需确保该组也已添加到你的 Crowd 目录中。最后,为了与 JIRA 通信,需要在 Crowd 中创建一个应用程序。记住该应用程序的名称和应用程序密码;在配置 Crowd 与 JIRA 的连接时,你会需要它们。

已有 Crowd 实例的组织可以将其 JIRA 连接到该实例,以实现单点登录:

  1. 转到 JIRA 管理 | 用户管理 | 用户目录(在 用户目录 下)。

  2. 点击 添加目录 按钮,并选择 目录类型Atlassian Crowd实现 Atlassian Crowd

  3. 在下一个页面,填写 服务器设置

    • 输入 Crowd 服务器的名称

    • 输入你的服务器 URL,以连接到 Crowd 实例

    • 输入 应用程序名称;该应用程序需要由管理员在 Crowd 中创建

    • 提供由 Crowd 管理员给你的 应用程序密码

  4. 然后,选择 Crowd 权限读/写,如果你希望更改应用到 Crowd 服务器;如果只想检索信息,则选择 只读

  5. 首先,点击 测试设置,如果一切正常,你将能够 保存并测试 与 Crowd 服务器的连接。

连接到 JIRA 用户服务器

在大型组织中,可能会有多个 JIRA 实例供不同的团队或项目使用。用户可能需要访问所有这些实例来跟踪项目;在这种情况下,必须为同一个人创建多个账户。这不仅对 JIRA 管理员来说繁琐,而且用户也很难记住更多的用户名和密码。JIRA 允许你连接到另一个 JIRA 实例进行用户管理:

  1. 转到 JIRA 管理 | 用户管理 | 用户目录(在 用户目录 下)。

  2. 点击 添加目录 按钮,并选择 目录类型Atlassian JIRA连接到 JIRA 用户服务器

  3. 在下一个页面,填写 服务器设置

    • 输入 JIRA 服务器的名称

    • 输入你的 JIRA 实例的服务器 URL

    • 输入 应用程序名称;该应用程序需要由管理员在 JIRA 中创建

    • 提供由 JIRA 管理员给你的 应用程序密码

  4. 然后,选择 JIRA 服务器权限读/写,如果你希望更改应用到 JIRA 服务器;如果只想检索信息,则选择 只读

  5. 首先,点击 测试设置,如果一切正常,你就可以 保存并测试 与 JIRA 服务器的连接。

允许其他应用程序连接到 JIRA

在上一节中,我们将一个 JIRA 实例连接到另一个实例进行用户管理。作为 JIRA 用户服务器使用的实例需要先创建该应用程序,以便其他实例能够连接到它:

  1. 前往 JIRA 管理 | 用户管理 | JIRA 用户服务器

    点击右上角的 添加应用程序 按钮:

    允许其他应用程序连接到 JIRA

  2. 在下一屏幕上,输入 应用程序名称,如 jira-user-server 或其他有意义的名称。

  3. 输入该应用程序的 密码

  4. 最后,在 IP 地址 字段中输入实际 JIRA 服务器的 IP 地址。这一步非常重要。如果没有这一步,连接可能无法正常工作。

JIRA 用户服务器的 URL、应用程序名称和密码是需要注意的重要特征,并且需要在将连接到它的 JIRA 实例中使用。由于 JIRA 内部使用了一个精简版的 Crowd,允许 Atlassian 的其他应用程序(如 Confluence)连接到 JIRA 以共享用户库是可能的。

同步用户和组信息

现在我们已经看到了如何将 JIRA 连接到 LDAP、Crowd 和另一个 JIRA 服务器,接下来还需要了解用户信息是如何同步的。任何属于目录的新用户都应该能够登录到 JIRA 实例,但所有最近添加到目录中的新用户,在用户列表同步之前都无法访问 JIRA。

前往 JIRA 管理 | 用户管理 | 用户目录(位于 用户目录 下)。在这里,你将看到实例中添加的用户目录列表。每个条目旁边都有一个 同步 链接:

同步用户和组信息

点击 同步 链接,JIRA 将比较并获取 JIRA 服务器中的用户列表;如果服务器中有新用户,它们将会在实例中创建。这也会在我们的 JIRA 实例中创建相应的用户组。

请注意,通过此同步创建的用户是不可编辑的,如果权限设置为 只读 模式,则无法删除这些用户。

总结

在本章中,你学习了如何将 JIRA 与 LDAP、Crowd 和 JIRA 用户服务器集成。这样,用户无需记住多个工具的登录信息,管理员也可以更轻松地从一个地方有效地管理用户。你还学习了如何在 JIRA 服务器上创建应用程序链接,并讨论了用户账户的同步。

到目前为止,我们已经看到了 JIRA 的强大功能和它所提供的灵活性。JIRA 可以非常轻松地进行自定义;我们知道,可以通过从市场上安装插件来为 JIRA 添加更多功能。虽然其中一些插件是免费的,但也有一些需要购买。你还可以创建自己的插件,将新功能引入 JIRA 并对其进行修改。在下一章中,我们将看看如何创建这些插件,并提供一些简单的示例。

第九章:JIRA 插件开发与利用 REST API

JIRA 提供了许多有用的功能,不仅可以帮助你启动项目,还可以让你自定义适合你软件模型和流程的工作流程。然而,有时某些功能或自定义需求是必需的,但 JIRA 本身并不支持这些功能。不过,可以通过从 Atlassian 市场安装插件来向 JIRA 添加许多新功能。JIRA 有一个市场,用户可以在其中搜索这些插件。部分插件是免费的,部分是付费插件。如果你正在寻找额外的功能,可以在市场上搜索现有的插件,但也可以创建自己的插件,这需要对 Java 有一定的了解。本章将为你提供足够的信息,帮助你开始 JIRA 插件开发,并包含一些简单的示例。

以下主题将会涵盖:

  • 设置 Atlassian 插件 软件开发工具包 (SDK)

  • 在 Windows 上安装 Atlassian SDK

  • 创建 helloworld 插件

  • 设置 Eclipse IDE

  • 利用 JIRA 表现层状态转移 (REST) API

设置 Atlassian 插件 SDK

Atlassian 提供了一个 SDK 用于开发插件。SDK 需要先安装在你的机器上才能开始开发。它可以在 Windows、Linux 和 Mac 系统上安装。你可以使用任何这些操作系统来开发插件,但本章的指引将仅聚焦于 Windows 平台。安装 Atlassian SDK 并没有具体推荐的硬件要求;然而,为了获得较好的性能,建议在配备 i5 处理器和 8 GB 内存的机器上安装。

注意

marketplace.atlassian.com/download/plugins/atlassian-plugin-sdk-windows 下载 Windows 版本的 Atlassian SDK。

在 Windows 系统上设置 SDK 先决条件

SDK 需要在你的机器上配置 Java 环境。在 第一章,规划你的 JIRA 安装 中,我们讨论了如何安装 JDK。JDK 可能已安装在 C:\javaC:\java\jdk1.8.0_92 路径下。

验证 JDK 安装和 JAVA_HOME 系统变量

Atlassian JDK 需要系统上安装 Oracle 的 Java SE 开发工具包。请按照 第一章,规划你的 JIRA 安装 中提到的步骤安装它,并按照这里提到的步骤验证 JAVA_HOME 系统变量是否已设置。

  1. 打开 命令提示符 (cmd) 并输入以下命令:

     echo %JAVA_HOME%
    
    
  2. 它应该返回 JDK 安装路径。在我们的案例中,它如下所示:

     c:\java
    
    

验证 JAVA_HOME\bin 是否存在于环境变量 PATH 中

JDK 的bin目录包含可执行文件,例如javac,并且应该对 Atlassian SDK 可用。

你需要做的就是将以下行添加到现有的Path系统变量中:%JAVA_HOME%\bin,然后执行以下步骤:

  1. 打开 cmd 并输入以下命令:

    javac -version
    
    
  2. 它应该返回 JDK 的版本:

    javac 1.8.0_92
    
    

在 Windows 上安装 Atlassian SDK

你可以从marketplace.atlassian.com/download/plugins/atlassian-plugin-sdk-windows下载 Atlassian SDK。这个链接始终会提供 SDK 的最新稳定版本。你会得到一个名为sdk-installer-6.2.6.exe的可执行文件。按照以下步骤在 Windows 系统上安装 SDK:

  1. 下载 SDK 安装程序后,双击它并完成安装。

  2. 一旦安装完成,安装程序会提示你重启计算机。如果安装程序没有提示你重启,只需检查是否能够使用atlas-命令;如果不能,重启系统是确保 SDK 正确安装的最安全方法。

  3. 打开 cmd 并输入以下命令:

    atlas-version
    
    
  4. 它应该返回以下信息:Installing the Atlassian SDK on Windows

你可以看到,它会告诉你系统上安装的 Atlassian SDK 的版本,并提供已安装的 JDK 的详细信息。

到此为止,一切都已设置完成,你现在可以开始开发插件了。

熟悉 Atlassian SDK

当你运行atlas-version命令时,它会显示已安装 SDK 的各种详细信息。你可能已经注意到,ATLAS Home是 Atlassian SDK 安装的位置。现在,让我们打开这个目录并检查其内容:

  • apache-maven-3.2.1:这个 Atlassian SDK 使用Maven,Maven 是一个流行的自动化构建工具,用于 Java 项目。

  • bin:该目录包含用于开发插件的所有命令行工具。这里的所有命令都以atlas-为前缀。

  • repository:该目录包含 SDK 依赖的实际代码,用于开发插件。

atlas 命令

我们刚刚讨论过,所有的命令都以atlas-为前缀。在开始创建插件之前,必须有一个工作中的 JIRA 实例。这将用于测试你的插件。atlas-run-standalone命令用于为你设置并启动 JIRA 实例。

执行以下步骤:

  1. C:\目录下创建一个名为atlastutorial的文件夹。

  2. 在 cmd 中,使用以下命令更改目录:

    cd c:\atlastutorial
    
    
  3. 使用以下命令启动 JIRA:

    atlas-run-standalone --product jira
    
    
  4. 根据你的互联网连接情况,这个命令可能需要几分钟才能完成。它会下载 JIRA 文件并在2990端口启动实例:

    [INFO] Starting jira on the tomcat7x container on ports 2990 (http),
         54668  
         (rmi) and 8009 (ajp)
    [INFO] using codehaus cargo v1.4.7
    [INFO] [2.ContainerStartMojo] Resolved container artifact 
         org.codehaus.cargo:cargo-core-container-tomcat:jar:1.4.7 for container 
         tomcat7x
    [INFO] [talledLocalContainer] Tomcat 7.x starting...
    [INFO] [stalledLocalDeployer] Deploying [c:\atlastutorial\amps-
         standalone\target\jira\jira.war] to [c:\atlastutorial\amps-
         standalone/target\container\tomcat7x\cargo-jira-home/webapps]...
    [INFO] [talledLocalContainer] Tomcat 7.x started on port [2990]
    [INFO] jira started successfully in 703s at http://localhost:2990/jira
    [INFO] Type Ctrl-D to shutdown gracefully
    [INFO] Type Ctrl-C to exit 
    
    
  5. 在浏览器中输入http://localhost:2990/jira;命令也会显示确切的 URL。

  6. 输入admin作为用户名和密码。

这是你的 JIRA 实例,它是在你使用插件开发者的测试许可证设置 Atlassian SDK 后创建的;我们将使用此实例来开发 JIRA 插件。

创建 helloworld 插件

现在,我们准备在 JIRA 中创建我们的第一个插件,它将为我们的实例引入新功能。任何 JIRA 插件都包含许多文件,并且必须遵循目录结构;Atlassian SDK 提供了一个命令行工具,名为atlas-create-jira-plugin,用来创建插件。

如果你的现有 JIRA 已在命令行中运行,按 Ctrl + C 停止它,并执行以下步骤:

  1. 在命令行中,确保你处于C:\atlastutorial目录。

  2. 输入以下命令并按 Enter 键:

    atlas-create-jira-plugin
    
    
  3. 此命令将回应并要求你提供某些输入。使用下表中提到的值:

    groupId 定义值 com.atlassian.tutorial 用于唯一标识项目
    artifactId 定义值 helloworld 一个工件是一个文件,通常是 JAR 文件,最终会被部署
    version 定义值 1.0-Version 用于分发插件
    package 定义值 com.atlassian.tutorial.helloworld 用于组织相关类
  4. atlas-create-jira-plugin命令会提示你确认刚刚输入的值。按 Y 继续。新的helloworld文件夹将在c:\atlastutorial\helloworld创建。

如果你查看c:\atlastutorial\helloworld目录,你会发现由atlas-create-jira-plugin命令创建的插件项目骨架,其中包含以下文件和文件夹:

  • src:此文件夹包含插件的源代码

  • LICENSE:此文件存储插件许可证信息

  • pom:这是 Maven 配置文件

  • README:此文件包含有关如何运行插件的简要说明

在 pom.xml 中添加组织信息

打开pom.xml文件,搜索<organization>标签,并更新公司名称和公司 URL。此信息将对从 Universal Plugin Manager (UPM) 安装插件的用户可见:

<organization> 
  <name>Sparxsys Solutions Pvt. Ltd.</name> 
  <url>http://www.sparxsys.com/</url> 
</organization> 

输入公司名称并将其放入 <name> 标签中,将公司 URL 放入 <url> 标签中,并保存文件。

在 JIRA 中加载插件

我们现在已经通过一个命令创建了一个插件,实际上你可以在 JIRA 中加载此插件。虽然它现在没有功能,但我们仍然会尝试理解如何在 JIRA 中加载此插件。请执行以下步骤:

  1. 在命令行中,导航到c:\atlastutorial\helloworld目录。

  2. 输入以下命令并按 Enter 键:

    atlas-run
    
    

    这是一个安装并运行插件的 shell 脚本。

  3. 此命令将在helloworld目录中创建一个名为target的子目录。过一段时间后,JIRA 实例将启动。

  4. 在浏览器中输入http://localhost:2990/jira;确切的 URL 也将由命令显示。

  5. 输入admin作为用户名和密码。

  6. 转到 JIRA管理 | 插件 | 管理插件(在ATLASSIAN 市场下)。

  7. 用户安装的插件下,你将看到新的插件叫做helloworld在 JIRA 中加载插件

如前所示,helloworld插件现在已加载到你的 JIRA 实例中。此外,我们在创建插件时填写的版本信息也在这里显示。超链接的公司名称也显示在此处。

设置 Eclipse IDE

我们已经设置好了开发环境并安装了 Atlassian SDK。你还学习了如何创建一个骨架插件;除了在 UPM 中显示外,这个插件并没有执行其他功能。我们将向插件添加一些功能,但在此之前,让我们配置流行的 Eclipse IDE,它确实有助于开发 JIRA 插件。

下载 Eclipse IDE

Eclipse IDE 用于多种编程语言的开发,但我们将安装适用于 Java EE 开发人员的 Eclipse IDE(Indigo)。执行以下步骤:

  1. www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/indigosr2下载适用于 Java EE 开发人员的 Eclipse IDE。

  2. 将下载的文件内容提取到C:\eclipse目录中。

配置 Eclipse 以在 JDK 下启动

我们需要告诉 Eclipse IDE 启动并使用我们已经在计算机上安装的 JDK:

  1. 打开C:\eclipse\eclipse.ini文件。

  2. -vmargs条目之前添加-vm条目。我们需要在这里定义 JDK 的路径;最终的eclipse.ini文件应该类似于以下代码:

            -startup 
            plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar 
            --launcher.library 
            plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.
            v20140603-1326 
            -product 
            org.eclipse.epp.package.jee.product 
            --launcher.defaultAction 
            openFile 
            --launcher.XXMaxPermSize 
            256M 
            -showsplash 
            org.eclipse.platform 
            --launcher.XXMaxPermSize 
            256m 
            --launcher.defaultAction 
            openFile 
            --launcher.appendVmargs 
            -vm 
            c:\java 
            -vmargs 
            -Dosgi.requiredJavaVersion=1.8 
            -Xms40m 
            -Xmx512m 
    
    
  3. 保存并关闭文件。

更新 Eclipse 中的已安装 JRE

需要将 Eclipse 的 JRE 更新为我们当前安装在 JDK 版本中的 JRE。如果你不确定是否已更新 JRE,请执行以下步骤:

  1. 在菜单栏中,点击窗口 | 首选项

  2. 双击C:\eclipse\eclipse.exe应用程序,它将启动 Eclipse IDE。

  3. 在左侧,输入已安装 JRE;这将筛选出列表;之后,双击已安装 JRE

  4. 在右侧,点击添加按钮,选择标准虚拟机

  5. JRE 主目录中,输入c:\java作为目录位置,然后点击完成按钮:更新 Eclipse 中的已安装 JRE

  6. 最终,JRE 将会更新,应该类似于以下截图:更新 Eclipse 中的已安装 JRE

安装 Maven 插件

JIRA 插件的开发基于 Maven,并且需要安装 Maven 的 Eclipse 插件。执行以下步骤:

  1. 在菜单栏中,点击帮助 | 安装新软件…

  2. 可用软件窗口中,点击添加按钮。

  3. 输入名称Sonatype M2Eclipse,在位置中输入http://download.eclipse.org/technology/m2e/releases,然后点击确定按钮。安装 Maven 插件

  4. 选择Eclipse 的 Maven 集成,然后点击完成按钮。

  5. 最后,重启 Eclipse 以使这些更改生效。

配置 Maven 插件

最后,我们需要告诉 Maven Eclipse 插件 Maven 在我们机器上的位置。Maven 目录位于ATLAS Home目录中。你可以在你的机器上运行atlas-version命令,找出ATLAS Maven Home的确切位置。只需复制该位置并执行以下步骤:

  1. 在菜单栏中,点击窗口 | 首选项

  2. 在左侧,输入Maven,它将筛选出可用的Maven选项。

  3. 点击安装,然后点击添加按钮。

  4. 安装类型应选择外部。复制ATLAS Maven Home目录并点击完成按钮。

现在我们已准备好使用 Eclipse 开始开发我们的 JIRA 插件。

向骨架插件添加功能

之前创建的 helloworld 插件没有任何功能;我们将插件加载到 JIRA 中,但除了在 UPM 中显示之外,它没有执行任何操作。现在我们已经配置好了 Eclipse IDE,让我们为 helloworld 插件添加一些功能。

作为示例,我们将使用此插件在 JIRA 主导航栏中添加一个自定义链接。

在 Eclipse 中导入 helloworld 插件

我们可以使用 Eclipse IDE 并导入我们的插件,但在此之前,需要在helloworld插件项目中生成 Eclipse 配置文件。请执行以下步骤:

  1. 在 cmd 中,导航到C:\atlastutorial\helloworld目录。

  2. 输入以下命令并按回车

    atlas-mvn eclipse:eclipse
    
    
  3. 此命令将返回以下信息:

    [INFO] -------------------------------------------------------[INFO] 
          BUILD SUCCESS
    [INFO] -------------------------------------------------------[INFO] 
          Total time: 56.519 s
    [INFO] Finished at: 2014-11-28T11:15:35+05:30
    [INFO] Final Memory: 21M/102M
    [INFO] ---------------------------------------------------
    
    
  4. 现在,我们准备好在 Eclipse 中导入插件了。在菜单栏中,点击文件 | 导入…

  5. 常规下选择将现有项目导入工作空间,然后点击下一步按钮。

  6. 选择根目录中输入C:\atlastutorial\helloworld,然后点击完成按钮。

现在你应该可以在左侧的项目资源管理器下看到加载的helloworld插件项目,如下图所示。如果你在 SDK 中看到欢迎屏幕,请将其关闭。

在 Eclipse 中导入 helloworld 插件

在 JIRA 顶部导航栏中创建菜单

我们将使用一个非常简单的示例来帮助我们理解如何在 JIRA 中添加新功能。你已经熟悉了 JIRA 的顶部导航栏。从 JIRA 前端来看,无法向其添加新菜单项;然而,我们将修改我们的helloworld插件来添加此菜单项。

JIRA 的功能和各个部分的行为由不同的模块控制。如果我们想修改 JIRA 的顶部导航栏,就需要添加两个模块,分别是Web SectionWeb Item。请按照以下步骤操作:

  1. 在命令行中,导航到c:\atlastutorial\helloworld目录。

  2. 输入以下命令并按下Enter键:

    atlas-create-jira-plugin-module
    
    
  3. 要了解更多关于插件模块的信息,请参考此网址:developer.atlassian.com/docs/getting-started/plugin-modules

  4. 命令将响应并提示你为不同模块输入一个特定的数字。输入30以选择Web Section

  5. 命令将再次响应,并要求你提供某些输入。请使用以下表格中提到的值:

    输入插件模块名称 mySection
    输入位置 contact-us-links
    显示高级设置? N
  6. 命令会询问你,是否添加另一个插件模块? 按下 Y 键。

  7. 命令将响应并提示你为不同模块输入一个特定的数字。输入25以选择Web Item

  8. 命令将再次响应,并要求你提供某些输入。请使用以下表格中提到的值:

    输入插件模块名称 联系我们
    输入部分 system.top.navigation.bar
    输入链接网址 http://www.sparxsys.com/contact
    显示高级设置? N
  9. 命令会询问你,是否添加另一个插件模块? 按下 N 键。

  10. 在你的插件项目目录中运行atlas-run命令。JIRA 启动后,使用浏览器打开它:在 JIRA 顶部导航栏创建菜单

现在你应该能看到一个新的菜单项,名为联系我们,这是我们从helloworld插件中添加的。

我们刚刚开始在框架插件项目中添加功能。尽管我们所做的只是向 JIRA 导航栏添加了一个链接,但还有很多其他功能可以实现。

如果你正在开始 JIRA 插件开发,可以先浏览 Atlassian 网站上提到的教程:developer.atlassian.com/docs/getting-started/tutorials

到目前为止,我们已经讨论了创建扩展 JIRA 功能的插件,但同样也可以从其他应用程序与 JIRA 进行交互。JIRA 提供了REST API,允许你从外部应用程序操作 JIRA 的数据和配置。符合 REST 原则的 JIRA API 不要求客户端了解 API 的结构,而是服务器需要提供客户端与服务交互所需的任何信息。

各种编程语言都能够进行 REST 调用。在接下来的部分,我们将详细讨论如何与 JIRA 的 REST API 进行交互,并提供一些示例。

使用 Atlassian Connect 框架的 JIRA Cloud 插件

我们刚刚看到如何为你自己托管的 JIRA Server 实例开发插件。然而,许多组织也使用 Atlassian Cloud 实例,这是一个托管环境;它不需要任何安装。你只需在线注册并为使用付费。Atlassian Cloud 实例提供了大多数 JIRA Server 的功能。许多组织更倾向于使用云实例,因为不需要自己管理服务器。开发云插件的过程有所不同。如果你想了解如何做,请参考developer.atlassian.com/static/connect/docs/latest/guides/introduction.html中的文档。

如果你计划在 Atlassian 市场上销售你的插件,那么为 JIRA Server 和 JIRA Cloud 都开发插件是个不错的主意。

利用 JIRA REST API

我们已经讨论了如何开始构建扩展 JIRA 功能的插件。这些插件与 JIRA 的现有功能紧密集成;然而,有时你需要在 JIRA 之上添加一些功能,以便其他工具能够与 JIRA 进行交互。JIRA 通过 REST 提供了对各种操作的访问。

通过 REST 可以执行的一些操作示例

  • 问题操作,如创建/修改/删除问题

  • 搜索问题

  • 创建用户

  • 群组管理操作,如向群组添加/移除用户

通过 REST API 可以访问很多资源。你可以在 docs.atlassian.com/jira/REST/latest/ 获取所有资源的详细列表。

JIRA REST API 的使用案例

通过外部应用程序与 JIRA 进行交互的能力开启了许多可能性。让我们来看一下可以在 JIRA 上构建的功能的一些使用案例:

  • 生成业务智能报告

  • 在 JIRA 中生成批量操作

  • 为客户构建自定义界面

生成业务智能报告

JIRA 提供了很多现成的报告,我们在第三章中已详细讨论过,报告 - 使用图表可视化数据,但公司通常使用业务智能工具生成根据其需求定制的报告;在 JIRA 中,所有数据都存储在问题中,可以通过 REST API 获取。

在 JIRA 中执行批量操作

JIRA 的系统管理员常常遇到需要批量执行各种操作的情况。例如,如果公司中一个新团队想开始使用 JIRA,那么需要创建多个用户帐户。JIRA 的 REST API 提供了创建用户帐户的资源。帐户创建后,还需要将它们添加到正确的组中。尽管 JIRA 的组管理界面已经提供了通过输入用户名列表(以逗号分隔)的机制来修改用户组,但也可以通过 REST API 来修改组。

可以创建脚本来执行这些批量操作,并且可以在需要时运行它们。

为客户构建自定义界面

我们已经看到,在 JIRA 中定制权限并为客户提供有限访问权限非常容易。然而,也可以创建一个简单的 Web 界面,具有用于认证的登录框、提交工单的表单,以及一个特定项目或客户的简单问题列表。这个 Web 应用可以与 JIRA 内部交互,并充当后端来存储和检索客户的工单。

JIRA 的 REST API 浏览器

通过调用http://jira.sparxsys.com/rest/api/2/RESOURCE URL进行 REST 调用,大多数编程语言(如 Java 和 PHP)都支持它;然而,在你能够开发与 JIRA 进行 REST 交互的功能之前,需要先进行测试。

你安装的 Atlassian SDK 附带了一个非常方便的工具,叫做REST API 浏览器。它帮助你探索和测试 API。执行以下步骤:

  1. 运行atlas-run命令,就像我们在本章前面做的那样。它将启动 JIRA 实例。

  2. 在浏览器中输入http://localhost:2990/jira;该 URL 也会通过命令显示出来。

  3. 输入admin作为用户名和密码。

  4. 进入 JIRA 管理员 | 系统 | REST API 浏览器(在高级下)。

  5. 在左侧,你会找到 REST API 所提供的所有资源列表:JIRA 的 REST API 浏览器

  6. 点击任何一个资源,在主窗口的右侧;该资源可以通过传递可选参数进行测试。

让我们看一些例子来测试 REST API。

获取用户详情

在左侧,滚动或导航以查找api/2/user并点击它:

获取用户详情

用户名参数中输入admin作为值,并点击发送按钮。你将看到以下响应:

获取用户详情

响应实际上是 JSON 格式的,你可以看到它返回了admin用户的详细信息。然而,这个用户所属的组在这个响应中没有返回,但也可以获取到这些信息。执行以下步骤:

  1. 点击右侧的+参数按钮。

  2. Parameter列中输入expand

  3. Value列中输入groups

  4. 再次点击Send按钮。获取用户详情

以下是生成的响应:

获取用户详情

你可以看到,在新的响应中,通过指定额外的参数,这个用户所属的组也被获取到了。

JIRA REST API 浏览器是一个很好的工具,可以帮助你熟悉所有可用的资源,并且在开发中非常有帮助。

与 REST API 交互的示例代码

REST API 支持多种编程语言(如 Java、PHP、Python 等)。在本章中,我们将讨论几个 PHP 语言的代码示例。PHP 是一种广泛用于 Web 应用程序的流行语言。以下示例采用 PHP 编写,但即使你熟悉其他语言,如 Java,你也应该能够理解这里解释的概念。

要快速安装 PHP 和 Apache,可以从www.apachefriends.org/安装XAMPSERVER包。

使用 PHP 创建问题

示例代码create_issue.php用于使用 PHP 创建一个问题,代码如下:

<?php 

define('JIRA_URL', 'http://localhost:2990/jira'); 
define('USERNAME', 'admin'); 
define('PASSWORD', 'admin'); 

//The function that is making the REST call using Curl Protocol 

function post_to($resource, $data) { 
  $curlname=CURLOPT_POST; 
  $curlvalue=1; 
  $jdata = json_encode($data); 
  $ch = curl_init(); 
  curl_setopt_array($ch, array( 
  $curlname => $curlvalue, 
  CURLOPT_URL => JIRA_URL . '/rest/api/latest/' . $resource, 
  CURLOPT_USERPWD => USERNAME . ':' . PASSWORD, 
  CURLOPT_POSTFIELDS => $jdata, 
  CURLOPT_HTTPHEADER => array('Content-type: application/json'), 
  CURLOPT_RETURNTRANSFER => true 
  )); 
  $result = curl_exec($ch); 
  curl_close($ch); 
  return json_decode($result); 
} 

function create_issue($issue) { 
  return post_to('issue', $issue); 
} 

//The issue details 
$new_issue = array( 
'fields' => array( 
'project' => array('key' => 'GEN'), 
'summary' => 'Test via REST', 
'description' => 'Description of issue goes here.', 
'issuetype' => array('name' => 'Task') 
) 
); 

//Call the function to create the issue 
$result = create_issue($new_issue); 

//Print the output 
if (property_exists($result, 'errors')) { 
  echo "Error(s) creating issue:\n"; 
  var_dump($result); 
} else {print_r($result); 
  echo "New issue created at " . JIRA_URL ."/browse/{$result->key}\n"; 
} 

?> 

上述代码在 JIRA 项目中创建了一个问题,项目密钥是GEN,问题类型是Task。让我们理解一下这段代码的作用。

与 JIRA 进行身份验证

首先,我们需要定义我们的 JIRA URL、用户名和密码进行身份验证。请注意,这个用户应该具有在项目中创建问题的权限:

define('JIRA_URL', 'http://localhost:2990/jira'); 
define('USERNAME', 'admin'); 
define('PASSWORD', 'admin'); 

发起 REST 调用以创建问题

curl_exec() PHP 函数用于通过curl协议发起 REST 调用。这个函数接受参数来进行 REST 调用。用户名、密码和问题数据在下面的代码中传递:

function post_to($resource, $data) { 
  $curlname=CURLOPT_POST; 
  $curlvalue=1; 
  $jdata = json_encode($data); 
  $ch = curl_init(); 
  curl_setopt_array($ch, array( 
  $curlname => $curlvalue, 
  CURLOPT_URL => JIRA_URL . '/rest/api/latest/' . $resource, 
  CURLOPT_USERPWD => USERNAME . ':' . PASSWORD, 
  CURLOPT_POSTFIELDS => $jdata, 
  CURLOPT_HTTPHEADER => array('Content-type: application/json'), 
  CURLOPT_RETURNTRANSFER => true 
  )); 
  $result = curl_exec($ch); 
  curl_close($ch); 
  return json_decode($result); 
} 

function create_issue($issue) { 
  return post_to('issue', $issue); 
} 

发出数据并打印输出

需要创建的问题包含很多信息,如项目密钥、摘要、描述和问题类型。这些信息存储在数组中。最后,当代码运行时,输出会被打印出来:

$new_issue = array( 
'fields' => array( 
'project' => array('key' => 'GEN'), 
'summary' => 'Test via REST', 
'description' => 'Description of issue goes here.', 
'issuetype' => array('name' => 'Task') 
) 
); 

//Call the function to create the issue 
$result = create_issue($new_issue); 

//Print the output 
if (property_exists($result, 'errors')) { 
  echo "Error(s) creating issue:\n"; 
  var_dump($result); 
} else {print_r($result); 
  echo "New issue created at " . JIRA_URL ."/browse/{$result->key}\n"; 
} 

运行 PHP 代码后,你将得到一个输出,显示如下命令:

New issue created at http://hp:2990/jira/browse/GEN-2 

使用 PHP 获取问题详情

前面的示例很简单,我们通过 REST API 创建了一个问题。现在,让我们看看如何获取我们刚创建的问题详情:

<?php 

$username = 'admin'; 
$password = 'admin'; 

$url = 'http://localhost:2990/jira/rest/api/latest/issue/GEN-2'; 

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_USERPWD, "$username:$password"); 
curl_setopt($curl, CURLOPT_URL, $url); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); 

$issue_list = (curl_exec($curl)); 
echo '<pre>'; 
print_r(json_decode($issue_list)); 
echo '</pre>'; 
?> 

这是一个简单的代码,主要获取我们在前一个示例中创建的GEN-1问题的详细信息。REST API 返回的输出是一个 JSON 文件。我们使用json_decode() PHP 函数将 JSON 数据转换为数组,并通过print_r()函数打印出来。

前面的代码可以用来获取用户和组的详细信息;只需更改$url变量即可。

摘要

在本章中,你学习了如何为 JIRA 开发插件。如果你已经掌握了 Java 知识,并且有使用 Maven 的经验,那么你将有很好的机会学习 JIRA 和其他 Atlassian 工具的插件开发。每当现有功能无法满足需求时,你总是可以为 JIRA 开发插件。这些插件是用 Java 语言开发的,并且利用 Apache Maven 进行构建自动化。在本章中,我们讨论了如何设置开发环境和 Eclipse IDE,并且创建了一个骨架插件项目。

在下一章中,你将学习如何通过 CSV 文件将数据迁移到 JIRA。JIRA 为 Bugzilla、Mantis 以及其他一些问题追踪工具提供了迁移工具,但如果你现有的问题追踪工具有大量定制化内容,那么使用 CSV 导入迁移数据总是更为优选,这非常强大。通过细致的规划,它可以将复杂的数据导入到 JIRA 中。我们还将查看 JIRA 的 CSV 导入的主要方面。

第十章:导入和导出数据在 JIRA 中以及迁移配置

JIRA 中存储的数据对公司来说非常关键,因此 JIRA 管理员应确保定期备份数据。事实上,应该制定备份政策。在本章中,我们将讨论如何在 JIRA 中执行定期备份以及这些备份的存储位置。最重要的是,我们还将讨论如何恢复这些备份。

公司中使用了许多其他工具;例如 MantisBugzilla 这样的流行 bug 跟踪器。当您转移到 JIRA 时,如果能够将现有问题从这些工具迁移到 JIRA,将是非常好的事情,但迁移可能是一个复杂的任务。JIRA 自带一些工具,用于从外部工具导入数据;但是,JIRA 还具有一个强大的功能,可以从纯 CSV 文件导入问题。通过适当的规划,可以将任何工具的数据导出为 CSV,并从 CSV 导入到 JIRA。我们还将了解如何使用 Configuration Manager 插件来迁移 JIRA 配置,例如问题类型、工作流和其他方案到另一个 JIRA 实例。

所涵盖的主题包括:

  • 备份系统

  • 使用 CSV 进行外部系统导入

  • 使用配置管理器插件迁移 JIRA 配置

备份系统

JIRA 管理员应特别注意定期备份数据及其配置。幸运的是,JIRA 自带一个方便的工具用于生成备份。它不仅包含数据(如问题和项目),还包含存储在备份文件中的 JIRA 配置,这意味着当您恢复系统时,所有数据以及用于问题类型和工作流的各种方案也将被恢复。

JIRA UI 中提供的备份系统在有数千个问题时效率并不特别高。因此,推荐的方法是手动备份数据库。关于这种备份方法的详细信息可以在 confluence.atlassian.com/display/DOC/Production+Backup+Strategy 找到。

生成备份

JIRA 备份工具可用于根据需要执行备份。通常在 JIRA 中进行任何重大配置更改之前,应进行备份。此外,当在 JIRA 中安装新插件时,建议始终进行备份。当然,您应该有一个演示实例,它应该是生产实例的精确副本。您应该首先在演示实例上进行所有测试,但您永远不知道什么时候事情会出错。作为良好的实践,始终在执行任何重大配置更改之前进行备份。

执行以下步骤,使用 JIRA 备份工具在 JIRA 中进行备份:

  1. 导航到 Administration | System | Backup System(位于 IMPORT & EXPORT 下):生成备份

  2. 然后您将看到 Backup JIRA data 页面。

  3. 指定文件名,然后点击备份按钮生成备份文件。建议在文件名中使用时间戳。

  4. 工具将生成备份文件并提供完整的文件路径。你可以将其复制到其他位置:生成备份

备份文件存储在 JIRA HOME 目录下的 export 文件夹中。

附件的备份

JIRA 的数据包含问题、项目以及各种配置的详细信息,但也有附加到问题的文件附件。备份 JIRA 数据 工具生成一个存储信息的 XML 文件,但它无法备份文件附件。

这些附件存储在 JIRA HOME 目录下的 data\attachments 文件夹中。如果需要备份文件,应该复制 attachments 文件夹。通常,在 JIRA 实例需要迁移到新服务器时会进行此操作。文件附件按项目分文件夹存储,项目密钥即文件夹的名称:

  • 附件文件夹的名称是项目密钥,例如,DPO

  • 文件存储在一个子文件夹中,子文件夹的名称与问题 ID 相同,例如,DPO-6

使用这种组织方式,附件文件夹可以轻松恢复。

生成自动备份

我们刚刚生成的备份通常是在 JIRA 管理员需要进行一些重要配置更改之前触发的。不过,作为一种良好做法,如果这些备份能够每天自动生成,或者每周生成一次,那就更好了。

JIRA 提供了在设定时间后自动运行特定类的选项。JIRA 默认配置了一些服务,你也可以添加自己的服务。请执行以下步骤:

  1. 导航至 管理员 | 系统 | 服务(在 高级 下)。

  2. 安装 JIRA 后,你将获得预配置的服务列表:生成自动备份

列表中的第一个服务是邮件队列服务,它负责进行定期备份。调度是服务自动运行的间隔时间。对于备份服务调度每 720 分钟,即 12 小时;这意味着每隔 12 小时,备份将会生成并放置在 JIRA HOME 下的 export 目录中:

生成自动备份

如你在前面的截图中所见,JIRA 服务生成了备份文件,除了 2014-12-09-backup,那是我们手动生成的。无论是手动生成还是自动生成,备份文件的格式保持不变。

作为一种良好做法,始终将备份文件及其附件复制到一台单独的服务器上。如果服务器出现故障且备份文件存储在同一台机器上,它们也会丢失。因此,最好将它们复制到单独的服务器上。最好编写脚本来自动化将备份复制到备份服务器的过程。

恢复系统工具

现在,你已经学会了如何使用 JIRA 的备份系统工具手动生成备份,并依赖 JIRA 服务。以下是这些备份文件对你有用的两种场景:

  • 一种情况是当你的服务器崩溃时

  • 其次,当你想将 JIRA 实例迁移到一台新机器时

JIRA 提供了恢复系统工具;它基本上会擦除现有的数据/配置,并将其替换为备份文件中的数据;因此,使用恢复系统工具时必须非常小心。一般来说,总是先在测试环境中执行恢复过程;这也会给你一个机会了解并修复可能遇到的任何错误。

在这个例子中,我们将恢复之前生成的2014-12-09-backup.zip备份文件。

对于本练习,你应当在另一台与生成备份时使用的相同版本的机器上安装一个空白的 JIRA 实例。执行以下步骤:

  1. 复制存储在JIRA HOME目录下import文件夹中的备份文件。

  2. 转到 管理 | 系统 | 恢复系统(在导入与导出下):

  3. 输入文件名2014-12-09-backup.zip,这是我们之前生成的备份文件。

  4. 保持许可证字段为空;源实例的许可证详细信息已存储在备份文件中,可以在目标实例中恢复;如果你想使用新的许可证,只有在这种情况下才将其输入此字段。

  5. 外发邮件字段中,选择禁用。这将确保在恢复过程中不会向任何人发送电子邮件。

  6. 点击恢复按钮:Restoring the system utility

  7. 恢复过程将开始读取备份文件,并显示恢复进度。整个恢复过程可能需要几分钟,具体取决于备份文件的大小:Restoring the system utility

  8. 一旦恢复过程完成,你将收到一条确认信息:Restoring the system utility

恢复过程完成后,你可以使用生成备份的实例的登录和密码凭证登录到 JIRA 实例。你当前 JIRA 实例的登录将无法使用,因为所有数据已被清除并被备份文件替代。

恢复后,你可以验证以下内容:

  • 问题数量

  • 项目列表

  • 配置列表

  • 用户数量

如果这些内容与你的旧实例和恢复后的实例匹配,则恢复过程成功。

项目导入工具

恢复系统程序在需要恢复整个实例或将其迁移到另一台服务器时执行,但也可能存在只需要从另一个 JIRA 实例恢复单个项目的情况。

让我们以一家拥有多个 JIRA 实例的公司为例,这些实例被不同的业务单元使用。这些业务单元相互独立工作,拥有不同的团队,并且分布在不同的地理位置。正如你所知道的,现在公司经常进行重组。由于这一重组过程,某些项目需要从一个业务单元转移到另一个业务单元。所有项目代码和文档也需要一起转移。

在这种情况下,我们不能简单地备份一个实例并将其恢复到另一个实例,因为这会清除目标实例中的数据。恢复过程必须仅对选定的项目进行。

Atlassian 了解这种情况,并提供了一个名为项目导入的工具,正是用来执行这个操作:

  1. 导航至管理 | 系统 | 项目导入(在导入与导出下)。

  2. 输入你想要执行项目导入的备份文件名

  3. 将附件复制到JIRA HOME下的import\attachments目录中;你机器上的确切路径也会显示出来。

  4. 点击下一步按钮继续:项目导入工具

  5. 项目导入工具将读取备份文件并显示进度。根据备份文件的大小,可能需要几分钟才能完成:项目导入工具

  6. 在下一个屏幕上,将向你展示备份文件中所有项目的列表。

  7. 现在,你可以从备份中的项目下拉列表中选择你想要导入的项目。

  8. 你选择的项目的详细信息也将显示出来。项目字段显示项目名称,Key字段显示项目关键字,问题显示问题数量。

  9. 点击下一步按钮继续:项目导入工具

  10. 备份文件中的项目可能包含一些目标实例中没有的字段。项目导入工具将尝试将它们映射到现有字段。在尝试导入操作之前,你需要确保目标实例中已经创建了所有的自定义字段。

  11. 如果映射完成,点击导入按钮继续:项目导入工具

  12. 根据项目的大小,可能需要几分钟才能完成;进度将显示在屏幕上:项目导入工具

  13. 导入过程成功后,项目导入的结果将显示在屏幕上。

  14. 验证结果并点击确定按钮:项目导入工具

  15. 对所有需要导入的其他项目重复此过程。

项目导入过程是一个复杂的程序,必须先在测试实例上执行。请阅读官方文档以了解有关此过程的更多信息:confluence.atlassian.com/adminjiraserver071/restoring-a-project-from-backup-802592982.html

注意

应使用目标 JIRA 实例的相同版本生成备份。

项目配置,如问题类型方案、字段配置、工作流、通知和权限方案,应在目标实例上创建。

项目中使用的自定义字段需要在目标实例上创建。

如果项目中安装并使用了某些插件,请先在目标实例上安装它们;某些插件会创建自定义字段,直到你在目标实例上安装插件,这些自定义字段才会被映射。

使用 CSV 的外部系统导入

市场上已经有许多问题跟踪工具可供使用多年。例如 Bugzilla,主要用于错误跟踪。还有另一个流行的工具叫做 Mantis,提供了一套不错的功能,同样用于错误跟踪。那些已经在使用这些工具的公司,如果现在想迁移到 JIRA,可以使用 JIRA 自带的各种导入工具进行数据迁移。

按照以下步骤执行 CSV 导入:

  1. 导航到管理 | 系统 | 外部系统导入(在导入与导出下)。

  2. 你将看到各种导入工具的列表,如下图所示:使用 CSV 的外部系统导入

    提示

    如果你使用的是前面截图中提到的工具,那么可以尝试从现有工具导入数据。还有一些由第三方供应商开发的其他导入工具,可以从 Atlassian Marketplace 下载。你可以试试看。

这些导入工具通常在现有工具没有太多自定义的情况下工作得很好,但大多数情况下并非如此。第一个导入工具叫做CSV,它是一个通用工具,可用于将 CSV 文件中的数据导入 JIRA。我们建议先将现有工具中的数据导出为 CSV 文件,然后使用该工具将数据导入 JIRA。

需要导入到 JIRA 的数据可能相当复杂;问题也可能是其他问题的子任务,并且可能需要上传附件。

让我们看看一些可以用于将 CSV 导入 JIRA 的场景。

一个简单的 CSV 导入

让我们了解如何执行简单的 CSV 数据导入。首先需要做的是准备要导入到 JIRA 的 CSV 文件。在这次练习中,我们将把问题导入到一个特定的项目中;这些问题将包含如总结状态日期等数据,以及一些其他字段。

准备 CSV 文件

我们将使用 MS Excel 来准备 CSV 文件,包含以下数据:

准备 CSV 文件

如果你现有的工具有直接导出为 CSV 文件的选项,则可以跳过这一步,但我们建议在将数据导入 JIRA 之前先检查一下数据。通常,如果 CSV 文件的格式或数据不正确,CSV 导入将无法正常工作。

从 Excel 文件生成 CSV 文件非常简单。执行以下步骤:

  1. 转到文件 | 另存为 | 文件名:并选择保存类型:CSV(逗号分隔)。如果你没有安装 Microsoft Excel,可以使用 LibreOffice Calc,这是一个开源的 Microsoft Office Excel 替代品:准备 CSV 文件

  2. 你也可以打开 CSV 文件验证其格式:准备 CSV 文件

我们的 CSV 文件包含以下字段:

CSV 字段 目的
Project 需要在此字段中指定 JIRA 的项目密钥
Summary 这个字段是必填的,需要在 CSV 文件中指定
Issue Type 这对于指定问题类型很重要
Status 这显示了问题的状态;这些是需要在 JIRA 中存在的工作流状态,且项目工作流应该有将要导入到 CSV 文件中的状态
Priority 这里提到的优先级应该在导入之前存在于 JIRA 中
Resolution 这里提到的解决方案应该在导入之前存在于 JIRA 中
Assignee 这指定了问题的负责人
Reporter 这指定了问题的报告人
Created 这是问题的创建日期
Resolved 这是问题的解决日期

执行 CSV 导入

一旦你的 CSV 文件准备好,就可以在 JIRA 中执行导入了:

  1. 转到管理 | 系统 | 外部系统导入 | 从逗号分隔值(CSV)导入(在导入与导出下)。

  2. 文件导入屏幕的CSV 源文件字段中,点击浏览...按钮,选择你刚才在机器上准备的 CSV 文件。

  3. 一旦你选择了 CSV 文件,下一步按钮将被启用:执行 CSV 导入

  4. 设置屏幕上,选择导入到项目作为DOPT,这是我们项目的名称。

  5. 验证日期格式,它应与 CSV 文件中日期值的格式匹配。

  6. 点击下一步按钮继续。

  7. Map fields 屏幕上;我们需要将 CSV 文件中的字段映射到 JIRA 字段。此步骤至关重要,因为在旧系统中,字段名称可能与 JIRA 字段不同,因此在此步骤中将这些字段映射到相应的 JIRA 字段。

  8. 点击 Next 按钮继续。

  9. Map values 屏幕上,映射 Status 字段的值;实际上,任何字段的值映射都可以执行。在我们的例子中,状态字段的值与 JIRA 中的相同,因此点击 Begin Import 按钮。

  10. 最终,你将得到一个确认,表明问题已成功导入:执行 CSV 导入

如果在 CSV 导入过程中遇到任何错误,通常是由于 CSV 格式的问题。请仔细阅读错误信息并修正这些问题。如前所述,CSV 导入需要先在测试环境中进行。

我们刚才执行的导入是直接的,但也可以导入具有复杂性的数据显示。

使用 CSV 文件创建子任务

有时问题需要作为子任务导入。在这种情况下,请使用以下截图所示的格式:

使用 CSV 文件创建子任务

请注意这两列,即 Issue IDParent ID;为父任务的 Issue ID 列填入随机数字,并将该随机数字输入到所有子任务的 Parent ID 列中。

Issue IDParent ID 需要分别映射到 Sub-Tasks | Issue IdSub-Tasks | Parent Id,如以下截图所示:

使用 CSV 文件创建子任务

按照通常的方式继续进行 CSV 导入,子任务将被创建。

使用 CSV 文件上传附件

通常需要将文件附加到需要导入到 JIRA 的问题上。

执行以下步骤:

  1. JIRA HOME/import/attachments 目录中创建一个 csvimport 文件夹。因此,最终路径应如下所示:

            <JIRA_Home>/import/attachments/csvimport/ 
    
    
  2. CSV JIRA 导入可以使用 FILE 协议读取特定目录。它用于访问存储在同一台计算机上的文件;需要指定文件的完整路径。

  3. 在 CSV 文件中添加一个名为 Attachments 的列,并按照以下格式输入位置:

            file://csvimport/file1.pdf 
    
    
  4. 最终文件应类似于以下截图:使用 CSV 文件上传附件

不要忘记将这个新的Attachments列映射到 Attachments JIRA 字段;其余的过程保持不变。

你的问题可能会有多个附件,而不仅仅是一个。在这种情况下,为每个附件添加一个额外的列。同样,其他具有多个值的字段也可以通过简单地添加多个列进行导入。

更新现有问题

CSV 导入工具还有另一个非常好的用途。到目前为止,我们已经看到如何将数据导入 JIRA,但有时需要修改现有的工作项。例如,如果你想为某个项目的工作项添加一个新的修复版本,或者如果你想批量解决某些问题;在这种情况下,可以使用 CSV 导入工具。

在 CSV 文件中,只需添加一个 问题键 列,并添加需要更新的 JIRA 字段作为列。如果 CSV 工具找到问题键,它将更新该问题的其他列。

然而,问题导航器中也有一个 批量变更 工具,它完成相同的工作。你可以根据自己的舒适度和使用场景选择适合你的方法。我们建议使用 批量变更 工具,因为它比 CSV 导入工具更为简单。

使用配置管理器插件迁移 JIRA 配置

我们已经讨论了如何从备份文件完全恢复 JIRA 实例,如何恢复特定的项目,以及如何使用 JIRA 中的重要数据的 CSV 导入功能。这些工具非常重要,它们确实让 JIRA 管理员的工作变得更轻松。管理员可以直接在 JIRA 用户界面中执行这些操作。项目导入工具和 CSV 导入用于将一个或多个项目从一个 JIRA 实例迁移到另一个实例,但目标实例必须已具备所需的配置,否则这些工具将无法工作。例如,如果源实例中有一个带有自定义工作流状态和一些自定义字段的项目,那么目标实例中应已有与之完全相同的工作流和自定义字段配置。重新创建这些配置和方案可能是一个耗时且容易出错的过程。

在各类组织中,通常会有一个 JIRA 的测试环境或暂存服务器,所有新的配置都会先在这里进行测试,然后再推广到生产环境。目前,还没有一种方法可以选择性地将配置从一个实例迁移到另一个实例。必须在目标实例上手动完成此操作。

配置管理器是一个完成此工作的插件。使用该插件,项目特定的配置可以从一个实例迁移到另一个实例。

生成快照

以下步骤将指导你完成生成可以迁移并部署到目标 JIRA 实例的项目特定快照的过程:

  1. 进入 管理 | 插件 | 查找新插件,在 ATLASSIAN MARKETPLACE 下,在搜索框中输入 Configuration Manager,然后按下 Enter 键:生成快照

  2. JIRA 配置管理器将会出现。点击 免费试用 按钮,在你的实例上安装该插件。在随之弹出的窗口中,点击 接受 按钮。

  3. 最后,你将被要求输入你的 Atlassian 帐号,以生成试用许可证。

  4. 安装完成后,进入管理 | 配置管理器 | 快照。在此屏幕上,你可以生成项目配置的快照。点击创建快照按钮:生成快照

  5. 选择快照类型屏幕中,确保右上角选择了第二个标签项目配置。输入名称,从下拉菜单中选择一个或多个项目,勾选复选框包含至少一个问题中有值的自定义字段,并输入有意义的描述。点击下一步按钮继续:生成快照

  6. 选择过滤器屏幕中,选择在此项目中使用的过滤器。如果你的项目中也有敏捷看板,你需要选择在项目中使用的过滤器,因为敏捷看板依赖于这些过滤器。点击下一步按钮继续:生成快照

  7. 选择敏捷看板屏幕中,选择你希望迁移的 Scrum 或 Kanban 看板。确保与你想要迁移的看板相关的过滤器已经在上一步中选择。点击下一步按钮继续:生成快照

  8. 预览快照屏幕中,检查即将迁移的项目,并点击创建按钮生成快照:生成快照

  9. 最终,快照将被生成。你可以通过点击与相应快照相关的操作栏下的齿轮图标,然后点击下载来下载快照文件:生成快照

  10. 将快照文件保存在你的计算机上,文件名为Demo Project Snapshot.zip

部署快照

以下步骤将指导你如何在源 JIRA 实例上部署你所生成的快照:

  1. 进入管理 | 配置管理器 | 部署。在此屏幕中,你可以生成项目配置的快照。点击右上角的从快照文件标签。然后,点击浏览按钮,选择你在生成快照后保存在计算机上的Demo Project Snapshot.zip文件:部署快照

  2. 一旦快照文件上传到目标 JIRA 服务器,它将被列出。点击与你的快照文件相关的操作栏下的部署链接。

  3. 选择部署模式屏幕中,选择右上角的新项目标签。输入项目的名称。这些也会根据快照文件中的旧项目详细信息自动建议。点击下一步按钮继续:部署快照

  4. 分析配置变更界面,查看将被添加、修改或移除的目标实例配置。请在此界面花费相当的时间,以了解现有配置对目标 JIRA 实例的影响。按下下一步按钮继续:部署快照

  5. 迁移配置变更界面,配置管理器告诉我们无需进行问题数据迁移,因此按下下一步按钮继续:部署快照

  6. 部署界面,只需按下部署按钮即可开始部署:部署快照

  7. 最后,您将在快照部署界面看到确认信息:部署快照

配置管理器插件非常强大。它可以迁移所有与项目相关的配置,如问题类型、工作流、自定义字段、角色、权限和通知方案。我们在本节中展示的简单示例应该能让您充分理解这个有用插件的使用。

在通过配置管理器插件迁移配置并创建空白项目后,您现在可以使用我们在本章早些时候讨论的项目导入工具进行数据迁移。这个插件可以节省数百个工时,避免手动重新创建配置。

总结

在本章中,您学习了如何将数据导入和导出到 JIRA。我们首先了解了如何备份整个 JIRA 实例,您还学习了如何从备份中恢复实例。我们还讨论了如何从备份文件中导入选定的项目。我们花费了相当的时间来理解如何使用 CSV 文件将数据迁移到 JIRA,CSV 文件提供了在导入简单数据以及包含子任务和附件的复杂数据时的灵活性。最后,我们还了解了如何使用配置管理器插件,轻松地将配置从一个 JIRA 实例迁移到另一个实例。

在下一章中,我们将了解如何使用 Atlassian 提供的强大插件JIRA Agile在 JIRA 中实施 Scrum 和 Kanban 方法论,用于敏捷追踪。本章将涵盖这两种技术的两种场景。我们将讨论如何设置和配置看板,最重要的是如何分析报告。您还将通过实际示例学习这两种敏捷技术和基本概念。

第十一章:在 JIRA Software 中使用敏捷看板

在本章中,我们将了解如何在 JIRA 中实现两种敏捷方法——ScrumKanban,用于敏捷跟踪。将介绍 JIRA Agile 的关键概念,包括创建、规划和管理任务。我们还将讨论如何设置和配置看板。最重要的是,我们将讨论如何分析报告。Scrum Master 和项目经理将向你提供如何使用 JIRA Agile 的见解,这将帮助你按照敏捷概念管理工作。我们将通过实际案例来理解 Scrum 和 Kanban 看板。

涵盖的主题是:

  • 产品概览 — JIRA Software

  • Scrum 看板

  • Kanban 看板

  • 使用看板管理多个团队和项目

产品概览 – JIRA Software

到目前为止,我们已经看到 JIRA 的各个方面,例如自定义设置,同时也了解了如何安装新的插件来扩展 JIRA 的功能。许多组织使用基于敏捷的方法来进行项目管理,而直到 6.x 版本时,有一个名为 JIRA Agile 的流行插件需要单独购买。然而,从 7.x 版本开始,JIRA 被拆分为三个应用程序——JIRA Core、JIRA Software 和 JIRA Service Desk。我们也在 第一章 规划你的 JIRA 安装 中讨论了这一点。

本书中讨论的自定义和配置适用于 JIRA Core、JIRA Software 和 JIRA Service Desk。在 第十五章 实现 JIRA Service Desk 中,我们将了解如何使用它来管理支持项目,但在本章中,我们将重点讨论敏捷看板,这个功能包含在你的 JIRA Software 应用程序中。

JIRA Software 提供了实现敏捷技术的强大功能,无论你是已经熟悉敏捷概念,还是完全新接触敏捷,这个插件都能让你的敏捷之旅不仅轻松,而且精彩。

安装 JIRA Software 应用程序

如果你已经安装了 JIRA Software 应用程序,那么你无需做任何其他操作——你的实例已经具备创建敏捷看板的能力。然而,如果你只使用 JIRA Core 或 JIRA Service Desk 应用程序,则需要安装 JIRA Software 应用程序。

  1. 访问以下网址,从 marketplace.atlassian.com/plugins/com.atlassian.jira.jira-software-application/versions 下载最新版本的 JIRA Software jira-software-application.obr 文件到你的电脑上。

  2. 前往 管理 | 应用程序 | 版本与许可证,然后点击右上角的 上传应用程序 链接。在弹出的窗口中,上传你刚刚下载的 jira-software-application.obr 文件:安装 JIRA 软件应用程序

  3. 这将安装 JIRA 软件应用程序。现在,你应该访问以下网址为应用程序生成评估许可证:my.atlassian.com/

  4. 现在你应该能够在你的实例中创建敏捷看板。你会注意到顶部有一个新的菜单项,Boards安装 JIRA 软件应用程序

  5. 现在,前往 Boards | 查看所有看板,如前面的截图所示。安装 JIRA 软件应用程序

  6. 在弹出的窗口中,你将看到创建 Scrum 看板或 Kanban 看板的选项。我们将逐一创建这两种看板。

在 JIRA 软件中,你可以创建 Scrum 和 Kanban 看板;两者都用于特定的目的。

Scrum 看板

Scrum 是一种在复杂项目中使用的敏捷技术。这种技术广泛应用于软件开发项目,但它也可以轻松应用于任何过程。要了解更多关于 Scrum 技术的信息,请参考 www.scrumalliance.org/why-scrum

Scrum 技术侧重于将需求分解为小的可执行任务。然后,创建一个优先级排序的任务列表(称为 sprint),这些任务可以在一到四周的时间内完成。该 sprint 的目标是创建一个可交付的特性或产品,而不仅仅是一个原型。可以创建更多的 sprint 来完成整个需求并完成产品或项目。尚未完成的任务保存在一个名为 backlog 的列表中。

JIRA Agile 让你通过 Scrum 看板在你的流程中实现 Scrum 技术。

敏捷项目设置与 JIRA Agile 配置基础

可以从任何包含预定义问题的现有 JIRA 项目中创建 Scrum 看板;也可以从一个新的空白项目中创建 Scrum 看板。此外,如果你想了解 JIRA Agile 是如何工作的,可以创建一个预填充了示例数据的示例项目。按照以下步骤操作:

  1. 在导航菜单中,点击 Boards | 查看所有看板 | 创建看板,然后在 创建敏捷看板 弹出窗口中,点击 使用示例数据创建 Scrum 看板敏捷项目设置与 JIRA Agile 配置基础

    我们正在创建一个示例项目,其中包含虚拟数据。这将帮助我们了解 Scrum 看板的所有功能。

    敏捷项目设置与 JIRA Agile 配置基础

  2. 输入 项目名称项目键项目负责人,然后点击 创建看板 按钮。

我们刚刚创建了一个带有示例数据的项目,并且包含了一个 Scrum 看板。你也可以创建一个 Scrum 看板并选择你现有的项目来填充它。

使用故事点填充、排序和估算待办事项

在新创建的项目中,我们有一个默认显示的 Scrum 看板,你现在可以看到待办事项窗口中待处理的问题列表,也就是那些尚未解决的问题,以及一个示例冲刺:

使用故事点填充、排序和估算待办事项

待办事项包含了在项目或看板中待处理的问题。这些问题尚未被规划执行。在项目侧边栏中,第一个标签是待办事项,紧随其后的是活跃冲刺。一旦冲刺开始,你就可以通过活跃冲刺标签来管理和处理它。

示例 Scrum 看板已经包含了一个冲刺,里面有一定顺序的特定问题。冲刺是一个时间段,在这个时间段内,特定的计划活动需要完成。Scrum Master 或项目经理可以定义问题完成的顺序。这个顺序也被称为排序,团队在处理这些问题时需要遵循这个顺序。排序非常重要,因为有些任务必须在其他任务开始之前完成。

在 Scrum 方法论中,个别任务的估算不仅基于所花费的时间量,还基于任务的复杂度。例如,两个任务的时间估算都是一天,但第一个任务执行起来很复杂,比如这是团队第一次执行这个任务。复杂度通过故事点来衡量。故事点可以是 1 到 10 之间的任何数字,或者是斐波那契数列中的任何数字,即 1, 1, 2, 3, 5, 8, 13, 21 等。数字越大,任务越复杂。

Scrum Master 可以为冲刺中的问题分配故事点,尽管每个问题不一定都必须有故事点。但是,拥有故事点能让团队对问题的复杂度有一个大致的了解。

规划和创建冲刺

示例 Scrum 看板已经包含一个正在进行的冲刺,让我们来创建一个新的冲刺。JIRA 软件允许你即使在活跃冲刺没有完成的情况下创建另一个冲刺;但是,新冲刺不能开始。可以在 JIRA Agile 中启用并行冲刺功能,这样我们就可以同时进行多个冲刺。

冲刺的规划必须在 Scrum 看板的规划模式下完成。执行以下步骤来同时进行多个冲刺:

  1. 转到管理 | 应用 | JIRA 软件配置(在JIRA SOFTWARE下):规划和创建冲刺

  2. 勾选并行冲刺的复选框。

    就是这样,回到你的看板,开始规划你的下一个冲刺。

  3. 返回项目,在待办事项标签页中,点击位于问题待办事项前的创建冲刺按钮:规划和创建冲刺

  4. 一个空的冲刺将被创建。

  5. 现在,开始将问题从待办事项拖到你的示例冲刺(在我们的例子中是示例冲刺 3):规划和创建冲刺

  6. 一旦你将所有问题放入冲刺中,你可以在冲刺内重新排序它们并定义它们的优先级,即哪些问题需要首先执行,哪些其次执行,依此类推。

  7. 可选地,你还可以创建史诗来将多个故事组合在一起。史诗只是一个大型的故事。创建史诗非常简单。在冲刺的左侧,点击创建史诗链接:规划和创建冲刺

  8. 在弹出窗口中,输入史诗名称摘要。点击创建按钮继续:规划和创建冲刺

  9. 你可以创建更多的史诗;最后,将问题从冲刺拖到史诗中。这将把问题分配到这些史诗中:规划和创建冲刺

  10. 在将问题分配到史诗之后,你可以开始冲刺。点击右上角的开始冲刺链接。在弹出窗口中,输入冲刺名称,选择持续时间开始日期结束日期会自动更新:规划和创建冲刺

请注意,在你没有规划好问题、排列它们并估算故事点之前,冲刺永远不会开始。一旦你开始冲刺,你将被带到 Scrum 看板中的活跃冲刺标签页。在这里,你将看到冲刺中所有问题的列表,分为三列,分别是待办进行中已完成

规划和创建冲刺

活跃冲刺标签页中,单个指派人可以将问题拖到进行中列或已完成列。这类似于进行工作流转移。

活跃冲刺中,有很多自定义选项可以使其更加高效。

配置泳道、卡片颜色、编辑卡片字段和快速过滤器

活跃冲刺是冲刺开始后团队成员在看板上监控的部分。当参与冲刺的人数过多时,可能会让他们很难找到自己正在处理的问题。我们来看看 Scrum 看板的一些自定义设置。

泳道

工作模式中出现的问题可以被归类在一起,这样对应的成员就能更容易地在看板上找到这些问题。此外,当问题从一个列拖到另一个列时,它们只能在自己的分组内拖动,这种分组叫做泳道。默认的泳道是故事问题类型。让我们来修改这个:

  1. 导航至面板 | 配置 | 泳道(在配置下):Swimlanes

  2. 从下拉列表中选择受让人作为泳道基础,并将未分配的任务设置为显示在其他泳道下方Swimlanes

泳道也可以基于史诗(epic),并且可以完全没有泳道。

卡片颜色

出现在活动冲刺中的单个任务显示在一个矩形框中,称为卡片。这些卡片的颜色可以根据任务的类型优先级受让人查询条件来改变。卡片颜色的默认选项是任务类型;让我们将其更改为任务优先级:

  1. 前往面板 | 配置 | 卡片颜色(在配置下)。

  2. 基于颜色的选择中,从下拉列表中选择优先级Card colors

点击颜色框,将颜色更改为你选择的颜色。

卡片字段

待办事项活动冲刺中的卡片显示任务 ID任务摘要,但最多可以添加三个附加字段。按照以下步骤操作:

  1. 导航至面板 | 配置 | 卡片布局(在配置下)。

  2. 这三个附加字段可以在待办事项活动冲刺中添加。我们将在活动冲刺中添加一个额外字段。从字段名称下拉列表中选择优先级,然后点击右侧的添加按钮。Card fields

总共可以添加三个附加字段,这些字段可以显示在卡片上。此功能的提供是为了让团队成员能够查看提供额外信息的字段。

快速筛选器

我们已经看到如何自定义泳道以对多个任务进行分组。假设在当前活动的冲刺中,有 20 个任务分配给你,但其中有一些任务是最高优先级的。在这种情况下,如果能够快速筛选出分配给你的任务以及今天到期的任务,那将非常方便。按照以下步骤操作:

  1. 导航至面板 | 配置 | 快速筛选器(在配置下)。

  2. 快速筛选器名称中输入最高优先级。在JQL列中输入priority = Highest作为查询条件,然后点击添加按钮:Quick filters

我们已经在面板上做了一些自定义设置。现在,让我们回到活动冲刺

Quick filters

现在,你可以看到在顶部新增了一个名为最高优先级的快速筛选器;点击此链接,面板将只显示优先级为最高的任务。注意,泳道现在是基于任务的受让人来划分的。任务的优先级现在已添加到卡片上。同时,卡片的颜色也会根据任务的优先级进行调整。

这些自定义设置帮助团队高效工作,使他们不需要花费太多时间查找相关信息。

燃尽图和速度图

你已经学会了如何规划、估算和启动冲刺,以及在看板中执行任务时的各种配置。我们已经检查了团队如何查看他们在冲刺中的任务。现在,是时候监控团队的进度了。有两个报告是至关重要的——一个是燃尽图。这个图表清晰地展示了冲刺当前的状态。第二个是速度图。这个图表有助于了解团队的处理能力,具体来说,就是它能处理多少工作量。这两个报告帮助 Scrum Master 监控项目的进展。让我们一起看看这两个报告。

燃尽图

在规划冲刺时,我们主要做了两件重要的事情。首先,我们确定了需要完成问题的优先顺序。其次,我们对问题进行了故事点估算。这些我们最初规划的故事点,让工作人员对任务的复杂性有一个大致了解。现在,冲刺一开始,基准线就会在开始日期和结束日期之间形成。这条基准线在图表中以灰色线条显示,它描绘了从冲刺开始日期到结束日期执行问题的理想情况。当问题解决时,它的故事点会被消耗掉,整个冲刺的剩余故事点减少。

导航到项目侧边栏 报告 | 燃尽图(在敏捷下):

燃尽图

当团队开始处理问题时,另一条红色的线开始跟随基准线。通过查看这个图表,整个团队可以轻松判断他们是否在正轨上。如果剩余值的线进展在基准线指导线之上,那么这表明故事点消耗得较慢,最终,冲刺中的所有问题将无法完成。

紧接着燃尽图,显示了每个问题的详细信息:

燃尽图

在这个表格中,你可以看到冲刺开始时有多少个问题。随着问题的解决,它们的故事点会从冲刺的总故事点中扣除。总故事点和剩余故事点会展示给用户。

让我们再看一遍燃尽图,并聚焦于图表的末尾:

燃尽图

从这个燃尽图中可以清楚地看出,冲刺结束时,并非所有的故事点都已燃尽;这些未完成的问题将在冲刺完成后重新加入待办事项列表。

速度图

每个冲刺开始时都会有一个总的故事点数。理想情况下,冲刺团队应当完成所有这些故事点。现实中,并不是每次冲刺都能在结束前完成所有任务。Scrum 大师的主要职责之一是确保团队有足够的故事点可以完成,不多也不少。然而,在冲刺开始时,估算团队能完成的故事点数并不容易。速度图简单地显示了计划的故事点数与团队实际完成的故事点数之间的对比。这个对比会展示过去几次冲刺的数据,以便计算团队的平均容量,这就是团队的工作能力。

导航到项目侧边栏Reports | Velocity(在Agile下):

速度图

这张图表清楚地显示了团队在之前的冲刺中完成的故事点。如果你计算出团队至今能完成的所有故事点的平均值,你就能了解团队的工作容量。这有助于 Scrum 大师为下一个冲刺做出足够资源的规划。

看板

我们已经讨论过 Scrum 方法论,它广泛应用于软件开发项目中,在这些项目中,需求被拆解成较小的任务,使用故事点进行估算,最后由 Scrum 大师或产品经理进行规划。Scrum 技术适用于任何需要规划的流程,但也有许多情况,团队会根据需要持续进行工作。一个典型的应用场景是客户支持项目,其中一定数量的人员负责处理公司为特定产品或项目提出的问题。通常,这些支持问题需要立即响应,并且不需要详细的规划。

在这种情况下,待处理问题的整体可视化非常重要。看板没有像 Scrum 看板那样的Plan模式。它只有Work模式,类似于 Scrum 看板。

设置看板

可以使用现有的项目或过滤器创建看板。为了了解看板技术在 JIRA 中的运作方式,可以创建一个示例看板和项目。请按以下步骤操作:

  1. 在导航菜单中,点击Boards | View All Boards | Create board,然后在Create an Agile board弹窗中,点击Create a Kanban board with sample data设置看板

  2. 输入项目名称项目关键字项目负责人,然后点击Create board按钮。设置看板

正如你会注意到的,活动冲刺标签页在看板中是不存在的。团队只能看到看板。这个看板与 Scrum 看板非常相似,你还可以根据指派人配置泳道;默认情况下,Kanban 看板中的泳道是配置为使用priority = Highest查询。这意味着应该立即解决的问题会显示在最上面。

被指派这些问题的人可以将问题从一个列移到另一个列。这些列表示工作流状态。我们为 Scrum 看板所做的大部分配置也可以在 Kanban 看板上进行;让我们执行一些我们在 Scrum 看板中没有检查的配置。

列约束

当一个团队处理支持问题时,尽快解决问题是很重要的。通常,公司会与客户签署服务水平协议SLA),即需要就解决时间达成一致。在这种情况下,整个团队应该了解他们需要处理的所有问题。例如,如果可用的支持人员较少,那么这些人能在某个时间点处理的问题数量是有限的。在示例 Kanban 看板中,你会注意到,进行中列在有多个问题时会变红。

假设你想在待办事项中有超过四个问题时提醒团队:

  1. 导航到看板 | 配置 | (在配置下)。列约束

  2. 列管理中,首先选择列约束问题数量。如前所示的截图所示,在待办事项部分输入问题的最大数量。

  3. 现在,在你的示例项目中再创建一个问题,以便你的待办事项中有超过四个问题。

  4. 返回你的 Kanban 看板并检查待办事项列:列约束

剩余的配置与我们为 Scrum 所做的完全相同。你可以配置泳道、添加快速筛选器,并在卡片布局中添加一些额外的字段。配置这些的过程已经在 Scrum 部分讨论过了,Kanban 看板也是相同的。

使用看板管理多个团队和项目

我们为理解 Scrum 和 Kanban 技术而创建的示例项目和看板只使用了一个项目,但 JIRA 软件看板也可以配置为使用多个项目。

如果你的团队成员在为同一个客户处理不同的项目,那么从一个看板管理工作会更有意义。Scrum 和 Kanban 看板可以配置为处理来自一个、两个或多个项目的问题。执行以下步骤以从一个看板管理工作:

  1. 在导航菜单中,点击看板 | 查看所有看板 | 创建看板,在创建敏捷看板的弹窗中,点击创建 Scrum 看板按钮或创建 Kanban 看板按钮。

  2. 在弹出窗口中,您可以选择创建一个新项目并附带新看板,或者从筛选器中创建一个看板,但我们可以选择第二个选项,即从现有项目创建看板,然后点击下一步按钮:使用看板管理多个团队和项目

  3. 在下一屏幕中,输入看板名称并选择多个项目。点击创建看板完成:使用看板管理多个团队和项目

  4. 您新创建的看板现在将包含您选择的所有项目中的问题。

现在可以将多个项目中的问题添加到 Scrum 看板的冲刺中,或者它们将出现在 Kanban 待办事项中,您的团队可以进行处理。

摘要

在本章中,您学习了如何使用软件应用程序实施 Scrum 和 Kanban 敏捷方法。我们理解了如何使用这两种看板,并学习了可以在其中执行的各种配置。JIRA 软件既可以作为独立实例使用,也可以作为应用程序安装在现有的 JIRA Core 应用程序中。

在下一章中,我们将讨论 Groovy Script Runner,它是一个非常棒的附加组件,用于在工作流中执行复杂的自定义操作,访问强大的 JQL 功能,并运行可以供 JIRA 管理员用来高效维护实例的各种脚本。

第十二章. 使用 ScriptRunner 和 CLI 附加组件进行 JIRA 管理

当使用 JIRA 实现一个包含大量条件、验证和工作流的复杂用例时,有些配置是现有功能无法完成的。例如,你可能希望在工作流转换后自动计算自定义字段的值。使用ScriptRunner插件,许多此类高级配置都可以实现。它内置了各种管理脚本,赋予管理员强大的权限来管理他们的实例。在本章中,我们将讨论 ScriptRunner 附加组件,以及 JIRA 命令行界面CLI)附加组件,以便从命令行执行各种 JIRA 功能。

我们将讨论以下主题:

  • 安装 ScriptRunner

  • 安装 CLI

安装 ScriptRunner

和其他任何附加组件一样,ScriptRunner 可以从 JIRA 管理界面进行安装。请按照以下步骤在你的 JIRA 实例中安装 ScriptRunner:

  1. 导航到 管理 | 附加组件 | 查找新附加组件(在ATLASSIAN MARKETPLACE下)。

  2. 在搜索框中输入ScriptRunner并按回车键。ScriptRunner 附加组件将在搜索结果列表中显示:安装 ScriptRunner

  3. 点击免费试用按钮。然后,在接受条款和协议的弹窗中点击接受按钮,ScriptRunner 附加组件将开始下载:安装 ScriptRunner

  4. 然后,ScriptRunner 将在你的实例中下载并安装。最后,你将被要求输入你的 Atlassian 账户,以生成 ScriptRunner 的试用许可证。

  5. 在弹出的确认安装附加组件的窗口中,点击右下角的关闭链接:安装 ScriptRunner

ScriptRunner 现在将被安装到你的 JIRA 实例中。

内置的管理脚本

ScriptRunner 附加组件允许用户编写和运行自己的脚本。它内置了大量不错的脚本,使得 JIRA 管理员能够执行许多其他功能,这些功能使用现有的 JIRA 特性无法完成,或者从 UI 中根本无法做到。让我们来看看这些脚本中的一些。

访问内置脚本

要访问随 ScriptRunner 附加组件提供的脚本,请执行以下步骤:

  1. 导航到 管理 | 附加组件 | 内置脚本(在SCRIPTRUNNER下)。

  2. 在本节中,可以找到所有内置脚本的列表:访问内置脚本

  3. 点击这些链接中的任何一个来运行该特定的内置脚本。这将进一步要求你输入与该脚本相关的参数。

让我们来看看这些内置脚本中的一些。

复制项目

只有 JIRA 管理员有权限在 JIRA 中创建项目(并更改配置)。每当需要在 JIRA 中新增项目时,管理员需要手动创建项目并更改它们的方案。这不是一项困难的任务,通常只需 10 分钟,但有时需要创建十个项目,而手动创建这些项目可能需要几个小时。

ScriptRunner 内置了一个脚本来复制项目及其配置,是否包含问题都可以。执行以下步骤:

  1. 点击复制项目链接:复制项目

  2. 在下一个屏幕上,选择光标作为源项目,输入目标项目密钥目标项目名称

  3. 如果你希望同时复制项目版本和项目组件,请勾选复制版本复制组件复选框。

  4. 点击运行按钮以启动复制项目脚本:复制项目

完成后,屏幕底部会显示一条消息,表示项目已被复制,并提供到新项目的链接。如果你检查新的复制项目,会发现它具有源项目的所有配置。这个工具运行时间不到一分钟,JIRA 管理员使用它可以节省大量时间。

升级服务

这是一个出色的内置脚本,可以帮助 JIRA 管理员对特定的一组问题执行周期性操作。以支持票据配置为例,我们在项目中有一个名为等待客户端的工作流状态。它用于表示需要从客户那里获取更多信息才能继续处理票据。如果票据在过去两周内没有更新,这些问题需要自动解决:

  1. 点击升级服务升级服务

  2. 点击新建服务以创建一个新服务:升级服务

  3. 输入2 周内没有更新作为描述

  4. JQL 查询中,输入status="等待客户端" AND updated >= -14d

  5. 输入你的用户密钥并指定间隔/CRON 表达式1440,即 24 小时。在操作下拉菜单中,将显示所有实例中所有项目的工作流状态。根据你的项目选择你要执行的工作流转换。例如,你可以选择关闭问题(2)

    注意

    由于我们想要关闭符合 JQL 查询标准的问题,在额外的任务操作字段中,输入代码issueInputParameters.setResolutionId('1')

    你也可以通过点击展开示例并选择将解析设置为固定链接来执行此操作。

  6. 点击添加服务按钮以保存此服务:

升级服务

现在,我们已经添加了一项服务,它将在每 24 小时后运行,并解决过去 14 天内未更新的问题,即两周内未更新的问题。

切换到不同的用户

想象一下,当用户在 JIRA 中报告某个问题时,作为 JIRA 管理员,您需要使用他们的 ID 登录以了解该用户可能面临的问题。您可以要求该用户提供密码,或者创建一个具有相同权限的相似用户。相比之下,是否更好能够在不询问密码的情况下,使用该用户的用户名直接登录 JIRA?有一个内置脚本可以实现这一点:

  1. 点击切换到不同的用户

  2. 输入用户的用户 ID并点击运行按钮:切换到不同的用户

  3. 点击屏幕底部出现的这里链接。然后,您将以不同用户身份登录:切换到不同的用户

这个脚本是我最喜欢的之一,因为我可以使用任何用户名登录,而无需询问用户的密码。这也节省了大量时间。

使用条件、验证器和后置功能修改 JIRA 工作流

ScriptRunner 插件的最佳部分是它在 JIRA 工作流中带来的额外功能。开箱即用,它提供了各种可以在工作流中配置的条件、验证器和后置功能,但其功能有限。ScriptRunner 只是为您提供了更多选项,您可以在工作流中控制它们。我们来看一下这些选项。

条件

ScriptRunner 带来了一组额外的条件,您可以将其添加到工作流中;它让您对许多事项拥有惊人的控制能力,这在之前是无法实现的。执行以下步骤:

  1. 修改您选择的工作流。对于任何过渡,导航到条件标签页,然后点击添加条件链接。

  2. 您将找到一个新的条件,叫做脚本条件;只需选择它并点击添加按钮:条件

  3. 在下一个屏幕中,您将看到可以添加为工作流条件的脚本列表:条件

让我们讨论一些这些脚本。

所有子任务必须被解决

如果您希望某个问题的所有子任务都以特定的解决方案解决,可以添加以下条件:

所有子任务必须被解决

只需选择您希望子任务在移至已解决状态后具有的解决方案,然后点击添加按钮。

如果此查询匹配 JQL 查询,则允许过渡

在执行工作流过渡时,您可以在工作流条件中使用自定义 JQL,并仅在该 JQL 返回您要过渡的问题时才允许过渡:

如果此查询匹配 JQL 查询,则允许过渡

例如,如果你希望转换仅在问题的指派人是当前登录用户,并且问题的到期日期是今天时发生,在JQL 查询字段中添加assignee = currentUser() and due = now()查询,然后点击添加按钮。你还可以选择输入特定的问题 ID 以预览此条件。

检查问题是否曾处于某个状态

工作流可以有多个状态,并且它们之间可以有多个转换。一个工作流状态可以有多个转换。如果你希望转换只发生在特定状态下,可以添加以下条件:

检查问题是否曾处于某个状态

只需从下拉列表中选择进行中作为前一个状态,并检查这个状态是否必须是立即之前的状态,如果可以是任何其他先前的状态,请取消选中此选项,然后点击添加按钮。

简单的脚本条件

ScriptRunner 有一些现成的简单脚本,可以快速添加为条件:

简单的脚本条件

只需点击任何示例链接,它就可以作为条件添加。例如,我添加了一个条件,用来检查某个问题附件是否是 PDF 文件。点击添加按钮继续。

验证器

就像附加条件一样,ScriptRunner 提供了一些额外的验证器,你可以将其添加到工作流中;它让你对很多以前无法实现的事情有了惊人的控制力。执行以下步骤:

  1. 修改你选择的工作流,并在任何转换中,导航到验证器标签页,然后点击添加验证器按钮。

  2. 你会看到一个新的验证器,名为脚本验证器。只需选择它并点击添加按钮:验证器

  3. 在下一个屏幕中,你将看到一个可以添加为工作流验证器的脚本列表:验证器

让我们来讨论一些这些脚本。

字段更改验证器

你可能会在工作流转换中使用一个弹出窗口让用户输入附加信息的转换视图。这些转换视图不过是一个包含一个或多个字段的屏幕。使用此验证器来验证这些字段是否已更改:

字段更改验证器

选择你想检查更改的所有字段,然后点击添加按钮。这里显示的字段仅是当前工作流转换视图中包含的字段。

在转换时要求评论

在转换视图中,通常也会有一个评论字段。使用此验证器来验证是否已添加评论:

在转换时要求评论

这个验证器不需要任何参数进行配置。只需点击添加按钮。

简单脚本验证器

ScriptRunner 提供了一些现成的简单脚本,可以快速作为验证器添加:

简单脚本验证器

只需点击任何示例链接,它可以作为验证器添加。例如,如果你想强制要求问题至少有四个子任务,则点击子任务数大于两个并将条件2修改为4,使其变为issue.subTasks.size() > 4。点击添加按钮继续。

后置功能

就像附加条件和验证器一样,ScriptRunner 还提供了一组附加的后置功能,你可以将它们添加到工作流中;这使你能够对许多以前无法完成的操作拥有惊人的控制能力。请按以下步骤操作:

  1. 修改你选择的工作流,并为任何转换导航到后置功能标签页,然后点击添加后置功能链接。

  2. 你将看到一个新的后置功能,名为脚本后置功能;只需选择它并点击添加按钮:后置功能

  3. 在下一个屏幕上,你将看到一组可以作为工作流后置功能添加的脚本:后置功能

让我们讨论一些这些脚本。

将当前用户添加为观察者

假设某个问题的优先级为重大,并且当前登录的用户在进行工作流转换时应该被添加为该问题的观察者;在这种情况下,使用以下后置功能:

将当前用户添加为观察者

从示例列表中,点击优先级为重大的链接,将添加一个条件。现在,每当此条件在工作流转换期间为真时,后置功能将被执行。点击添加按钮以添加后置功能。

当所有子任务解决时,转换父任务

如果你的问题有很多子任务,当所有子任务都解决时,可以将父任务移动到工作流中的新状态:

当所有子任务解决时,转换父任务

选择父任务操作完成(41),并选择解决方案完成。点击添加按钮以添加后置功能。这在 Scrum 看板中尤为有用,当所有子任务都解决时,你需要改变故事的状态。

工作流中可以使用许多其他后置功能。通过使用 ScriptRunner 插件,可以为工作流增加更多的灵活性和控制,执行以前无法完成的操作。

访问强大的 JQL 功能

我们已经讨论过如何使用 JQL 的基本高级搜索选项在 JIRA 中搜索问题。然而,JQL 有一些限制。JIRA 管理员通常尝试直接从数据库中获取信息,但这很困难,因为它需要对 JIRA 数据库架构有深入了解。

ScriptRunner 引入了新的 JQL 函数。您可以在您的实例中使用这些函数。安装完该插件后,只需执行重新索引操作即可启用新的 JQL 函数。

让我们讨论一些这些 JQL 函数。

返回带有评论数的工单

使用以下 JQL 查询来返回带有特定评论数的工单:

issueFunction in hasComments(3)

以下查询将返回带有超过四个评论的工单:

issueFunction in hasComments('+5')

根据评论属性返回工单

使用以下查询返回由项目角色管理员评论的工单:

issueFunction in commented("role Administrators")

此查询会返回过去七天内某个特定用户评论过的工单:

issueFunction in commented("after -7d by ravisagar") 

根据附件返回工单

使用以下查询来获取带有 PDF 附件的工单:

issueFunction in hasAttachments ("pdf")

这个查询会查找过去七天内,某个特定用户上传的附件文件中的工单:

issueFunction in fileAttached("after -7d by ravisagar")

比较日期

也可以通过比较日期字段,如解决日期到期日期,来获取工单。

使用此查询返回解决时间晚于到期日期的工单:

issueFunction in dateCompare("", "resolutionDate > dueDate")

以下查询会查找在创建后一周内解决的工单:

issueFunction in dateCompare("", "created +1w > resolutionDate ")

这些只是您可以使用的其他 JQL 函数的一些示例。欲了解完整列表,建议您参考jamieechlin.atlassian.net/wiki/display/GRV/Scripted+JQL+Functions

ScriptRunner 是我个人最喜欢的插件,我在所有管理的 JIRA 实例中都会使用它。它为有效管理 JIRA 中的各种行政任务提供了强大的功能和控制力。除了提供管理员可以直接使用的各种内置脚本外,用户还可以编写自己的脚本,并用它来执行更复杂、更高级的任务。编写脚本的能力为增强工作流和在 JIRA 中增加新功能提供了很多可能,而无需开发插件。

安装 JIRA CLI

就像任何其他插件一样,Atlassian CLI 也可以通过 JIRA 的管理界面进行安装。按照以下步骤将其安装到您的 JIRA 实例中:

  1. 转到管理 | 插件 | 查找新插件(在ATLASSIAN MARKETPLACE下)。

  2. 在搜索框中输入Atlassian Command Line Interface并按Enter键,JIRA 命令行接口(CLI)插件将出现在搜索结果列表中:安装 JIRA CLI

  3. 点击免费试用按钮,然后在接受条款和协议弹窗中点击接受按钮,JIRA CLI 插件将开始下载:安装 JIRA CLI

  4. JIRA CLI 将被下载并安装到您的实例中。最后,系统将要求您输入您的 Atlassian 帐户,以生成 JIRA CLI 的试用许可证。

  5. 在弹出的确认插件安装窗口中,点击右下角的关闭链接:安装 JIRA CLI

JIRA CLI 将会安装到你的 JIRA 实例中。这个插件在 JIRA 实例中并没有真正的用户界面;相反,这个插件是通过名为 Atlassian 命令行界面(CLI) 的工具来远程访问 JIRA,该工具是一个脚本集合,必须从你的计算机上运行。你可以从 marketplace.atlassian.com/plugins/org.swift.atlassian.cli/server/overview 下载它。

你将获得一个像 atlassian-cli-5.4.0-distribution.zip 的文件。将其保存到你计算机上的任意位置。解压此包后,使用 Windows 命令行,导航到解压后的文件夹并运行以下命令。

获取看板列表

以下命令将获取你 JIRA 实例中所有看板的列表:

jira --server http://jira.example.com --user "demouser" --password "demopassword" --action getBoardList

上述命令将产生以下输出:

获取看板列表

获取特定问题的评论列表

以下命令将获取特定问题的所有评论列表:

jira --server http://jira.example.com --user "demouser" --password "demopassword" --action getComments --issue "SSP-16"

上述命令将产生以下输出:

获取特定问题的评论列表

从命令行创建问题

使用以下命令从命令行创建问题:

jira --server http://jira.example.com --user "demouser" --password "demopassword" --action createIssue --project "SSP" --type "story" --summary "This is a story"

上述命令将产生以下输出:

从命令行创建问题

这些是一些 JIRA CLI 的示例。它非常强大,因为这些命令可以通过任何脚本调用。它还为 JIRA 管理员以及希望与 JIRA 集成的开发者打开了广泛的可能性。要查看所有功能和示例的列表,请访问 bobswift.atlassian.net/wiki/display/JCLI/Examples

命令行包可以在 Windows、Linux 和 OS X 上运行,只需 Java 7 或更高版本即可。

摘要

在本章中,我们讨论了 ScriptRunner,它是一个出色的插件,可以用于在工作流中执行复杂的自定义操作、访问强大的 JQL 功能,并运行各种脚本,JIRA 管理员可以利用这些脚本高效地维护实例。ScriptRunner 目前是 JIRA 管理员使用的最受欢迎的管理工具。

在接下来的章节中,我们将讨论如何直接访问 JIRA 数据库以提取数据。JIRA 提供了许多优秀的报告,但有时它们还不够好,需要更多的洞察。如果你了解 JIRA 数据库模式和如何访问数据库,任何数据都可以被检索用于进一步的报告目的。

第十三章:数据库访问

JIRA 提供了许多项目报告,用于跟踪项目进度、分析过去几个月的趋势,并基于时间估算、状态和工作负载等各种统计数据做出决策。在大多数情况下,这些报告足以得出结论,但有时现有的 JIRA 报告无法提供所需的信息。不过,可以直接从数据库生成复杂的报告。在本章中,我们将讨论 JIRA 可以使用的常见数据库以及这些数据库使用的模式。我们将查看一些只能通过直接查询数据库生成的报告。

本章将涵盖以下主题:

  • JIRA 的数据库模式

  • 访问 MySQL

  • 访问 PostgreSQL

  • 用户表

  • jiraissue

  • customfield

  • customfieldvalue

  • 一些有用的 SQL 查询

JIRA 的数据库模式

JIRA 将其配置和数据存储在数据库中;如果您正在评估 JIRA,可以使用嵌入式的 Hyper SQL 数据库HSQLDB),这是用 Java 编写的。它适用于小型应用程序,JIRA 仅在评估版本中使用它。HSQLDB 不推荐用于生产环境,JIRA 推荐使用 MySQL 或 PostgreSQL。

无论使用何种类型的数据库,数据库模式(即表格及其关系)都是相同的。如果您想查看模式,可以参考 JIRA_INSTALL/atlassian-jira/WEB-INF/classes/entitydefs/entitymodel.xml

文件的内容如下所示:

JIRA 的数据库模式

这是一个 XML 文件,包含 JIRA 中所有表的定义以及它们与其他表的关系。

或者,您还可以在 Atlassian 网站上查看数据库模式,网址为 developer.atlassian.com/display/JIRADEV/Database+Schema

访问 HSQLDB

如前所述,HSQLDB 仅用于评估目的,不应在生产环境中使用。然而,您可能希望运行查询以从数据库生成报告。幸运的是,HSQLDB 附带一个内置控制台,可以通过执行以下步骤调用:

  1. 关闭您的 JIRA 服务。

  2. 使用以下命令启动 HSQLDB 控制台:

     java -cp JIRA_INSTALL/lib/hsqldb-1.8.0.5.jar  
        org.hsqldb.util.DatabaseManager -
        user sa -url jdbc:hsqldb:JIRA_HOME/database/jiradb
    
    

在上述命令中,将 JIRA_INSTALLJIRA_HOME 替换为根据您的安装位置的目录。如果您是通过 Windows 安装程序安装 JIRA,以下步骤应该可行。

首先,导航到 C:\Program Files\Atlassian\Application Data\JIRA\database 目录。

然后,运行以下命令:

java -cp ../../../JIRA/lib/hsqldb-1.8.0.5.jar 
org.hsqldb.util.DatabaseManager -
user sa -url jdbc:hsqldb:jiradb

HSQL 数据库管理器 将显示在您的屏幕上:

访问 HSQLDB

现在,您可以在 HSQL 数据库管理器 中运行 SQL 查询,并在同一窗口中查看输出。

访问 MySQL

HSQL 数据库管理器绝不应在生产实例中使用,因为它容易导致数据丢失。推荐使用的数据库是 MySQL 或 PostgreSQL。本书早些时候我们讨论了如何创建 MySQL 数据库以存储 JIRA 数据,并在安装阶段进行配置。要访问您的数据库并运行 SQL 查询,您可以使用 MySQL 控制台(MySQL 服务器自带的工具),或者使用phpMyAdmin

phpMyAdmin

可以从www.phpmyadmin.net/下载 phpMyAdmin 应用程序。

这是一个非常棒的基于 web 的工具,用于管理您的 MySQL 数据库,通常通过http://localhost/phpmyadmin/访问。具体的 URL 可能会有所不同,取决于您的安装方式。

执行以下步骤:

  1. 在浏览器中打开上面的 URL 来启动phpMyAdminphpMyAdmin

    您会注意到数据库列表出现在左侧。我们的jiradb数据库也出现在该列表中。我们为我们的 JIRA 实例创建了这个数据库。

  2. 点击数据库名称前的加号(+)以展开该数据库的表格。

  3. 您可以点击任何表格来浏览其内容:phpMyAdmin

如您所见,我们点击了cwd_user表,右侧显示了我们 JIRA 实例中的用户列表。

同样,您可以浏览 JIRA 实例中的任何表格。您应该了解一些 JIRA 数据库模式,以便理解这些数据。此外,如果您希望生成涉及多个表格的复杂报告,您也可以编写 SQL 查询。

  1. 点击顶部导航栏中的SQL选项卡:phpMyAdmin

  2. 要执行您的查询,请执行以下步骤:

    1. 在前面的截图中,您可以在在数据库 jiradb 上运行 SQL 查询区域输入 SQL 查询。

    2. 点击Go按钮以运行 SQL 查询。

MySQL 控制台

当您在机器上安装 MySQL 服务器时,它会附带 MySQL 控制台。这个控制台也可以用来管理您的数据库。与 phpMyAdmin 相比,它的用户界面不太友好,但一旦您记住了基本命令,您可能会更喜欢使用 MySQL 控制台进行快速访问数据库。

运行以下命令以进入 MySQL 控制台:

mysql -u USERNAME -p

在前面的命令中,将USERNAME替换为您的用户名。在我们的例子中是root。该命令会要求您输入密码,之后您将进入 MySQL 控制台:

MySQL 控制台

在 MySQL 控制台中,您可以输入命令并运行查询。

让我们来看一下几个常见的 JIRA 表格的结构,并生成结合多个表格的报表。在以下示例查询中,您可以根据自己的舒适度选择使用 phpMyAdmin 或 MySQL 控制台。

访问 PostgreSQL

当你使用 Windows 安装程序安装 PostgreSQL 时,它会附带 pgAdmin III,这是 PostgreSQL 的另一个管理和操作工具:

访问 PostgreSQL

让我们来看看一些存储有用信息的 JIRA 数据库表。

用户表

cwd_user 表用于存储系统中的用户。让我们来查看一下该表的结构。

表格结构

运行以下查询:

desc cwd_user;

查询的输出结果如下:

表格结构

查找非活跃的 JIRA 用户列表

JIRA 管理员的主要职责之一是用户管理。假设你想找到非活跃用户的列表及其目录信息。在大型 JIRA 实例中,可能会有来自 JIRA 内部目录的用户,以及来自公司 LDAP 的用户。

以下查询将返回 JIRA 中非活跃用户的列表:

SELECT u.user_name,u.first_name,u.last_name,u.email_address,d.directory_name 
from cwd_user u join cwd_directory d on u.directory_id = d.id where u.active 
= 0;

上述查询依赖于另一个表,叫做 cwd_directory。该目录存储用户目录信息,而用户是否活跃则存储在 cwd_user 表的 active 字段中。

jiraissue 表

jiraissue 表用于存储 JIRA 问题。让我们来查看一下该表的结构。

表格结构

运行以下查询:

desc jiraissue;

该查询的输出结果如下:

表格结构

查找特定项目的问题

使用 JIRA 问题导航器 查找特定项目的所有问题非常简单,但由于我们正在探索数据库架构及其各个表,下面让我们直接从数据库中获取特定项目的问题:

SELECT p.id AS project_id, p.pname AS project_name, CONCAT("SSP-
",ji.issuenum)  AS issue_id, ji.reporter AS issue_reporter FROM project p 
LEFT OUTER JOIN jiraissue ji ON ji.project = p.id WHERE p.pkey = 'SSP' ORDER 
BY ji.issuenum;

上述查询将显示 SSP 键所对应项目的问题列表。你可以将项目键替换为你自己的,尝试执行之前的查询。项目名称和一些其他字段会从 project 表中提取。

customfield 表

customfield 表用于存储所有自定义字段。让我们来查看一下该表的结构。

表格结构

执行以下查询:

desc customfield;

查询的输出结果如下:

表格结构

customfieldvalue 表

customfieldvalue 表用于存储自定义字段值。让我们来查看一下该表的结构。

表格结构

运行以下查询:

desc customfieldvalue;

查询的输出结果如下:

表格结构

一些有用的 SQL 查询

我们将列出一些有用的 SQL 查询,帮助 JIRA 管理员快速找到他们所需的信息。需要特别提到的是,JIRA 新版本发布相对频繁,通常包含新的功能和错误修复。数据库架构可能会在新版本中发生一些变化。因此,在使用 SQL 查询之前,请在新版 JIRA 上验证它们的有效性。

共享过滤器列表

以下 SQL 查询将列出在 JIRA 实例中创建并与他人共享的过滤器:

SELECT sr.filtername, sr.authorname
FROM searchrequest sr
LEFT JOIN sharepermissions sp ON sp.entityid = sr.ID
WHERE sp.entitytype = "SearchRequest" AND sp.sharetype != "global";

获取特定组的用户

从 JIRA 界面中查找特定组的用户非常简单,但你应该知道如何使用 SQL 获取这些信息。以下查询将列出 jira-software-users 组的用户。你可以将其更改为实例中的任何组:

SELECT cu.user_name, cu.display_name, cu.email_address
FROM cwd_user AS cu
INNER JOIN cwd_membership AS cm
ON cu.directory_id=cm.directory_id
AND cu.lower_user_name=cm.lower_child_name
AND cm.membership_type='GROUP_USER'
WHERE cm.lower_parent_name='jira-software-users';

包含评论数的用户列表

JIRA 管理员的主要责任之一是查找那些在给定月份内不活跃或使用 JIRA 较少的用户。以下查询将提取用户列表,并列出他们在特定月份发布的评论数量。在某些情况下,这对于查找那些在系统中活跃但并未进行太多操作的用户非常有用:

SELECT author, count(author) as comments 
FROM jiraaction j
WHERE UPDATED > "2014-12-01 00:00:00"
group by author 
ORDER BY author ASC;

获取每个组件的问题数

假设你想找到系统中不仅所有组件的列表,还包括它们所关联的问题数量。以下查询将快速为你提供这些信息:

SELECT count(ji.id), c.cname FROM jiraissue ji 
INNER JOIN nodeassociation na ON ji.id = na.source_node_id
INNER JOIN component c ON na.sink_node_id = c.id
GROUP BY c.cname;

列出特定项目类别的项目

如果你想检索特定类别下的项目列表,可以使用以下查询:

SELECT p.pname, p.LEAD, p.pkey
FROM project p
JOIN nodeassociation na ON (p.ID = na.SOURCE_NODE_ID AND na.ASSOCIATION_TYPE 
= 'ProjectCategory')
JOIN projectcategory pc ON (na.SINK_NODE_ID = pc.ID)
WHERE pc.cname like 'Category';

特定项目中的分配人或报告人列表

有时候你需要查找参与某个特定项目的用户列表,作为分配人或报告人。这在你需要将一些项目从一个实例迁移到另一个实例,并且还需要迁移相关用户时特别有用:

SELECT DISTINCT reporter AS "User" FROM jiraissue WHERE project IN (
 SELECT id AS "Project ID" FROM project WHERE pkey IN ('SSP','SSPA')
)
UNION
SELECT DISTINCT assignee AS "User" FROM jiraissue WHERE project IN (
 SELECT id AS "Project ID" FROM project WHERE pkey IN ('SSP','SSPA')
)

总结

在本章中,你学习了如何直接从数据库中检索信息。当信息无法从 JIRA 界面轻松获取时,这非常有用。我们讨论了一些常见的 JIRA 表,并查看了一些示例查询,如何查找有用的信息。直接访问数据库的能力使得 JIRA 管理员能够生成复杂的报告,并更快地获取信息。

在下一章中,你将学习如何通过插入自定义 CSS 代码来定制 JIRA 的外观和感觉。你还将学习如何使用 JavaScript 修改 JIRA 界面 HTML 元素的行为。我们将通过一些示例来展示如何根据用户选择的下拉列表的特定值来显示/隐藏 JIRA 字段,并修改文本字段的值以插入基于文本的模板。

第十四章:自定义外观、感觉与行为

JIRA 在其 UI 中提供了一个简单的功能,可以更改各个部分和元素的颜色,例如头部、底部和链接;你还可以上传自定义的徽标。然而,如果你想更改某个部分或整个主体元素的宽度,是无法通过 UI 来实现的。可以包含自定义的 CSS 来改变外观和感觉。也可以在 JIRA 实例中加载自定义的 JavaScript,这样可以改变各种 HTML 元素的行为。例如,你可以根据另一个字段的值选择性地显示或隐藏某个字段,并在 JIRA 字段中插入基于文本的模板。在本章中,我们将探讨这些自定义功能。

我们将涵盖以下主题:

  • 添加自定义 CSS

  • 添加 JavaScript 以显示/隐藏字段

  • Velocity 模板

添加自定义 CSS

JIRA 管理界面允许你更改 JIRA 中各个元素的外观和感觉,并更改默认的徽标。按照以下步骤自定义你的 JIRA 界面:

  1. 导航到管理 | 系统 | 外观和感觉(在用户界面下)。

  2. 本页的第一个选项是更改徽标。点击浏览...按钮,然后点击上传徽标按钮上传你自己的自定义徽标:添加自定义 CSS

  3. 第二个选项是显示站点标题,位于徽标旁边。勾选显示站点标题复选框,然后点击更新按钮:添加自定义 CSS

    你会注意到,在安装 JIRA 时输入的实例名称现在会显示在 JIRA 徽标旁边。在我们的示例中,它是Sparxsys JIRA Demo,现在显示在 JIRA 徽标旁边:

    添加自定义 CSS

  4. 第三个选项是更新网站图标(Favicon),它在浏览器标签页中显示,当 JIRA 被打开时会看到它。点击浏览...按钮,选择新的网站图标图片,然后点击上传网站图标按钮:添加自定义 CSS

  5. 第四个选项是更改 JIRA 网页界面中各个部分的颜色。例如,点击头部背景颜色框中的任何颜色。在弹出的窗口中,选择新的颜色,或者直接输入颜色的十六进制值。我们将颜色更改为红色,十六进制值为#ff0000。点击更新按钮继续:添加自定义 CSS

现在,主导航栏的颜色变为红色。

你可以更改此界面中可用的各个部分的颜色,并将其与公司颜色方案匹配,但 JIRA 的界面仅限于更改颜色。如果你想更改<body>元素的宽度或给某些部分添加额外的填充和边距,无法通过此界面实现。

然而,JIRA 允许插入自定义 CSS,覆盖默认的外观和感觉。执行以下步骤:

  1. 转到 管理 | 系统 | 公告横幅(在用户界面下)。

  2. 公告文本区域,复制 <LINK href="http://localhost:8080/includes/custom_css/custom_style.css" rel="stylesheet" type="text/css"> 并点击 设置横幅 按钮:

添加自定义 CSS

公告横幅用于在 JIRA 中所有页面向所有用户显示公共文本;好消息是,它也支持 HTML 标签。在我们的例子中,我们希望将自定义的 CSS 代码加载到所有页面。之前提到的 LINK 标签指定了我们的自定义 CSS 文件的路径。执行以下步骤:

  1. 在你的 JIRA 安装目录下创建一个 custom_css 文件夹:

            JIRA_INSTALL/atlassian-jira/includes/. 
    
    
  2. 导航到 custom_css 文件夹并创建一个 custom_style.css 文件;该文件的位置应该是 JIRA_INSTALL/atlassian-jira/includes/custom_css/custom_style.css

该文件包含用于更改 JIRA 用户界面(UI)的 CSS,这些更改是通过配置无法实现的。当你保存公告横幅时,用户将看不到任何内容,但此 CSS 文件将在所有页面加载。你也可以通过查看 JIRA 中任意页面的源代码,并搜索文件名来验证这一点:

添加自定义 CSS

在前面的截图中,你可以看到我们的自定义 CSS 文件已经加载。

现在是时候向这个文件中添加一些 CSS 代码,并更改我们 JIRA 实例的外观和感觉了。用你喜欢的编辑器打开 custom_style.css 文件,并输入以下代码片段:

body { 
  background-color: #e0e0e0; 
  padding: 0 70px; 
} 
#content { 
  box-shadow: 0px 0px 5px #232323; 
} 
#footer { 
  background-color: #232323; 
  box-shadow: 0px 0px 5px #232323; 
} 

然后,刷新浏览器中的 JIRA 实例。你应该能看到之前的 CSS 代码已被应用,并且更改已经显示,如下图所示:

添加自定义 CSS

你可以通过添加自己的 CSS 代码进一步自定义网页的外观和感觉。这些代码将加载到每个页面;只需确保公告横幅中的代码没有被删除。

我们已将一个额外的文件添加到 JIRA 文件系统中。非常重要的一点是,记住此文件并将其单独保存。当你将 JIRA 实例升级到新版本或迁移到新服务器时,JIRA 管理员应确保该文件不会被删除;否则,网页的自定义外观将无法显示。

添加 JavaScript 来显示/隐藏字段

JIRA 提供了大量的功能和自定义选项;然而,有时你可能希望对 HTML 字段的行为进行更细粒度的控制。例如,如果你希望根据另一个自定义字段的值显示或隐藏某个特定的自定义字段,你可以使用自定义 JavaScript 来实现这一点。

假设有这样的场景:在 JIRA 中创建工单的用户需要在自定义字段的文本区域中输入他们的分析内容,但只有在问题的优先级为最高时,才需要填写此内容。现在,为了实现这一点,我们希望首先完全隐藏分析字段,并且仅当用户将优先级设置为最高时才显示该字段。

与前面插入自定义 CSS 的示例不同,自定义 JavaScript 可以直接从 JIRA 界面添加。请按照以下步骤操作:

  1. 转到 JIRA 管理 | 问题 | 自定义字段(在字段下)。

  2. 点击右上角的添加自定义字段按钮,并将字段类型选择为文本字段(多行)

  3. 在下一个屏幕中,输入分析作为名称,并在自定义字段的描述字段中输入 JavaScript 代码(analysis_js.css),如下图所示:添加 JavaScript 以显示/隐藏字段

  4. 点击创建按钮继续。

  5. 在与创建问题操作关联的屏幕中,将此字段添加到优先级系统字段之后。

请注意,自定义字段的字段描述也可以通过字段配置选项进行控制。在第四章,JIRA 的测试管理定制中,我们讨论了字段配置的目的。在前面的示例中,我们在创建自定义字段时将 JavaScript 代码添加到字段描述中;如果在项目中使用了字段配置,该代码将被覆盖。

让我们了解一下这段 JavaScript 代码的重要部分。

分析自定义字段的 ID 为10100,我们为该字段分配了一个目标变量:

 target = document.getElementById('customfield_10100'); 

然后,对于优先级字段,我们检查其值是否为最高,该值可以从包含不同数字值的列表中选择,包括最高最低最高的数值为1)。对于其他任何值,分析字段将被隐藏:

if (priority.value != 1) 
  target.style.display='none'; 
priority.onchange=function() { 
  if (this.value == 1) { 
    target.style.display = ''; 
    target.value="enter message here"; 
  } else { 
    target.style.display='none'; 
  } 
} 

当用户选择优先级最高时,分析字段将再次显示。

创建问题

创建分析字段后,只需在 JIRA 中添加另一个问题来进行测试。默认情况下,分析字段不会显示给用户:

创建问题

当你选择优先级最高时,分析文本区域将对用户可见:

创建问题

这个示例只是为了给你一个如何使用 JavaScript 控制 HTML 元素行为的概念。

Velocity 模板

Velocity 是一个基于 Java 的服务器端模板引擎,用于渲染页面内容,它允许将 Java 对象与 HTML 元素一起使用。由于 JIRA 是用 Java 编写的,它利用 Velocity 模板来显示内容。用户可以修改这些模板文件,但 Atlassian 不会对修改模板文件提供任何支持,因此建议在进行任何更改之前备份原始文件。

在本节中,我们将讨论一些示例,我们将对这些模板进行修改。

修改描述系统字段并添加预定义文本

JIRA 允许你为每个自定义字段添加描述,其中可以向最终用户提供有关如何输入数据的指示。然而,有时向用户展示预定义文本(如基于文本的模板)是非常有用的。在本示例中,我们将向 JIRA 描述系统字段添加一些默认文本。请按照以下步骤操作:

  1. 编辑 JIRA 安装目录中的以下文件:

            JIRA_INSTALL/atlassian-jira/WEB-INF/    
            classes/templates/jira/issue/field/description-edit.vm. 
    
    
  2. $rendererDescriptor.getEditVM()函数之前输入以下代码:

            #set ($description = "Please enter the details in steps.\ 
            \ 
            Step 1:\ 
            \ 
            Step 2:\ 
            \ 
            Step 3:\ 
            \ 
            Issue Occurrence: Once or Always\ 
            Current Status: Working or Not Working 
            \ 
            ") 
            #set ($description = $description.replace('','')) 
    
    
  3. 代码如下所示:修改描述系统字段并添加预定义文本

  4. 重启你的 JIRA 实例。

  5. 一旦 JIRA 实例重启,点击创建按钮以创建一个问题。

  6. 你会注意到,默认文本现在出现在描述字段中:修改描述系统字段并添加预定义文本

你可以使用相同的方法向其他字段添加自定义预定义文本。

在使用之前的代码修改了描述字段模板之后,预定义的文本将会添加到 JIRA 实例中所有项目和问题类型的描述字段,但也可以将其限制为特定的项目和问题类型。请改用以下代码:

#if ($issue.getProject().getString("key") == 'SSP') 
  #if(($description == "") && ($issue.getIssueTypeObject().getName() == "Story")) 
    #set ($description = "Please enter the details in steps.\ 
       \ 
    Step 1:\ 
        \ 
    Step 2:\ 
        \ 
    Step 3:\ 
        \ 
    Issue Recurrance: Once or Always\ 
    Current Status: Working or Not Working 
        \ 
        ") 
    #set ($description = $description.replace('','')) 
  #end 
#end 

要定义自定义字段的默认值,也可以使用上下文,具体内容请参见第十七章,JIRA 最佳实践

在前面的代码中,我们只在顶部添加了两行代码,将项目关键字限制为SSP,并将问题类型限制为Story。在修改模板文件之前,请确保重新启动你的 JIRA 实例。如果你不想重新启动实例,也可以通过以下步骤禁用 Velocity 模板的缓存,方法是在你的 JIRA 安装目录下执行:

  1. 取消注释(移除#符号)#velocimacro.library.autoreload=true

  2. class.resource.loader.cache的值从true更改为false

  3. 打开JIRA_INSTALL/atlassian-jira/WEB-INF/classes/velocity.properties

  4. 现在,对 Velocity 模板的任何更改都会在你的实例中生效,无需重启 JIRA。仅在开发环境中执行此操作。

如前所述,针对自定义 CSS,请跟踪你在模板文件中所做的任何更改,并始终保留原始模板文件的备份。需要注意的是,Atlassian 不会对模板文件的自定义做任何支持。

修改页脚

在 JIRA 中,你可以自定义各种模板文件,针对网页的各个部分。让我们看另一个例子,我们将在页脚部分添加一些自定义文本。请执行以下步骤:

  1. 编辑 JIRA 安装目录中的以下文件:

            JIRA_INSTALL/atlassian-jira/WEB-  
            INF/classes/templates/plugins/footer/footer.vm. 
    
    
  2. 这个文件内容很多;只需导航到文件底部,在 #end 之前添加以下行:

            <ul> 
              <li>This is a Test JIRA Instance and we are adding text in the footer.  
              </li> 
            </ul> 
    
    

    文件内容如下:

    修改页脚

  3. 重启你的 JIRA 实例。

  4. 一旦 JIRA 实例重启,你会注意到在 Atlassian logo 前面有一些额外的文本:修改页脚

在电子邮件中显示自定义字段

还可以定制发送给用户的电子邮件。电子邮件内容也是通过 Velocity 模板生成的。现在,我们来定制创建问题时发送的电子邮件模板。系统中创建的自定义字段默认不包含在电子邮件内容中,但我们将修改问题创建电子邮件的 Velocity 模板,并添加分析字段(即我们之前添加的字段)。请执行以下步骤:

  1. 编辑 JIRA 安装目录中的以下文件:

            JIRA_INSTALL/atlassian-jira/WEB-
            INF/classes/templates/email/html/issuecreated.vm 
    
    
  2. 在文件的最终 #parse 之前添加以下代码:

            #if ($issue.getCustomFieldValue("customfield_10100")) 
            <tr valign="top"> 
              <td > 
                #text("Analysis"): 
              </td> 
              <td> 
                $issue.getCustomFieldValue("customfield_10100") 
              </td> 
            </tr> 
            #end 
    
    
  3. 保存文件并重启 JIRA。

  4. 一旦 JIRA 实例重启,创建一个问题并填写分析字段。

  5. 检查你收到的电子邮件;它现在应该包含分析字段的值。电子邮件内容应与以下截图类似:在电子邮件中显示自定义字段

对于类似的事件和系统字段,系统提供了模板。熟悉了 Velocity 模板后,你可以探索它们并对其进行更改。

概述

在本章中,你学习了如何通过插入自定义的 CSS 代码来定制 JIRA 的外观和感觉。我们还使用 JavaScript 修改了 JIRA 界面中 HTML 元素的行为,以便根据用户从可选择列表中选择的特定值来显示/隐藏 JIRA 字段。最后,我们探讨了 Velocity 模板以及如何修改显示的内容。我们还讨论了如何在电子邮件中插入自定义字段值。

在下一章中,我们将讨论 JIRA Service Desk,它已成为最流行的客户支持请求解决方案。Service Desk 现在是一个独立的应用程序,可以作为独立应用程序安装,也可以与 JIRA Core 一起作为一个应用程序安装。Service Desk 配有内置的标准配置,适用于任何支持项目。

第十五章. 实施 JIRA Service Desk

在本章中,我们将学习如何实施一个 JIRA Service Desk 应用程序,以处理 IT 帮助台和支持请求,该应用程序不仅易于使用,而且自带预配置的工单系统功能。所有支持工单都通过 JIRA 项目进行跟踪,并且它配备了一个客户门户,使得提出请求变得非常简单。此外,JIRA Service Desk 还可以与 Confluence 集成,用户可以在提出新工单时轻松搜索相关问题。

在本章中,我们将涵盖以下内容:

  • 产品概述—JIRA Service Desk?

  • 安装 JIRA Service Desk

产品概述 – JIRA Service Desk?

在第一章,规划你的 JIRA 安装中,我们讨论了新版本的 JIRA 7,它被拆分成三个独立的应用程序:JIRA Core、JIRA Software 和 JIRA Service Desk。在第六章,用例示范实施中,我们讨论了一些 JIRA 的示范用例,而在第四章,定制 JIRA 用于测试管理中,我们也探讨了如何为测试管理定制 JIRA。同样,JIRA 也可以配置用于支持请求,但在这种情况下,只有拥有 JIRA 账户的用户才能登录并提交请求。如果需要允许无限制的客户创建工单,可以使用 JIRA Service Desk。JIRA Service Desk 不对客户数量进行限制,它还配备了典型支持和工单系统的标准功能。

安装 JIRA Service Desk

如果你只打算将 JIRA 用于支持项目,你可以下载并安装 JIRA Service Desk 应用程序。安装步骤与我们在第一章中讨论的 JIRA 软件类似,即规划你的 JIRA 安装。然而,如果你已经在组织中使用 JIRA Core 或 JIRA Software,你仍然可以在现有实例上安装 JIRA Service Desk 应用程序。按照这里提到的步骤,在现有的 JIRA 实例上安装 JIRA Service Desk 应用程序:

  1. 下载最新版本的 JIRA Service Desk。你可以在marketplace.atlassian.com/plugins/com.atlassian.servicedesk.application/versions下载 jira-servicedesk-application-3.1.7.obr 文件。

  2. 前往管理 | 应用程序 | 版本与许可证。在此页面上,您将看到所有已安装的应用程序列表,例如 JIRA Core 和 JIRA Software。点击右上角的上传应用程序链接,在弹出的上传应用程序窗口中,上传您刚刚下载的jira-servicedesk-application-3.1.7.obr文件:安装 JIRA Service Desk

  3. JIRA Service Desk 将被安装。您还可以为其生成一个评估许可证。安装许可证后,您将能够创建一个新的 Service Desk 项目:安装 JIRA Service Desk

  4. 前往屏幕顶部的导航菜单,点击项目 | 创建项目。在创建项目弹出窗口中,选择SERVICE DESK下的IT Service Desk,然后按下一步按钮继续:安装 JIRA Service Desk

  5. IT Service Desk弹出窗口中,输入项目名称关键字,然后按下提交按钮继续:安装 JIRA Service Desk

  6. 现在将创建一个类型为 Service Desk 的新项目。一个典型的 Service Desk 项目将与标准的 JIRA 项目非常相似,但它具有一些额外的功能:安装 JIRA Service Desk

  7. 一旦项目创建完成,您将看到一个欢迎指南,其中包含多个链接,指向 Atlassian 文档,帮助您熟悉 Service Desk。在项目侧边栏中,有三个标签:队列客户报告。让我们了解一下它们的功能。

队列

队列只是一个基于预定义条件过滤的任务列表。例如,您的项目中已经定义了几个队列,例如未分配的任务分配给我的任务24 小时内到期等。

队列有点类似于 JIRA 过滤器。您还可以创建自己的队列。点击新建队列链接,如下图所示:

队列

新建队列页面中,输入名称进行中,并在显示任务下选择状态进行中。如果您熟悉 JQL,可以点击显示高级选项链接,位于显示任务部分旁边。点击创建按钮保存队列:

队列

队列现在将被保存,并可在您的项目中的现有队列列表中查看。

客户

默认情况下,您的 Service Desk 项目对JIRA 实例中所有拥有帐户的用户开放,但我们可以限制哪些用户或组将成为客户,并且可以在该项目中提出请求:

客户

报告

Service Desk 项目内置了一些非常实用的报告,可以帮助您了解团队在支持项目中的当前进展:

报告

让我们了解这些报告的目的。

工作负载

这是一个简单的报告,展示了你的团队目前正在处理的请求数量。它帮助你均匀分配工作负载给你的代理。报告显示了每个代理的进行中的事项数量。这是一个重要的报告,有助于项目负责人均匀分配工作,避免代理工作量过少或过多。

SLA 目标

Service Desk 附带了服务级别协议SLA),例如首次响应时间解决时间。此报告将告诉你团队是否能够达到这些 SLA 目标。报告显示了过去七天内成功达成 SLA 目标的百分比。这些报告可以快速告诉你团队在解决问题方面的表现,这些问题通过时间目标来衡量。

满意度

此报告将显示客户满意度的平均水平。这有助于你了解客户是否对你的服务感到满意。它显示了用户给予的评分平均值。这是一个快速获取用户反馈的好方法,可以帮助你了解他们的满意度。

文章使用情况

如果你将 Confluence 空间与项目关联,那么该报告将显示文章的查看次数,以及有多少客户认为这些文章有用。JIRA Service Desk 与 Confluence 空间紧密集成;它在用户提交新请求时提供相关的文章,这些请求可能是已知问题或常见请求。在这种情况下,Confluence 空间中的文章可以帮助用户自助解决问题。

文章有效性

本报告显示了客户创建的事项数量与客户通过查看文章自行解决的事项数量之间的对比。了解用户查阅已关联的 Confluence 空间文章的次数,并通过阅读这些文章自助解决问题,可以帮助你评估这些文章的有效性。

创建与解决

此报告显示了在选定期间(如过去 7 天过去 14 天过去 30 天)内创建与解决的事项数量。类似的报告通常也出现在非 JIRA Service Desk 项目中。

解决时间

本报告显示了解决所有事项所花费的时间,以及解决特定类型事项(如事件)所需的时间。

按优先级报告的事件

本报告显示了基于个人优先级的事项统计。它有助于快速查看按优先级分类的事项数量,例如最高最低

SLA 达成与违约

简单统计有多少问题达成了他们的 SLA 目标,相对于有多少问题没有达成 SLA 目标,换句话说,就是违反了 SLA 目标。与SLA 目标报告一起,这个报告告诉你在项目中有多少工单未能达成其 SLA 目标。

客户渠道

客户可以通过两种方式提交工单——客户门户电子邮件。让我们详细讨论这两种方式:

客户渠道

客户门户

服务台应用的最重要目的是专注于支持请求和工单系统,以满足最终用户和客户的需求。使用 JIRA,可以创建一个简单的项目来跟踪问题,并且如果有足够的许可证,可以为客户提供访问权限,但通常来说,最终用户可能不觉得登录问题跟踪器来提交请求是直观的。Atlassian 理解了这个问题,并创建了带有专用客户门户的服务台应用,这是一个简洁易用的界面,用于提交支持请求。

每个服务台项目都有自己的客户门户网址,如此处提到的http://localhost/servicedesk/customer/portal/1

当你点击项目侧边栏中的客户渠道标签时,你将看到这个网址。项目专用的网址会在弹出的窗口中显示,你可以将这个网址分享给客户,或者发布在你的网站上。客户门户提供了一个简单直观的界面,用于提交请求。让我们一起浏览这个门户。请在你的网页浏览器中打开这个网址:

客户门户

在左侧,列出了五个,每个组下有多个请求类型,例如报告系统问题获取 IT 帮助请求新账户。这些请求类型实际上是与 JIRA 中的特定问题类型相关联的。我们可以创建新的请求类型并将其映射到任何现有的问题类型。

点击报告系统问题,它会打开一个新页面,展示一个表单来提交请求:

客户门户

这个表单类似于你点击 JIRA 中的创建按钮时出现的表单,但它简单得多。客户可以填写此表单并点击创建按钮来提交请求:

客户门户

请求提交后,会创建一个 JIRA 问题,状态为等待支持。每个服务台项目都有自己的工作流,就像其他任何 JIRA 项目一样。该问题会开始出现在项目的队列中。

电子邮件

你可以配置服务台,使得客户通过简单地向特定的电子邮件地址发送电子邮件来提交工单。我们需要先配置我们的项目,才能启用此功能。

点击弹出窗口中的设置电子邮件请求链接,该窗口会在你点击项目侧边栏中的客户渠道标签时出现:

电子邮件

在下一个屏幕上,单击 添加电子邮件地址 按钮:

电子邮件

设置电子邮件通道 弹出窗口中,输入您的电子邮件帐户的详细信息。如果您使用 Google Apps 帐户,请输入 电子邮件地址密码,但您也可以从 其他 选项卡配置基于 POP 和 IMAP 的帐户。按 下一步 按钮继续:

电子邮件

现在您需要选择将用于从电子邮件创建问题的请求类型。您可以选择 报告系统问题,然后在底部按 完成 按钮:

电子邮件

现在将为此项目配置电子邮件。JIRA 服务台将持续读取指定的收件箱,每当有新邮件时,将在 摘要 字段中复制电子邮件主题,并在 描述 字段中复制电子邮件内容。

JIRA 服务台配置

服务台项目与标准的 JIRA 项目并没有太大的区别。在内部,它还使用各种方案配置 问题类型工作流屏幕权限。在 第四章 定制 JIRA 用于测试管理 中,我们讨论了如何通过修改这些方案来定制项目。但是,某些配置是特定于基于服务台的项目的。

转到项目侧边栏下的您的项目的 项目管理,在 摘要 正下方,您会注意到一组新的配置,这些配置在标准的 JIRA 项目中不存在:

JIRA 服务台配置

让我们逐个了解它们。

请求类型

在本章前面,我们讨论了 客户 门户是最终用户的简单界面。他们可以选择不同类型的请求,这些请求在内部映射到特定的问题类型。在此部分下,您可以创建新的请求类型,也可以修改现有的请求类型:

请求类型

输入 请求名称,例如 硬件问题,选择 问题 作为 问题类型,在 中输入 6\. 其他 中的文本。然后按 添加 按钮。现在,如果您回到您的 客户门户,将会添加一个新的请求类型,但它只包含 摘要 字段。现在让我们向此请求类型添加更多字段:

请求类型

单击要修改的请求类型对应的 编辑字段 链接:

请求类型

现在点击屏幕右上角的 添加字段 按钮:

请求类型

添加字段 弹出窗口中,选择要添加的字段,然后点击 应用 按钮:

请求类型

这些字段现在已被添加,并将在客户门户中显示给最终用户。您还可以在 JIRA 实例中添加自定义字段,并将其添加到与项目关联的屏幕中。然后,您可以将其添加到请求类型中。

请求安全

您可以控制谁可以在您的服务台项目中提交支持请求:

请求安全

如前截图所示,您有三个选项可以选择:

  • 任何人都可以在我的客户门户上注册客户账户

  • 只有拥有账户的人才能提交请求

  • 只有我的客户列表中的人才能提交请求

选择最适合您项目的选项,然后点击保存按钮。

要将用户添加到您的客户列表中,请进入项目的用户和角色部分,将用户添加到SERVICE DESK CUSTOMERS项目角色中。

门户设置

在此部分,您可以更改客户门户名称,默认情况下,它与您的项目名称相同。您还可以上传自定义 logo:

门户设置

也可以向用户发布公告,该公告将显示在客户门户的顶部。

满意度设置

在服务台项目中,您的客户可以提供反馈。这将帮助您了解他们的满意度。您可以在此部分启用或禁用此功能。

电子邮件请求

您的客户可以通过访问客户门户或通过发送电子邮件到您指定的地址来提交请求。我们在前面的客户渠道部分中讨论了如何配置它。

知识库

服务台项目可以与 Confluence 空间进行集成。这非常有用,因为当客户通过客户门户提交请求时,他们可以看到相关的 Confluence 页面。客户可以查看这些相关页面,并有可能在无需提交请求的情况下解决问题。

要配置知识库,首先需要在 JIRA 和 Confluence 之间添加应用链接。第十六章中有详细的添加应用链接的信息。让我们看看如何将 Confluence 空间与我们的项目链接:

知识库

链接 Confluence 空间部分,选择链接到 Confluence 空间单选按钮。然后,在应用程序下拉菜单中选择Confluence,最后,在空间下拉菜单中选择 Confluence 空间的名称,并点击链接按钮。

服务水平协议(SLA)

服务台项目包含以下 SLA:

  • 解决时间:这是从问题创建到解决所花费的时间

  • 首次响应时间:这是从创建到将问题状态更改为等待客户所花费的时间。

我们也可以创建自己的 SLA,例如分配时间。按照接下来的步骤创建项目中的新 SLA:

SLA

  1. 点击左侧的新建指标链接。

  2. 新建指标屏幕上,输入该指标的名称

  3. 选择开始时间,计时将从此时开始。

  4. 选择停止时间,当计时结束时。

  5. 目标部分,输入目标4h,针对所有剩余问题,然后点击更新按钮。

  6. 最后,点击屏幕顶部的创建按钮以保存新的 SLA。

  7. 新的 SLA 将在项目中的所有现有和新问题中体现。

自动化

服务台项目带有一个便捷的工具,可以向项目中添加一些自动化任务。这个工具有助于团队执行一些重复性的任务,同时也可以强制执行一些政策。

比如,我们刚刚添加了一个新的服务水平协议(SLA):分配时间,即问题在创建后的 4 小时内分配给代理。实际上,当 SLA 剩余时间仅为 60 分钟时,我们可以在请求中发布评论。这个评论只会对已分配到此项目的现有代理可见。

按照给定的步骤添加新规则:

  1. 点击右上角的添加规则按钮:自动化

  2. 新建自动化规则弹出框中,选择自定义规则,然后按下一步按钮继续:自动化

  3. 在下一个屏幕中,在第一个文本框中输入名称,如Alert user。现在我们需要在WHEN框下添加触发条件,并且我们还需要在THEN框下添加一个动作自动化

  4. 点击添加触发条件链接,在出现的编辑 WHEN弹出框中,再次点击添加触发条件链接。然后选择SLA 剩余时间并点击添加按钮:自动化

  5. SLA下拉菜单中,选择分配时间,在事件中选择即将到期(剩余 60 分钟)。按确认按钮保存触发条件。

  6. 现在点击添加动作链接,在出现的编辑 THEN弹出框中,再次点击添加动作链接。然后选择添加评论并点击添加按钮:自动化

  7. 输入评论文本,选择评论类型,然后按确认按钮。

我们现在添加了一个新规则,当 SLA 剩余时间为 60 分钟时,会在问题上发布一条内部评论。

将用户添加为代理

服务台许可证不会限制客户的数量,而是限制可以作为项目代理的用户数量。请求只能分配给代理,只有代理才能与客户进行沟通。

请按照这里给出的步骤,将用户添加为项目中的代理:

  1. 要将用户设置为代理,首先将其添加到jira-servicedesk-users中,该用户组应分配给JIRA Service Desk应用程序,位于应用访问部分。

  2. 然后,前往项目管理 | 用户和角色,并将该用户添加到项目角色Service Desk Team中。

  3. 最后,检查你的权限方案。Service Desk Agent权限应该分配给Service Desk Team项目角色。

摘要

在本章中,我们学习了如何创建和使用 Service Desk 项目,这个项目现在是 Atlassian 为支持项目提供的最重要应用之一。这个应用程序内置了非常好用的功能,可以让你迅速上手。我们还学习了 Service Desk 的各种配置,以便最大限度地利用这个支持项目的必备应用。

在接下来的章节中,我们将查看 JIRA 与常见的 Atlassian 应用程序的各种集成,以及其他在软件开发生命周期SDLC)不同阶段提供帮助的工具。

第十六章:将 JIRA 与常见的 Atlassian 应用程序和其他工具集成

软件开发生命周期SDLC)的各个阶段,需要许多不同的工具和应用程序。JIRA 和 Confluence 作为最重要的工具之一,但还有其他一些应用程序,如 Bamboo、Fisheye/Crucible 以及其他工具,也用于不同的目的来协助开发。JIRA 的最佳功能之一是它能够与 Atlassian 和其他第三方公司的一系列工具进行集成。让我们来看看你可以与 JIRA 进行的一些常见集成。

在本章中,我们将涵盖以下内容:

  • JIRA 与SubversionSVN)插件

  • JIRA 与BitbucketGitHub

  • JIRA 与其他 Git 存储库

  • JIRA 与 Confluence

JIRA 与 Subversion 插件

SVN 是一个流行且广泛使用的版本控制软件。JIRA 有一个名为JIRA Subversion 插件的插件,可以用来将 JIRA 与 SVN 集成。让我们按照以下步骤安装 JIRA SVN 插件:

  1. 转到管理 | 插件 | 查找新插件(在Atlassian 市场下),在搜索框中输入subversion,然后按Enter键:JIRA 与 Subversion 插件

  2. JIRA Subversion 插件将在列表中显示。点击安装按钮继续。

  3. 该插件将被下载并安装到您的 JIRA 实例中。安装完成后,您将收到一条确认安装的消息:JIRA 与 Subversion 插件

  4. 点击关闭链接以关闭弹出窗口。

  5. 转到管理 | 插件 | Subversion 存储库(在源代码控制下):JIRA 与 Subversion 插件

  6. 现在,您将有机会将 SVN 存储库添加到您的 JIRA 实例中。点击添加链接。在下一个屏幕中,输入显示名称存储库根目录;如果您的 SVN 存储库需要身份验证,请输入用户名密码。如果您的存储库可以通过浏览器浏览,请选择Web 链接作为SVN 的 Web 客户端。最后,点击添加按钮:JIRA 与 Subversion 插件

每当用户在 SVN 提交消息中包含工单 ID(如 KEY-1)时,SVN 存储库将会添加到您的实例中,并且该文件将在 JIRA 查看问题操作的Subversion标签下列出。

JIRA 与 Bitbucket 和 GitHub

JIRA 带有一个内置功能,可以与 Bitbucket 和 GitHub 存储库连接。按照以下步骤将 JIRA 与 Bitbucket 和 GitHub 集成:

  1. 转到管理 | 应用程序 | DVCS 账户(在集成下)。

  2. 在下一个屏幕中,点击链接 Bitbucket Cloud 或 GitHub 账户按钮:JIRA 与 Bitbucket 和 GitHub

  3. 在弹出窗口中,从主机下拉列表中选择Bitbucket CloudGitHub,在团队或用户账户文本框中输入你的用户名,并在OAuth 密钥OAuth 秘密中输入相关值,这些可以从你的 Bitbucket 或 GitHub 账户生成。点击添加按钮继续:JIRA 与 Bitbucket 和 GitHub

  4. 确认访问你的账户页面,点击授权访问按钮:JIRA 与 Bitbucket 和 GitHub

  5. 配置完成后,JIRA 实例将列出可用的仓库:JIRA 与 Bitbucket 和 GitHub

一旦仓库列出在实例中,Git 提交信息中可以包含 JIRA 问题的 ID,这些文件将显示在 JIRA 视图问题的源代码标签下。

使用 JIRA 与其他 Git 仓库

你也可以将你的 JIRA 实例与任何 Git 仓库连接——不仅限于 Bitbucket 和 GitHub。这里有一个插件,叫做 Git Integration 插件,可以用于这种集成。请按照以下步骤操作:

  1. 导航到管理 | 插件 | 查找新插件(在ATLASSIAN MARKETPLACE下),并通过搜索框搜索git

  2. 从出现的搜索结果中,选择Git Integration Plugin for JIRA。点击免费试用按钮进行安装并评估此插件:JIRA 与其他 Git 仓库

  3. 插件安装完成后,导航到管理 | 应用程序 | Git 仓库(在JIRA Git 集成下):JIRA 与其他 Git 仓库

  4. 点击连接到 Git 仓库按钮:JIRA 与其他 Git 仓库

  5. 在弹出的窗口中,点击高级设置链接,以添加更多配置选项的 Git 仓库。在下一个屏幕中,输入 Git 仓库的显示名称,并提供 Git 仓库的仓库根目录。在我们的示例中,我们将使用一个本地 Git 仓库,托管并位于c:\git-repo路径下。在启用抓取单选框中,选择与 JIRA 托管在同一服务器上的 Git 仓库JIRA 与其他 Git 仓库

  6. 另外,在智能提交下拉列表中,选择已启用,然后点击添加按钮继续:JIRA 与其他 Git 仓库

  7. Git 仓库将被添加并显示在列表中:JIRA 与其他 Git 仓库

同时,点击右上角的重新索引所有按钮,以索引 Git 仓库。由于我们在配置仓库时启用了智能提交,开发者在提交代码时还可以过渡 JIRA 问题。欲了解更多有关智能提交的信息,请阅读文档:confluence.atlassian.com/display/BITBUCKET/Processing+JIRA+issues+with+commit+messages

虽然这款插件不是免费的,但它为在 JIRA 实例中使用任何 Git 仓库打开了许多可能性。

JIRA 与 Confluence

Confluence 是 Atlassian 公司的另一款流行工具,广泛用于在线协作。用户可以利用它来准备文档、教程、文章、博客、项目报告以及各种其他类型的文档。将 JIRA 与 Confluence 集成后,用户可以在 Confluence 中创建实时 JIRA 报告。让我们来看看设置此集成的步骤:

  1. 进入Confluence 管理 | 应用链接(在管理下)。可以在此创建与 JIRA 的链接。在文本框中输入你的 JIRA 实例 URL,然后点击创建新链接按钮:JIRA 与 Confluence

  2. 在下一屏幕中,系统会要求你确认 JIRA 实例的链接。点击继续按钮:JIRA 与 Confluence

  3. 接下来,你将被引导到 JIRA 实例中,创建一个指向 Confluence 的互通链接。点击继续按钮,你将被重定向回 Confluence:JIRA 与 Confluence

最终,你将在 Confluence 和 JIRA 中都创建应用链接。完成此集成后,你将能够在 Confluence 页面中嵌入 JIRA 问题,并生成图表。

提示

将 JIRA 与其他 Atlassian 产品(如 Bamboo、Fisheye/Crucible 和 Bitbucket)集成,通常只需通过创建应用链接来完成。

摘要

本章介绍了如何将 JIRA 与软件开发过程中常用的其他工具集成。与版本控制软件的集成使开发人员能够将代码文件与 JIRA 工单关联起来。Atlassian 公司的大多数其他工具也可以通过安装插件或配置应用链接与 JIRA 集成。在下一章中,我们将讨论使用 JIRA 时需要遵循的最佳实践,尤其是在具有数千名用户和多个自定义设置的企业环境中。这些最佳实践和标准化流程将帮助管理员长期维护和支持 JIRA。

第十七章:JIRA 最佳实践

当多个用户在不同的用例中使用 JIRA 时,管理起来可能会变得繁琐,尤其是那些在项目间共享的自定义方案。想象一下,如果一个项目经理要求你从他的某个项目的屏幕中删除某个自定义字段,但你不小心将它也从其他项目中删除了。在本章中,我们将讨论 JIRA 管理员可以采取的最佳实践,以便更好地管理他们的实例。

在本章中,我们将涵盖以下内容:

  • 在修改默认方案和配置之前需要注意的事项

  • JIRA 自定义过程

  • 使用项目上下文为多个项目分配不同的选项

  • 创建过多自定义字段——会导致性能变慢

  • 明智地选择自定义字段类型

  • 定义权限

  • JIRA 的审计日志

  • 添加公告横幅

  • 添加介绍

  • 执行定期索引

  • 最后的建议

在修改默认方案和配置之前需要注意的事项

新安装的 JIRA 实例自带许多默认的方案,包括问题类型、工作流、字段配置和权限。这些默认配置适用于简单的缺陷追踪,并且有一个适用于任何通用项目的流程。不要急于开始自定义配置。如果 JIRA 是公司首次使用,那么最好先用默认配置进行试点测试。这将帮助用户了解 JIRA 的功能,并收集用户反馈。

当你准备好自定义配置时,可以选择从空白配置开始,或者创建默认配置的副本,然后在此基础上进行更改。

JIRA 自定义过程

自定义 JIRA 应该被视为一个独立的项目。尽管在配置 JIRA 时很容易开始进行更改,但你始终应该先规划自定义的内容并记录下来。

您可以执行以下步骤以开始自定义过程:

  1. 使用默认配置试点 JIRA。

  2. 收集反馈。

  3. 记录提议的配置。

  4. 沙箱上测试配置。

  5. 在生产环境中实施。

  6. 规范化配置。

  7. 设置变更控制委员会CCB)。

使用默认配置试点 JIRA

向新工具的过渡总是会遇到用户的抵触,JIRA 也不例外;然而,JIRA 的优点是其直观性,并且能够清楚地将使用部分与管理部分区分开来。在首次部署 JIRA 时,始终使用默认配置,并请用户测试几天。这将确保用户首先熟悉 JIRA 自带的功能。这个试点测试最好至少涵盖每个团队中的一个候选人,包括项目经理、项目负责人、开发人员和测试人员。

收集反馈

在试点阶段结束时,请要求用户提供反馈。可以在反馈表中提出以下问题:

  • 默认的任务类型是否足够满足你的项目需求?

  • 你希望在工作流中进行哪些更改?

  • 默认字段是否足以捕获信息?

  • 你需要电子邮件通知吗?

  • 有多少种类型的用户将使用 JIRA?

  • 是否希望某些用户有访问限制?

  • 你希望有哪些报告?

这些重要问题的答案将帮助你很好地了解项目中各方对定制的期望。

记录和最终确定提议的配置

仅仅收集反馈是不够的,不能直接开始定制。首先将这些定制记录在文档中,详细描述需求,这非常重要。

我们在第六章中详细讨论了如何收集需求,用例示例实现。理想情况下,每个用例应该准备一个单独的文档。在进行任何系统更改之前,应该先更新该文档。这将确保如果新的 JIRA 管理员加入公司,他们能够轻松理解 JIRA 的定制内容。

一旦文档准备好,与你的相关方分享,并请他们提供反馈。与他们组织会议,进一步完善需求并对文档进行必要的修改。最终,这个文档应包含所有实际定制的细节,哪些新任务类型需要创建,工作流应在文档中进行可视化,同时要列出需要创建的新状态,并且权限方案和通知方案也应当提到。

在沙盒中测试配置

一旦需求最终确定,你应该先在测试环境中进行测试。为此,搭建一个沙盒 JIRA 实例(它是生产环境的精确复制)。所有现有配置中的新旧更改应首先在沙盒中进行测试。沙盒非常重要,尤其是在 JIRA 需要升级到新版本时,或者你想评估一个新的插件时。

沙盒作为生产环境的精确复制,将为相关方提供测试他们请求的定制的机会,而不必担心对生产环境造成任何损害。

在这个测试阶段,相关方肯定会给你很多反馈,要求你根据他们之前无法预见的情况进行某些定制。记下所有这些更改,并对文档进行必要的修改。

在生产阶段实施

一旦在测试环境中成功实施,你就可以在生产环境中手动进行定制。此时,JIRA 管理员将会在 JIRA 配置文档中看到所有相关信息。在生产环境中进行实际实施不会花费太多时间。

然而,如果你在已经被多个用户使用的 JIRA 实例中进行更改,最好首先通知他们这些变化。你可以写一份简短的发布说明,提到正在进行的更改。这可以避免用户因为意外的变化而感到惊讶。配置更改通常不需要停机,但如果你要更改工作流,最好在没有人使用该实例时进行更改。因此,提前通知用户任何停机时间是很有必要的。

标准化配置

JIRA 的应用范围广泛。它是一个问题跟踪和项目管理工具。这个工具不仅可以用于缺陷跟踪,还可以用于测试管理、帮助台、需求管理和敏捷跟踪。

现在,最初在实施 JIRA 时,它会根据一个或多个项目的特定用例进行定制,但随着更多团队开始使用 JIRA,他们会请求更多的定制功能。JIRA 允许在多个项目中使用相同的配置,但当项目数量增加时,不能为所有项目使用相同的方案。因此,在 JIRA 中标准化配置并要求新团队遵循这些配置变得非常重要。

让我们来看一下 JIRA 中的以下场景,包含三个不同的用例:

用例 项目数量
测试管理 10
帮助台 5
需求管理 2

正如前面的表格所示,多个项目使用相同的配置。现在,使用测试管理方案的其中一位项目经理可能会要求你在他们的项目中添加一个新的自定义字段或将现有字段设置为必填。这些小的定制更改会影响所有使用相同配置的其他项目。我们可以通过创建一组新的方案来限制这些定制只对一个项目生效,但这会导致 JIRA 管理员的维护工作增加。

避免为相同的用例创建多个方案,并且在接受对现有配置的任何更改之前,与你所有使用该配置的项目的利益相关者进行沟通。如果有一个项目经理要求添加一个自定义字段,请与其他项目经理讨论,并在获得所有利益相关者的确认后再进行更改。

因此,尽可能标准化你的配置并在其他项目中复用这些配置是非常重要的。

在第四章,测试管理的 JIRA 定制,和第六章,用例的样例实现,我们详细讨论了如何定制 JIRA,并提供了各种示例。

设置变更控制委员会(CCB)

JIRA 管理员负责实施定制化请求。如前所述,配置应尽可能标准化,但有时需要在 JIRA 中进行更改以支持 JIRA 的需求。任何更改,无论大小,都需要首先进行分析,因为它可能导致进一步的问题。我推荐成立变更控制委员会(CCB),其工作是研究定制化请求,并在实施前进行评估。

我推荐以下流程:

  1. 在 JIRA 中创建一个用于支持请求的项目,涵盖不同类型的问题,如缺陷、改进和新特性。

  2. 要求用户为任何 JIRA 支持在此项目中提交工单。

  3. 一旦工单创建,分析请求的定制化内容并进行影响分析。

  4. 如果没有影响,直接在 JIRA 中实施这些变更。

  5. 如果其他项目受到任何影响,需与其他项目的利益相关者讨论这些变更。

  6. 根据与利益相关者的讨论,决定是否在 JIRA 中实施该变更。

影响分析的各种场景

让我们来看一下用户的一些定制化请求以及它们可能对实例的影响:

请求 其他项目使用吗? 影响 结论
新增自定义字段 首先与其他利益相关者确认此变更
在选择列表自定义字段中新增值 要么与其他利益相关者确认此变更,要么使用上下文为该项目创建不同的值集
更改工作流条件 重大 这是一个重大变更,应该与所有利益相关者讨论
新增工作流状态 重大 这是一个重大变更,应该与所有利益相关者讨论
创建一个必填自定义字段 重大 这是一个重大变更,应该与所有利益相关者讨论
安装新插件 是,适用于全球范围 重大 先在沙箱环境中安装此插件,并要求利益相关者进行评估
创建新问题类型 重大 与所有利益相关者讨论此新问题类型的需求

这些是 JIRA 管理员将会收到的一些请求示例。对于每个请求,在实施之前要先分析其影响。

使用项目上下文在多个项目中分配不同选项

假设我们有一个名为Customer的自定义字段。这个字段是一个下拉列表,包含不同的值,用户在创建问题时可以选择。如果 JIRA 被多个团队使用,每个团队处理不同的项目,那么客户列表可能会有所不同。一个项目可能面向的客户群体与其他项目不同。解决这个问题的一种方法是将所有客户都列在同一个列表中,但这会导致提出工单的团队成员产生混淆,并且可能会出错,因为用户可能会选择错误的客户。

可以为每个项目创建不同的自定义字段来解决这个问题(每个项目都有自己独立的客户列表),但这样会导致冗余,因为我们会在每个列表中存储相同类型的信息。

JIRA 的自定义字段提供了使用上下文来解决这个问题的方法。执行以下步骤来创建一个新的上下文:

  1. 转到管理 | 问题 | 自定义字段(在字段下),你将看到系统中所有自定义字段的列表。

  2. 点击自定义字段的齿轮图标,选择配置使用项目上下文为多个项目分配不同选项

  3. 配置自定义字段:客户的下一个屏幕上,点击添加新上下文链接。使用项目上下文为多个项目分配不同选项

  4. 添加配置方案上下文的下一个屏幕上,输入配置方案标签描述。在选择适用的上下文下,选择此上下文将适用于的项目名称:使用项目上下文为多个项目分配不同选项

  5. 现在你会看到一个新的Demo 项目的上下文,但还没有选项。点击编辑选项链接:使用项目上下文为多个项目分配不同选项

  6. 在下一个屏幕上,输入仅与特定项目相关的客户名称:使用项目上下文为多个项目分配不同选项

  7. 最后,你将拥有两个选项集用于此自定义字段。一个是默认选项,另一个是特定项目的选项:使用项目上下文为多个项目分配不同选项

创建过多的自定义字段—性能变慢的一个因素

我们刚刚讨论了公司应该如何制定流程来管理他们在 JIRA 实例中的自定义设置。随着 JIRA 实例在问题数量、项目和用户数量上的增长,实例的性能会随着时间推移逐渐下降。导致性能变慢的一个主要因素是自定义字段过多。

JIRA 管理员创建自定义字段以存储可以在报告中过滤的数据。这是可以的,但应该尝试重复使用现有的自定义字段。因此,创建具有通用名称的字段,以便它们可以在不同项目中轻松重用。

让我们来看一下可以在 JIRA 实例中创建的一些通用自定义字段:

自定义字段 类型 描述
客户/顾客 选择列表 这使用项目上下文为多个项目创建不同的选项
类别 选择列表 这些标签和组件应该在大多数情况下使用,但这个通用字段可以在使用项目上下文的多个不同选项的许多项目中使用
外部 ID 文本字段 此字段将用于存储在某些外部工具中存储的问题 ID
测试类型 选择列表 当 JIRA 用于测试管理时,可以使用此字段
开始日期 日期选择器 JIRA 确实有截止日期,但任务的开始日期不可用

在系统中添加新自定义字段之前要三思。用户可能会要求你创建许多字段,但要记住,过多的自定义字段可能会导致性能问题。始终尝试优化自定义字段的使用。例如,在创建文本字段(多行)之前,尝试重复使用描述字段;如果你希望用户使用带有预定义文本模板的模板填写详细信息,那么请使用第十四章中描述的方法,定制外观、感觉和行为

明智地选择自定义字段类型

当你从不同的利益相关者收集需求时,他们会要求你创建新的自定义字段来捕获特定的信息。在上一部分中,我们讨论了如何始终尝试优化这些字段的使用。然而,一旦你决定了需要创建的自定义字段,在实例中创建它们之前,花些时间了解各种自定义字段的类型。创建后,字段的类型无法轻易更改。

例如,如果你想存储单一值,可以使用选择列表(单选),而要选择多个值,则使用选择列表(多选)。要捕获日期,可以使用日期选择器,而要存储长文本,可以使用文本字段(多行)

定义权限

确保存储在 JIRA 中的数据安全非常重要。JIRA 中可能有多个客户项目,其信息不能与其他团队共享。JIRA 还可以被客户访问,因此更重要的是隐藏其他项目,只向客户提供与他们相关的项目访问权限。在第四章,为测试管理定制 JIRA中,我们讨论了如何使项目仅对特定组的用户可访问。

JIRA 提供了一个出色的权限系统,允许在细粒度级别进行配置。JIRA 有三种类型的权限,分别是:

  • 全局权限:这些权限适用于整个 JIRA 实例。在这里可以配置例如谁可以登录和谁是 JIRA 管理员之类的权限。

  • 项目权限:这些权限适用于特定项目。在这里可以配置诸如谁可以访问项目、创建问题和关闭问题等权限。

  • 问题安全级别:这些权限适用于特定项目的任务,以控制谁可以查看这些任务。

所有这些级别都需要定义权限,因此请确保具有正确访问权限的人可以查看 JIRA 中的数据。

JIRA 的审计日志

JIRA 中有一个 审计日志,用于跟踪所有 JIRA 配置更改。此日志对于追踪方案中的任何更改非常有用;最棒的是,这个日志可以通过 JIRA 管理界面访问。

让我们访问 JIRA 的 审计日志

转到 JIRA 管理 | 系统 | 审计日志(在 故障排除和支持 下):

JIRA 的审计日志

如前面的截图所示,诸如新用户创建和用户组修改等事件都会被记录。审计日志追踪的更改如下:

  • 用户管理

  • 群组管理

  • 项目更改

  • 权限更改

  • 工作流更改

  • 通知方案更改

  • 自定义字段更改

  • 组件更改

  • 版本更改

JIRA 管理员可以参考此 审计日志 进行故障排除。

添加公告横幅

JIRA 是软件开发生命周期中的关键部分,用于存储各种问题。用户依赖 JIRA 来检查他们的日常任务,经理则使用 JIRA 来跟踪他们的项目。JIRA 管理员有时需要执行需要用户停机的维护活动。作为一种最佳实践,所有用户,或者至少是相关利益方,应该被通知,但为了避免给用户带来惊讶,最好提前告知任何计划中的停机时间。

JIRA 提供了添加公告横幅的选项,该横幅在主导航后会在整个 JIRA 实例中可见。执行以下步骤来添加公告横幅:

  1. 转到 管理 | 系统 | 公告横幅(在 用户界面 下)。

  2. 公告 文本区域,输入您的消息并点击 设置横幅 按钮。您还可以包括 HTML 标签。选择 可见性级别公开 - 显示给任何人,以便将此公告显示给那些甚至未登录的用户:添加公告横幅

  3. 以下截图显示了公告:添加公告横幅

添加简介

当你部署新的 JIRA 实例时,用户需要接受培训;然而,JIRA 在基本使用上并不需要深入的培训,提供有用的介绍性信息是一个很好的做法。这些介绍性信息不仅对已登录的用户可见,对于未登录的用户也同样可见。

执行以下步骤以添加介绍性文本:

  1. 导航到管理 | 系统 | 常规配置,然后点击右上角的编辑设置按钮:添加简介

  2. 在打开的新屏幕中,向下滚动,直到看到简介的文本框。只需输入用户的指引信息,并点击更新按钮。

  3. 现在,访问你的仪表板并注意简介框,它已更新为你的消息:

添加简介

执行常规索引

在第二章中,JIRA 中的搜索,我们详细讨论了 JIRA 的搜索功能以及如何找到你正在寻找的信息。JIRA 维护并构建了一个内部搜索索引,这对于数据的快速检索非常重要。然而,在进行配置更改后,如创建新的字段配置方案、添加新的自定义字段以及安装新的插件,搜索索引会变得不同步。定期重建搜索索引非常重要,这样用户才能体验到快速的搜索时间,并轻松找到所需的信息。

每当你进行涉及搜索索引的配置级更改(如创建新的自定义字段)时,JIRA 会提示管理员执行搜索,并且你将在管理部分看到类似如下的消息:

执行常规索引

你可以点击与此消息一起出现的索引链接,或者导航到 JIRA 管理 | 系统 | 索引(在高级下)来执行索引过程。

你将获得两种执行重新索引的选项。第一个选项是后台重新索引,该选项不会锁定 JIRA 实例,允许用户继续在 JIRA 实例中工作,但需要更多的时间。第二个选项是锁定 JIRA 并重建索引,该选项会锁定实例并阻止用户访问 JIRA,但速度较快:

执行常规索引

点击重新索引按钮开始重新索引过程。根据你的实例大小,这个过程可能需要几秒钟到几个小时,对于大型实例来说。

因此,计划每 15 天进行一次索引,最好选择在用户访问实例较少的时段进行。

最后的建议

除了本章中共享的信息外,还有一些重要的维护活动,任何 JIRA 管理员都应该注意,以确保应用程序的长久运行和平稳功能:

  • 定期进行备份

  • 清理旧的、大的日志文件

  • 仅在提示时规划重新索引

  • 定期扫描你的日志文件

  • 运行完整性检查器

这些额外的要点应作为你的维护检查清单的一部分。

总结

在本章中,我们介绍了 JIRA 管理员应该遵循的一些最佳实践,以维护他们的实例。我们讨论了他们在公司中应采取的定制化过程,以确保 JIRA 实例不会因大量配置而变得混乱。我们还介绍了一些好的 JIRA 管理员会遵循的重要清理和定期维护活动。

当 JIRA 运行缓慢或完全无法使用时,你应该怎么做?作为 JIRA 管理员,确保 JIRA 服务不受影响非常重要。JIRA 是开发过程中的关键工具,开发人员依赖它来检查日常任务。在接下来的最后一章中,我们将介绍一些可能在实例中出现的常见问题,最重要的是,如何排查这些问题。

第十八章:JIRA 故障排除

JIRA 管理员最重要的职责之一是为依赖 JIRA 完成日常工作的用户提供支持。作为 JIRA 管理员,确保服务不受影响非常重要。在本章中,我们将讨论可能在你的实例中出现的常见问题。最重要的是,我们将讲解如何排除这些问题。

在本章中,我们将介绍以下内容:

  • Atlassian 支持

  • 常见的配置问题

  • 增加内存

  • 完整性检查器

Atlassian 支持

购买 JIRA 后,你有权获得 Atlassian 的官方支持,当你提出支持请求时,他们的响应速度相当快。如果你无法自己找到解决方案,可以向 Atlassian 提交支持票。

Atlassian Answers

我们都在从经验中学习,成为某个工具或技术的专家需要时间。Atlassian 拥有一个非常棒的 JIRA 管理员和用户在线社区。在这里,他们相互分享知识,也寻求帮助。我建议,在向 Atlassian 提交支持票之前,你应该始终尝试在 Atlassian Answers 在线门户中寻找可能的解决方案,网址是 answers.atlassian.com/

Atlassian Answers

在这个门户中,你可以看到其他用户发布的问题。你可以浏览这些问题,如果愿意,也可以回复它们,帮助他人。每个问题通常都会标有标签(如 jirajira-administrationconfluence)。你可以点击任何标签,找到所有与该标签相关的问题。Atlassian Answers 是一个很棒的在线门户,供你寻求帮助。

报告问题

向 Atlassian 提交支持请求非常简单。Atlassian 拥有一个支持门户,你可以在其中提交你的支持票。根据问题的紧急程度,你将从 Atlassian 获得回应。根据我的经验,Atlassian 提供的支持非常好,他们会及时响应。如果你对票据有进一步的疑问,可以发布后续评论,只有在对提供的解决方案满意时才能关闭票据。

执行以下步骤以提交支持请求票:

  1. 在浏览器中输入 support.atlassian.com/customer/servicedesk-portal,然后从工具列表中点击 JIRA。接着点击 JIRA CoreJIRA SoftwareJIRA Service DeskReporting a problem

  2. 在下一屏幕中,点击 向我们提交问题报告Reporting a problem

  3. 在下一个屏幕上,你将看到一个表单。此表单包含多个字段,你可以在其中解释问题。填写影响版本字段,以帮助 Atlassian 支持团队了解你遇到问题的应用程序版本,然后按创建按钮来创建问题:报告问题

  4. 问题创建后,你还可以上传截图(如果有的话)或附加日志文件:报告问题

日志扫描器

如果你遇到任何问题,首先应检查位于home/log/atlassian-jira.log的日志文件,该文件位于你的JIRA HOME目录中。

所有内部错误信息都会记录在此文件中,它提供了关于问题源的非常有用的信息。你将获得很好的线索,帮助你开始故障排除。你可以在Atlassian Answers中搜索日志文件中的相应错误信息。

如果你刚开始时觉得查看日志文件很有挑战性,你还可以使用 JIRA 自带的日志扫描器选项。按照以下步骤运行日志扫描器:

  1. 转到管理 | 系统 | 支持工具(在故障排除与支持下):日志扫描器

  2. 点击日志分析器标签链接以运行扫描器。你将有选项选择运行标准日志文件或任何其他日志文件,后者可以通过输入其位置来指定。我们将选择标准日志文件。点击扫描按钮继续:日志扫描器

  3. 扫描器将运行并检查日志文件中的错误和警告信息;日志扫描器的好处是,它还会根据其他用户可能遇到的类似错误信息,提供指向Atlassian Answers和 JIRA 问题的各种链接。作为 JIRA 管理员,你应定期运行此扫描器,阅读这些建议,并采取适当的措施:日志扫描器

  4. 除了手动运行日志分析器,你还可以安排定期扫描并将输出结果通过邮件发送给你。点击右上角的定期扫描按钮来安排扫描:日志扫描器

  5. 选中启用复选框,设置开始时间频率,在收件人文本框中输入你的电子邮件地址,然后点击保存更改按钮。

支持 ZIP

当你向 Atlassian 支持团队提交支持请求时,附上日志文件总是一个好主意。你可以手动复制 JIRA 主目录中的整个log文件夹,并将该文件夹的压缩版本发送给 Atlassian;然而,JIRA 为你简化了这个过程。你可以生成支持 ZIP 文件。这个文件不仅包含你的实例的日志文件,还包含应用程序属性JIRA 配置文件以及其他一些重要文件,这些文件可以让 Atlassian 更好地了解你的实例,从而为你的问题提供更好的解决方案。

支持工具下,点击第三个标签,名为创建支持 ZIP。在这里,你将有选项选择要包含在支持 ZIP 文件中的文件。然后,点击创建按钮生成支持 ZIP 文件:

支持 ZIP

支持 ZIP 文件会以时间戳为后缀,其压缩版本会被放置在 JIRA 主目录下的export文件夹中。你可以复制这个文件,并将其附加到你的支持请求单中。

常见配置问题

在第十七章,JIRA 最佳实践中,我们讨论了你可以在组织中实施的各种最佳实践,以便对 JIRA 进行自定义。我们还描述了执行自定义过程的步骤(从收集需求到测试新配置)。如果测试没有做好,之后很可能会出现问题,用户也会提出投诉。让我们一起看看一些常见的配置相关问题及其可能的原因。

用户无法登录

假设你收到一个请求,要求在 JIRA 中创建一个新用户账户。你手动创建了账户,并为用户分配了适当的组,以便让用户访问相关项目,但你收到投诉,称该用户根本无法登录 JIRA。

解决方案

首先,检查 JIRA 实例中的全局权限,看看哪些组是 JIRA 用户权限的一部分。在默认的 JIRA 配置中,jira-users组是这一权限的一部分。只需检查该用户是否属于jira-users组即可。

用户看不到项目

如果你在项目中使用不同的权限方案来隐藏特定项目,防止所有人看到,那么用户可能无法看到他们想要参与的项目。

解决方案

在第四章,JIRA 定制化测试管理中,我们讨论了如何限制项目对特定组的可见性。项目权限方案中的浏览项目权限决定了谁能看到该项目,谁不能看到该项目。只需检查哪个组或项目角色被分配了这个权限,并将用户添加到该组或项目角色中即可。

权限助手

JIRA 提供了一个便捷的工具,叫做权限助手,可以快速告知用户是否拥有特定权限:

  1. 转到管理 | 系统 | 权限助手(在管理员助手下)。权限助手

  2. 输入用户,选择要检查的问题权限,然后点击提交按钮:权限助手

  3. 如上图所示,你将看到用户在特定问题上的权限详细信息。

这是一个非常棒的工具,可以快速检查任何用户的权限。

用户抱怨未收到电子邮件

JIRA 具备在各种事件(如问题创建、解决和工作流转换)中向相关用户发送电子邮件通知的功能。

如果用户无法收到电子邮件,请根据以下问题进一步澄清:

未收到电子邮件 解决方案
对某些事件未收到电子邮件或根本无法收到电子邮件 如果电子邮件根本无法工作,请检查外发邮件配置。可能是简单邮件传输协议SMTP)邮件服务器的问题。
在特定问题的变更中未收到电子邮件 检查用户是否是报告者、受让人、观察者、组件负责人或项目负责人。然后,检查项目通知方案是否已配置为在问题事件中发送电子邮件。
在状态转换时未收到电子邮件 如果使用了自定义工作流,请检查是否触发了任何自定义事件的后续功能。然后,在项目通知方案中,检查是否有用户、组或角色配置为接收此自定义事件的电子邮件。

工作流按钮丢失

自定义工作流能够在各种转换上添加条件,常见的用法是限制谁可以执行这些转换。例如,在默认工作流中,一旦问题被创建,只有该问题的受让人才能将其移动到进行中状态。在自定义工作流中,你必须非常小心这些条件,因为如果条件没有得到满足,用户可能无法在工作流中移动问题。

解决方案

如果用户抱怨无法执行工作流转换,请检查该转换的条件。如果条件不需要,可以修改或删除条件,或者将用户添加到相关组或权限中,以便进行转换。

选择列表中的选项突然发生了变化

在第十七章《JIRA 最佳实践》中,我们讨论了通过使用上下文在多个项目中使用相同的选择列表类型自定义字段,通过上下文创建不同的选项集以显示在字段中。为单个项目添加不同的选项集的请求非常普遍,并且可以通过上下文轻松完成。然而,如果两个或更多项目使用相同的上下文,则通过不选择项目名称同样容易出错。

在配置时,请选择适用的上下文;项目名称可在列表中找到,并且要选择多个项目,您需要按下 Ctrl 键。

自定义字段从项目中消失

在开始阶段,使用上下文可能会很棘手。JIRA 管理员面临的另一个常见问题是,用户抱怨自定义字段突然从项目中消失,尽管此自定义字段出现在屏幕上。

在创建上下文时,如在第十七章《JIRA 最佳实践》中讨论的那样,有一个选项,选择适用的问题类型。默认情况下选择任何问题类型,但如果错误选择了特定问题类型(例如Bug),则该问题类型将存在于项目中,并且内容将仅限于此问题类型。除非有特定请求限制特定问题类型的自定义字段,否则最好选择任何问题类型

增加内存

当您的 JIRA 实例不断增长,无论是用户数量还是数据量,都需要跟踪实例消耗的内存。在第一章《规划您的 JIRA 安装》中,我们讨论了硬件建议,其中提到了根据使用情况所需的最低 RAM 和 CPU,有时 JIRA 会消耗比平常更多的内存(例如进行 XML 备份,消耗大量内存),因此在执行这些活动之前,请确保实例的使用人数不多。然而,随着实例的增长,它将消耗大量内存,并可能导致性能下降。由于内存不足,您的 JIRA 实例可能会停止工作。

执行以下步骤检查内存消耗:

  1. 转到管理 | 系统 | 系统信息(在故障排除和支持下)。

  2. 向下滚动,直到看到Java VM 内存统计信息增加内存

在此部分,您可以查看实例的可用内存量及当前剩余内存量。要释放一些内存,还可以单击强制垃圾回收链接。

如果您在日志文件中注意到性能下降或 Java 堆内存溢出 错误,则可以增加 JIRA 可用内存。按照以下说明进行修改:

  1. 打开 JIRA 安装目录下bin目录中的setenv.bat文件。

  2. 根据实例中问题的数量,将Java 虚拟机JVM)的最大内存从 768 MB 增加到 1024 MB 或更多。

            set JVM_MAXIMUM_MEMORY=1024m 
    
    

Atlassian 表示,1 GB 的 JVM 最大内存足以处理 5000 个问题。你可以根据实际情况适当增加内存,同时确保服务器上有足够的物理 RAM。

完整性检查器

每当实例出现问题时,任何有经验的 JIRA 管理员都会知道首先应该检查哪个地方来解决这些问题;不过,JIRA 内置了一个名为完整性检查器的工具,可以用来识别任何可能的问题。按照以下步骤使用完整性检查器工具:

  1. 进入管理 | 系统 | 完整性检查器(位于故障排除和支持下)。

  2. 勾选全选复选框:完整性检查器

  3. 点击检查按钮以继续:完整性检查器

在下一个屏幕上,系统将显示实例中配置问题的列表。你可以勾选全部修复复选框并点击修复按钮来解决这些问题。或者,如果你知道这些问题的实际原因,可以手动解决它们,并重新运行完整性检查器

概述

在本章中,我们讨论了在 JIRA 实例中可能出现的各种问题。最重要的是,我们讨论了如何处理这些问题。如果配置没有经过充分测试,用户可能会抱怨使用方面的问题,这些问题可以通过对配置做出适当的修改来解决。本章讨论了此类配置相关的问题及其解决方案。

这是本书的最后一章。希望你在阅读这些章节时有所收获,我相信你一定学到了很多 JIRA 所提供的有趣功能。近年来,JIRA 以及其他 Atlassian 工具,已经成为组织中流行的选择。如今,JIRA 不仅仅被视为一个管理问题的工具,它更被认为是一种能力。如果你是项目经理、Scrum Master,或者负责管理任何项目,学习 JIRA 肯定能帮助你充分发挥这个强大工具的优势。

posted @ 2025-07-02 17:47  绝不原创的飞龙  阅读(28)  评论(0)    收藏  举报