如何设置多个Jenkins作业相互触发?

时间:2016-11-22 09:34:05

标签: jenkins

我正在为我的NodeJS和Angular项目设置CI。手动过程是首先在cmd-A上启动节点服务器,然后在不同的cmd-B上启动客户端(Angular)。然后我启动webdriver-manager以便能够在cmd-C上测试Angular Unit测试,最后我使用protractor执行测试。

我不确定如何在Jenkins工作中实现此过程。我假设我可能要定义4个不同的工作。

  1. JobA - npm start(针对节点服务器)
  2. JobB - npm start(适用于Angular代码)
  3. JobC - webdriver-manager start
  4. JobD - protractor tests.js
  5. 我不确定服务器是否在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插件,然后运行测试。

1 个答案:

答案 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服务器或终止相关进程。