如何在Jira上显示你的持续集成构建状态

558 阅读8分钟

用基础设施自动测试和部署(CI/CD)更有成效。他们所要做的是将代码提交到代码库中,而不是管理多种工具和手动流程。

在一个项目中,不是每个人都会访问CI/CD系统,但他们可能需要知道构建过程何时失败或成功。这就是CI/CD系统和项目管理工具(如Jira)之间适当握手的地方。

Jira是众所周知的,被许多(如果不是大多数)软件开发团队用作项目管理软件,用于跟踪问题、管理Scrum和Agile项目,以及其他。

在本教程中,我将向你展示如何在你的CI/CD工作流程(本项目为CircleCI)和Jira工作项目之间建立集成。通过这个实现,你可以在你的Jira面板上看到你所有构建和部署的状态。为了实现这种整合,你将使用CircleCI orb注册表中的Jira orb

前提条件

在本教程中,你将需要。

我们将建立什么

为了监测工作流程的状态,你将建立一个基本的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

Node application message

结果只是一个基本的消息,以确认我们的应用程序工作。在你的终端键入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

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

Select project branch

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

Run project

您的构建应该是成功的。

Project build successful

将Jira与CircleCI连接起来

实现CircleCI和Jira软件之间的成功互动需要几个步骤。在这里,他们是按顺序的。

  1. 在Jira上创建一个项目和问题。
  2. 安装CircleCI for Jira插件。
  3. 添加Jira令牌到CircleCI。
  4. 在CircleCI上创建一个个人API令牌。
  5. 在你的.circleci/config.yml 文件的顶部使用CircleCI 2.1版本。
  6. 在你的版本下面添加 orbs stanza,调用Jira orb
  7. 在你现有的作业中使用jira/notify 命令,将状态发送到Jira开发面板。

创建一个Jira项目和问题

在这里登录到你的Jira实例并创建一个项目。在项目页面上,单击 "创建"按钮。

Create Jira Issue

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

Jira issue name

Jira issue list

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

Jira issue details

请注意这个问题的密钥;它将被用来在CircleCI中唯一地识别这个问题。

安装CircleCI Jira插件

导航到您的Jira仪表板并探索市场。搜索CircleCI for Jira应用程序。

Create Jira app

注意。 你必须是一个Jira管理员来安装插件。

点击,然后按照说明来安装插件并进行设置。

Jira app created

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

Copy Jira app token

复制此令牌并将其保存在安全的地方。在本教程中你将需要它。这个令牌可以确保你的Jira实例和CircleCI项目之间的正确连接。

添加Jira令牌到CircleCI

在CircleCI上的应用程序的管道页面,点击项目设置按钮。

Click project settings

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

Add Jira token

完成后,保存并添加令牌。

创建一个个人API令牌

转到用户设置,点击创建新令牌按钮。

Personal API token

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

Create API token

完成后点击添加。复制生成的令牌,回到项目设置页面。

从那里点击侧边栏的环境变量,然后点击**添加环境变量。**将该变量命名为CIRCLE_TOKEN ,并使用生成的API令牌作为其值。

Create environment variable

你已经成功连接了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

View CircleCI build on Jira

总结

在其他好处中,将CircleCI连接到Jira软件可以让你的开发团队中的每个人都能及时了解每个构建的状态,而不需要去CircleCI上的管道仪表板。

在本教程中,你

  • 建立一个简单的Node.js应用程序
  • 为它编写一个测试脚本
  • 按照步骤连接CircleCI管道和Jira项目
  • 在Jira上显示CircleCI构建的状态