用基础设施自动测试和部署(CI/CD)更有成效。他们所要做的是将代码提交到代码库中,而不是管理多种工具和手动流程。
在一个项目中,不是每个人都会访问CI/CD系统,但他们可能需要知道构建过程何时失败或成功。这就是CI/CD系统和项目管理工具(如Jira)之间适当握手的地方。
Jira是众所周知的,被许多(如果不是大多数)软件开发团队用作项目管理软件,用于跟踪问题、管理Scrum和Agile项目,以及其他。
在本教程中,我将向你展示如何在你的CI/CD工作流程(本项目为CircleCI)和Jira工作项目之间建立集成。通过这个实现,你可以在你的Jira面板上看到你所有构建和部署的状态。为了实现这种整合,你将使用CircleCI orb注册表中的Jira orb。
前提条件
在本教程中,你将需要。
- 在你的电脑上安装Node.js
- 一个GitHub账户
- 一个CircleCI账户
- 一个Twilio账户
- 一个Atlassian账户
- JIRA的管理权限
我们将建立什么
为了监测工作流程的状态,你将建立一个基本的Node.js应用程序,从主页路由/ ,返回一个消息。你还将编写一个测试断言,以确保返回预期的消息。
开始工作
为项目创建一个文件夹,并使用这个命令移动到新创建的文件夹中。
mkdir node-jira-app && cd node-jira-app
接下来,在项目中创建一个带有动态定义值的package.json 文件。
npm init -y
安装项目的依赖性
为了构建应用程序,我们将使用Express作为Node.js express web应用程序框架。运行这个命令来安装Express。
npm install express --save
我们将使用Mocha为项目运行测试,使用Chai作为断言库。发出这个命令来安装这两个库。
npm install chai mocha request --save-dev
一旦安装过程完成,在项目的根部创建一个新的文件,名为index.js 。
touch index.js
打开这个新文件,用这个内容填充它。
var express = require("express");
var app = express();
// Root URL (/)
app.get("/", function (req, res) {
res.send("Sample Jira App");
});
//server listening on port 8080
app.listen(8080, function () {
console.log("Listening on port 8080!");
});
你添加的内容指定了应该在项目的主页上显示的信息。
接下来,用以下方式运行应用程序。
node index.js
从你的浏览器导航到http://localhost:8080 。

结果只是一个基本的消息,以确认我们的应用程序工作。在你的终端键入CTRL + C ,停止应用程序的运行。按回车键继续。
创建一个测试脚本
为了开始工作,在应用程序中创建一个单独的文件夹来存放测试脚本。将其命名为test 。
mkdir test
在test 文件夹中添加一个新文件,命名为test-home.js 。
touch test/test-home.js
接下来,我们将添加一个简单的测试,以确认主页包含文本 "Sample Jira App"。将此内容粘贴到文件中。
var expect = require("chai").expect;
var request = require("request");
it("Home page content", function (done) {
request("http://localhost:8080", function (error, response, body) {
expect(body).to.equal("Sample Jira App");
done();
});
});
在本地运行该测试
首先,在package.json 文件中更新scripts 部分,用一个命令来轻松运行应用程序和测试脚本。输入这个内容。
{
"name": "jira-app",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "mocha",
"start": "node index.js"
},
...
}
}
用npm run start 运行应用程序。从不同的标签但仍在项目内,发出这个命令来运行测试。
npm run test
这将是结果。
➜ node-jira-app npm run test
> jira-app@1.0.0 test
> mocha
✔ Main page content
1 passing (34ms)
添加CircleCI配置以实现测试自动化
为了使测试自动化,在你的应用程序的根目录下创建一个.circleci 文件夹。添加一个名为config.yml 的新文件。打开新创建的文件,粘贴这段代码。
version: 2.1
orbs:
node: circleci/node@4.7.0
jobs:
build-and-test:
executor:
name: node/default
steps:
- checkout
- node/install-packages
- run:
name: Run the app
command: npm run start
background: true
- run:
name: Run test
command: npm run test
workflows:
build-and-test:
jobs:
- build-and-test
这个配置文件指定了使用哪个版本的CircleCI。它使用CircleCI的Node orb来设置和安装Node.js。该配置还安装了项目的所有依赖。
最后一个命令是实际的测试命令,它运行我们的测试。
在将项目部署到GitHub之前,在项目的根目录下创建一个.gitignore 文件。输入这个。
# compiled output
/dist
/node_modules
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
# OS
.DS_Store
# IDEs and editors
/.idea
.project
.classpath
.c9/
*.launch
.settings/
*.sublime-workspace
# IDE - VSCode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
现在你可以把项目推送到GitHub了。
将应用程序连接到CircleCI
在这一点上,你需要将应用程序连接到CircleCI。要做到这一点,请用包含该应用程序的GitHub链接账户登录您的CircleCI账户。进入CircleCI仪表板上的项目页面。选择您的GitHub账户并添加项目。

