当前位置: 首页 > news >正文

使用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数据还是跟账号密码有关哦。

http://www.dtcms.com/a/275196.html

相关文章:

  • [精选]如何解决pip安装报错ModuleNotFoundError: No module named ‘subprocess’问题
  • linux系统-----Redis主从复制
  • 生成对抗网络(GAN)原理详细讲解
  • MoE混合专家模型:千亿参数的高效推理引擎与架构革命
  • python文件操作与正则表达式综合练习
  • 第三方渗透测试:范围咋定?需供应商同意吗?
  • 【经典面经】C++新特性 TCP完整收发数据 TLS1.2 TLS1.3
  • 低成本的AI知识库方案及推荐
  • 计算机网络第三章(6)——数据链路层《网桥交换机》
  • 【Python3教程】Python3高级篇之CGI编程
  • Windows系统下GroundingDINO的安装2025(踩无数坑)
  • Django母婴商城项目实践(三)
  • SpringBoot 使用注解获取配置文件中的值
  • 揭示宇宙的隐藏对称性:群论-AI云计算拓展核心内容
  • 加密狗真的坏了吗?CodeMeter 锁故障判定与质保指引
  • 2025 年第十五届 APMCM 亚太地区大学生数学建模竞赛B题 疾病的预测与大数据分析
  • SpringCloud之Ribbon
  • vue入门学习教程
  • Go语言中的组合式接口设计模式
  • Go·并发处理http请求实现
  • Python Day10
  • C语言初阶4-数组
  • UE5多人MOBA+GAS 18、用对象池来设置小兵的队伍的生成,为小兵设置一个目标从己方出生点攻打对方出生点,优化小兵的血条UI
  • Xavier公式的原理
  • 备案是联系主机商还是域名商
  • ESP32语音唤醒
  • 【B题解题思路】2025APMCM亚太杯中文赛B题解题思路+可运行代码参考(无偿分享)
  • 【内赠门票】GoGoGo!NetMarvel邀您出发ChinaJoy啦!
  • UniHttp中HttpApiProcessor生命周期钩子介绍以及公共参数填充-以百度天气接口为例
  • cocos游戏开发中,如何制作一个空气墙