如何在不同终端的jenkins中运行execute shell命令

时间:2017-04-03 10:44:50

标签: jenkins protractor package.json

我正在通过jenkins运行我的量角器测试,我的package.json看起来像这样:

      <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
      <script src="https://www.gstatic.com/firebasejs/3.7.4/firebase.js"></script>
      <script src=" http://www.google.com/uds/modules/gviz/gviz-api.js"></script>
      <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>

      <script src="https://www.google.com/jsapi"></script>
      <script type="text/javascript">
          // Initialize Firebase
          var config = {
              apiKey: "AIzaSyBGiHpuzcgw_Ettlko_oU66U-gbW_SbEUA",
              authDomain: "internet-of-things-62d39.firebaseapp.com",
              databaseURL: "https://internet-of-things-62d39.firebaseio.com",
              projectId: "internet-of-things-62d39",
              storageBucket: "internet-of-things-62d39.appspot.com",
              messagingSenderId: "143567304866"
          };
          firebase.initializeApp(config);

          var database = firebase.database();


          firebase.database().ref('/Oslo/temperature').once('value').then(function(snapshot) {
              temps = snapshot.val();
              console.log(temps);

              google.charts.load('current', {
                  'packages': ['corechart', 'line']
              });
              google.charts.setOnLoadCallback(drawChart(temps));
          });

          function parse(temp) {
              return (new Date(temp.replace(/-/g, '/'))).getTime()
          }



          function drawChart(temps) {
              var array = $.map(temps, function(value, index) {
                  return [value];
              });

              var data = new google.visualization.DataTable();
              data.addColumn('number', 'date');
              data.addColumn('number', 'time');
              data.addColumn('number', 'value');

              var sort = function(a, b) {
                  return parse(a.time) - parse(b.time)
              };
              var tempData = array.sort(sort);
              var output = [];

              for (var i = 0; i < tempData.length; i++) {
                  var item = tempData[i];
                  output.push([
                      //  parseFloat(parse(item.time)),
                      parseFloat(item.time),
                      parseFloat(item.date),
                      parseFloat(item.value)
                  ]);
              }
              console.log(output);
              data.addRows(output);


              var options = {
                  chart: {
                      title: 'title',
                      subtitle: 'subtitle'
                  },
                  width: 900,
                  height: 500
              };

              var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
              console.log("data + options: " + data, options)
              chart.draw(data, options);
          }



          google.charts.load('current', {
              'packages': ['corechart', 'line']
          });
          google.charts.setOnLoadCallback(drawChart);
      </script>

我正在尝试使用jenkins执行shell构建步骤来运行脚本,如下所示 Jenkins screenshot

但是这会尝试运行setup,e2e-start,一个接一个地测试。因为&#34; e2e-start&#34;启动selenium服务器,所以我在控制台中看到&#34; INFO - Selenium Server启动并运行....&#34;然后npm run test永远不会运行。我认为这是因为&#34; npm运行测试&#34;应该在不同的终端运行,因为当我们手动运行时,我们在一个终端启动服务器并在不同的终端运行测试。那么,我怎样才能使用jenkins实现这一目标。

2 个答案:

答案 0 :(得分:0)

尝试在配置文件中使用下面提到的选项然后量角器将负责启动和停止服务器本身,然后你不需要启动和停止wendriver管理器

    directConnect: true
    seleniumAddress: 'http://127.0.0.1:4444/wd/hub',

你也可以提到selenium服务器jar。

    seleniumServerJar: '../utils/selenium-server-standalone-2.53.1.jar',
    seleniumPort: 4444, 

另一种方法是使用jenkins selenium pluggin

答案 1 :(得分:0)

对于phantomjs来说很容易。

  1. 下载selenium服务器jar并将其保存在文件夹中。
  2. 在量角器conf.js文件中注释掉directConnect和seleniumAddress。
  3. 将它们包含在您的配置中。

    seleniumServerJar: 'location of the jar',
    seleniumPort: 4444,
    
  4. 这些设置将在测试开始之前启动selenium服务器,并在测试完成时正常关闭它。你不需要打扰明确启动selenium服务器。 注意:如果您使用的是java 7,请使用selenium-server-standalone-2.53.1.jar