云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

服务器_web服务器原理_12月免费

小七 141 0

在这个博客中,我们将在SAP HANA XSA中构建NodesJS和SAPUI5应用程序来控制Jenkins的构建过程(詹金斯·伊奥)提供了一种简单的方法,可以使用管道为几乎所有语言和源代码存储库的组合设置连续集成或连续交付环境,以及自动化其他常规开发任务。

SAP HANA XSA詹金斯(詹金斯·伊奥)安装在本地计算机上詹金斯的NodeJS客户(https://www.npmjs.com/package/jenkins)一个简单的Python程序

配置Jenkins作业来执行Windows批处理命令来运行Python程序。为简单起见,Windows批处理文件和Python应用程序驻留在同一个Jenkins服务器上(这在生产模式下可能不实用)。在saphanaxsa中为Jenkins安装和配置NodeJS客户端,并构建NodeJS应用程序以调用restapi来构建、获取和停止Jenkins作业。最后,我们将在SAP HANA XSA中构建SAPUI5前端,以触发作业、检查作业状态和取消作业。

转到Jenkins主仪表板并单击"新建项目"。输入item name trigger并选择Freestyle project。单击"确定"继续。在"生成"下,添加"生成步骤""执行Windows批处理命令"。指定命令。在这里,我想执行运行.bat在文件夹C:\MyPython\中。单击"保存"完成。返回主仪表板,您将看到我们刚刚创建的项目"触发器"。

登录SAP HANA XSA的SAP Web IDE。在SAP Web IDE for HANA XSA中创建一个新项目,并选择SAP云平台业务应用程序。单击"下一步"继续。给出项目名称,例如zjenkinauto。单击"下一步"继续。在此页面上,单击"下一步"继续。我们需要NodeJS模块,但是我们稍后会添加它,我们不需要数据库模块。为服务和数据库选择"不包括"。单击"下一步"继续。单击"完成"完成设置。

现在在我们刚刚创建的项目上,右键单击并选择"新建">节点.js模块。给出一个模块名srv。单击"下一步"继续。在此页面上,单击"下一步"继续。单击"完成"完成。我们需要更新服务器.js在srv文件夹中。更新为以下代码:/*eslint没有控制台:0,没有未使用的变量:0,没有-未定义:0,无进程-退出:0*//*eslint env节点,es6*/"严格使用";常量端口=进程环境端口|| 3000;const server=require("http").createServer();const cds=require("@sap/cds");//初始化XSA UAA和HDBEXT中间件的Express应用程序const xsenv=require("@sap/xsenv");const passport=require("护照");const xssec=require("@sap/xssec");const xsHDBConn=require("@sap/hdbext");const express=要求("express");全局。uu base=uuu dirname+"/";//伐木var logging=require("@sap/logging");var appContext=logging.createAppContext();//初始化XS UAA和HDBEXT中间件的Express应用程序var app=express();//压缩应用程序使用(要求("压缩")({阈值:"1b"}));//安全策略头的头盔const helmet=要求("头盔");// ...应用程序使用(头盔());应用程序使用(头盔.内容安全政策({指令:{defaultSrc:'self'',styleSrc:'自我',"sapui5。hana.ondemand.com"],scriptSrc:'自我',"sapui5。hana.ondemand.com"]}}));//设置"参考者策略:无参考者"。应用程序使用(1.参考者政策({策略:"无推荐人"});passport.use公司("JWT",新xssec.JWT策略(xsenv.getServices({uaa公司:{标签:"xsuaa"}}).uaa));应用程序使用(日志记录.中间件({appContext:appContext,logNetwork:正确}));应用程序使用(passport.initialize初始化());应用程序使用(passport.authenticate验证("JWT"{会话:错误}));//重定向到服务根目录应用程序获取("/",(需求,资源)=>{资源发送("UI5詹金斯");});//设置附加节点.js路线需要("/路由器")(应用程序、服务器);//启动服务器服务器.on("请求",应用程序);服务器。听(端口,函数(){控制台信息(`HTTP服务器:${服务器地址().端口}`);});​同时打开包.json在srv文件夹中。并用以下代码更新:{"name":"发球","description":"生成自/包.json,不要改变!","version":"1.0.0","依赖关系":{"@sap/cds":"^3.10.0","快递":"^4.17.1","@sap/xssec":"^2.1.17","@sap/xsenv":"^2.0.0","hdb":"^0.17.0","@sap/hdbext":"^6.0.0",北京大数据研究院,"@sap/hana客户端":"^2.4.139","@sap/textbundle":"最新","@sap/logging":"^5.0.1","@sap/audit logging":"^3.0.0","nodemailer":"^6.2.1","passport":"~0.4.0","async":"^3.0.1","ws":"^7.0.0","accept language parser":"最新","node xlsx":"^0.15.0","node zip":"~1.1.1","xmldoc":"~1.1.2","winston":"^3.2.1","正文分析器":"^1.19.0","elementtree":"最新","then request":"最新","压缩":"~1.7","头盔":"^3.18.0","jenkins":"^0.27.0"},"发动机":{"node":"^8.9","npm":"^6"},"devDependencies":{},"脚本":{"postinstall":"cds build/all--项目。。--清洁","start":"节点服务器.js"},"i18n":{"文件夹":["\u i18n"]},"光盘":{"数据":{"driver":"hana"}}}​我们为Jenkins添加了NodeJS客户端https://www.npmjs.com/package/jenkins在依赖项部分:"jenkins":"^0.27.0"。在srv文件夹中创建一个名为router的文件夹。创建索引.js文件夹路由器。插入以下代码:/*eslint env节点,es6*/"严格使用";模块.exports=(应用程序、服务器)=>{应用程序使用("/node",require("/routes/myNode")());};​在路由器文件夹中创建另一个文件夹路由。我们将创建NodeJS应用程序来触发构建,获取作业信息并停止构建。创建我的节点.js在routes文件夹中。插入以下代码:/*eslint no console:0,no unused vars:0,no shadow:0,新上限:0*//*eslint env节点,返利手游,es6*/"严格使用";var express=要求("express");var async=require("异步");var jenkinsurl="**使用您的JENKINS URL更新";模块.exports=函数(){变量应用=快速路由器();应用程序获取("/triggerJob",(请求,资源)=>{var jenkins=要求("jenkins")({baseUrl:jenkinsurl,大数据解决方案,发行人:对});詹金斯.工作.建造("触发器",功能(错误,数据){如果(错误){资源类型("application/json").status(200).send("Error");}其他{控制台.log("队列项目号:"+数据);资源类型("application/json").status(200).send('{"queue":'+data+'}');}});});应用程序获取("/statusJob",(req,res)=>{var jenkins=要求("jenkins")({baseUrl:jenkinsurl,发行人:对});詹金斯。工作。得到("触发器",功能(错误,大数据能做什么,数据){如果(错误){资源类型("application/json").status(200).send("Error");}其他{控制台.log("构建:"+数据);资源类型("application/json").status(200).send(数据);}});});应用程序获取("/cancelJob",(请求,res)=>{变量jobq=需求查询.q;控制台.log(作业Q);var jenkins=要求("jenkins")({baseUrl:jenkinsurl,发行人:对});詹金斯。建造。停止('trigger',jobq,函数(err){如果(错误){资源类型("application/json").status(200).send('{"status":error}');}其他{资源类型("application/json").status(200).send('{"status":ok}');}});});返回应用程序;};​用Jenkins服务器更新上述代码中的变量jenkinsurl。例如:var jenkinsurl="http://userid:password@10.11.18.134:8080"