使用node调用jira接口
使用node脚本调用jira的接口,可以直接通过jira的jql获取过滤之后的jira数据。
安装库npm install jira-client
const JiraApi = require('jira-client');
const moment = require('moment');
const JiraModel = require('Model')async function getSwimIssues(jira, startDate, endDate) {const maxResults = 1000;const start = !!startDate ? ` AND created >= "${startDate}"` : '';const end = !!endDate ? ` AND created <= "${endDate}"` : '';const jql = 'XXX' + ' ORDER BY created DESC';try {return await jira.searchJira(jql, { maxResults });} catch (e) {console.error(e);return new Error(e);}
}function getIssueDict(issues) {if (issues && issues.length) {return issues.map(item => {return {jira_key: item?.key,influence_version: item?.fields?.versions?.[0],issue_type: item.fields?.issuetype?.name,summary: item.fields?.summary,assignee: item.fields?.assignee?.name}})} else {return [];}
}const jiraTask = async (schedule = true) => {const lastWeekMonday = moment().subtract(1, 'weeks').startOf('isoWeek').format('YYYY-MM-DD HH:mm');const lastWeekSunday = moment().subtract(1, 'weeks').endOf('isoWeek').format('YYYY-MM-DD HH:mm');const today = moment().format('YYYY-MM-DD HH:mm');const lastThirtyDays = moment().subtract(30, 'days').format('YYYY-MM-DD HH:mm');const lastYear = moment().subtract(1, 'year').startOf('year').format('YYYY-MM-DD HH:mm');const jira = new JiraApi({host: 'host.com', //公司的hostprotocol: 'https',apiVersion: '2',strictSSL: true,username: 'Account',password: 'Password',});try {if (jira) {let result = {};if (schedule) {result = await getSwimIssues(jira, lastWeekMonday, lastWeekSunday);} else {result = await getSwimIssues(jira, lastThirtyDays, today);}const filterdIssues = getIssueDict(result?.issues);if (filterdIssues && filterdIssues.length) {try {for (const item of filterdIssues) {const existingRecord = await JiraModel.findOne({ where: { jira_key: item.jira_key } });if (!existingRecord) {await JiraModel.create({...item,is_active: 'Y'})} else {await JiraModel.update(item, { where: { jira_key: item.jira_key } })}}} catch (error) {throw error;}}}} catch (error) {console.error(error);throw new Error(error);}
};module.exports = jiraTask;
注意,可以获取到的jira数据还是跟账号密码有关哦。