点击Set Up Project。系统会提示您创建一个新的config.yml 文件,或者通过选择您推送项目的分支来使用一个现有的文件。

点击Let's Go按钮,CircleCI将开始运行该项目。

您的构建应该是成功的。

将Jira与CircleCI连接起来
实现CircleCI和Jira软件之间的成功互动需要几个步骤。在这里,他们是按顺序的。
- 在Jira上创建一个项目和问题。
- 安装CircleCI for Jira插件。
- 添加Jira令牌到CircleCI。
- 在CircleCI上创建一个个人API令牌。
- 在你的
.circleci/config.yml文件的顶部使用CircleCI 2.1版本。 - 在你的版本下面添加 orbs stanza,调用Jira orb。
- 在你现有的作业中使用
jira/notify命令,将状态发送到Jira开发面板。
创建一个Jira项目和问题
在这里登录到你的Jira实例并创建一个项目。在项目页面上,单击 "创建"按钮。

给它一个最能描述问题的名字。在本教程中,我们使用Build Status Demo App Issue 。


当问题被创建后,你可以通过点击列表中的问题来详细查看。

请注意这个问题的密钥;它将被用来在CircleCI中唯一地识别这个问题。
安装CircleCI Jira插件
导航到您的Jira仪表板并探索市场。搜索CircleCI for Jira应用程序。

注意。 你必须是一个Jira管理员来安装插件。
点击,然后按照说明来安装插件并进行设置。

点击 "开始"按钮,获得您的Jira配置令牌。

复制此令牌并将其保存在安全的地方。在本教程中你将需要它。这个令牌可以确保你的Jira实例和CircleCI项目之间的正确连接。
添加Jira令牌到CircleCI
在CircleCI上的应用程序的管道页面,点击项目设置按钮。

您将被重定向到一个页面,您可以从侧边栏选择Jira集成。点击添加令牌按钮,它位于设置Jira认证部分。这将显示一个提示,你可以输入Jira配置令牌。

完成后,保存并添加令牌。
创建一个个人API令牌
转到用户设置,点击创建新令牌按钮。

给你的令牌一个友好的名字。

完成后点击添加。复制生成的令牌,回到项目设置页面。
从那里点击侧边栏的环境变量,然后点击**添加环境变量。**将该变量命名为CIRCLE_TOKEN ,并使用生成的API令牌作为其值。

你已经成功连接了Jira实例和CircleCI管道。
为Jira软件启用CircleCI
在你可以开始在Jira上显示你的CircleCI的构建状态之前,你需要对CircleCI的配置文件做一些修改。
回到你的项目中,打开.circleci/config.yml ,通过添加Jira orb来更新其内容。
version: 2.1
orbs:
node: circleci/node@4.7.0
jira: circleci/jira@1.3.1
jobs:
build-and-test:
executor:
name: node/default
steps:
- checkout
- node/install-packages
- run:
name: Run the app
command: npm run start
background: true
- run:
name: Run test
command: npm run test
workflows:
build-and-test:
jobs:
- build-and-test:
post-steps:
- jira/notify
我们也包括一个Jira的球体和工作流程。jira/notify 命令将被用来发送构建的状态到Jira实例。
更新Git并将项目推送回GitHub。这一次,用Jira上的任务或问题ID的密钥创建一个特性分支。在我们的例子中,它是BSDP-1 。
git checkout -b features/BSDP-1
如果密钥不一样,别忘了用你的密钥替换BSDP-1 。

总结
在其他好处中,将CircleCI连接到Jira软件可以让你的开发团队中的每个人都能及时了解每个构建的状态,而不需要去CircleCI上的管道仪表板。
在本教程中,你
- 建立一个简单的Node.js应用程序
- 为它编写一个测试脚本
- 按照步骤连接CircleCI管道和Jira项目
- 在Jira上显示CircleCI构建的状态