我正在为我的NodeJS和Angular项目设置CI。手动过程是首先在cmd-A上启动节点服务器,然后在不同的cmd-B上启动客户端(Angular)。然后我启动webdriver-manager以便能够在cmd-C上测试Angular Unit测试,最后我使用protractor
执行测试。
我不确定如何在Jenkins工作中实现此过程。我假设我可能要定义4个不同的工作。
npm start
(针对节点服务器)npm start
(适用于Angular代码)webdriver-manager start
protractor tests.js
我不确定服务器是否在JobA中启动,这意味着构建仍在运行,如何向JobB发送触发器(一旦JobA成功启动服务器)。如何设置这4个工作? Jenkins在实现整个过程中最优化的方式是什么?
>Project Root
>>server
>>>tests
>>>package.json
>>client
>>>comp1.ts
>>>comp1.spec.js
>>package.json
注意:server/tests
文件夹中提供了服务器端测试。客户端测试可在client/*.spec.js
个文件中找到。现在的目标是运行客户端测试,这是启动服务器的先决条件,启动客户端,启动webdriver-manager插件,然后运行测试。
答案 0 :(得分:1)
您可以根据上游/下游关系创建作业管道。它很难在这里展示,但我会尝试。
在您的第一份工作中,JobA配置在其他项目中添加"触发/调用构建" ,并为"要构建的项目字段&#输入以下名称34; 作为JobB。
当JobA完成后,JobB会自动执行。
在你的下一份工作中,JobB配置在其他项目中添加"触发/调用构建"并为"要构建的项目字段输入以下名称"作为JobC。
您的下一个JobC配置会在其他项目中添加"触发/调用构建"并为"要构建的项目字段输入以下名称"作为JobD。
现在您拥有一个包含所有作业关系的Build管道。然后你可以运行主要工作,在这种情况下,JobA和jenkins将遵循secuence并将在作业序列之后一次又一次地执行所有作业。
您应该使用shell脚本运行所有作业任务,并将其调用到添加命令行shell的作业中。
这是使用上游/下游关系方法的一个示例,通常用于同时构建多个项目。
您还可以使用Build Pipeline Plugin以友好的方式显示管道。
Latest Release: 1.5.4
Latest Release Date:Jul 27, 2016
Required Core: 1.619
请记住,您通过作业运行的所有进程必须将runnig作为服务或独立进程保留,这并不意味着作业也会继续运行。在上一个Job中,在proactor测试结束后,您可以停止npm服务器或终止相关进程。