小编ami*_*ami的帖子

与Jenkins工作流/管道并行运行阶段

请注意:问题基于旧的,现在称为"脚本"管道格式.使用"声明性管道"时,并行块可以嵌套在阶段块内(请参阅带有声明性管道1.2的并行阶段).

我想知道如何将并行步骤与Jenkins工作流/管道插件一起使用,尤其是.如何将它们与构建阶段混合.我知道一般模式:

parallel(firstTask: {
  // Do some stuff
}, secondTask: {
  // Do some other stuff in parallel
})
Run Code Online (Sandbox Code Playgroud)

但是,我想并行运行几个阶段(在同一节点上,有多个执行程序),所以我尝试添加这样的阶段:

stage 'A'
// Do some preparation stuff

parallel(firstTask: {
  stage 'B1'
  // Do some stuff
}, secondTask: {
  stage 'B2'
  // Do some other stuff in parallel
})

stage 'C'
// Finalizing stuff
Run Code Online (Sandbox Code Playgroud)

这不能按预期工作."do stuff"任务是并行执行的,但并行阶段会立即结束,并且不会包含它们应包含的内容.因此,舞台视图不会显示正确的结果,也不会链接日志.

我可以并行构建不同的阶段,还是"并行"步骤仅用于单个阶段?

jenkins jenkins-pipeline

43
推荐指数
5
解决办法
10万
查看次数

Javascript:如何暂时禁用页面上的所有操作?

在具有Ajax事件的页面上,我想在Ajax调用返回之前禁用所有操作(以防止双重提交等问题)

我通过return false;在"锁定"页面时预先设置当前的onclick事件来尝试此操作,并在"解锁"页面时稍后删除它.但是,在"解锁"后,操作不再处于活动状态 - 您无法触发它们.

为什么这不起作用?见下面的示例页面.还有其他想法来实现我的目标吗?

示例代码:
链接和按钮都显示JS警报; 当按下锁定,然后解锁事件处理程序与以前一样,但不起作用......?!?
该代码最终将与特立尼达合作,但也应在外部工作.

<html><head><title>Test</title>

<script type="text/javascript">
function lockPage()
{
  document.body.style.cursor = 'wait';
  lockElements(document.getElementsByTagName("a"));
  lockElements(document.getElementsByTagName("input"));

  if (typeof TrPage != "undefined")
  {
    TrPage.getInstance().getRequestQueue().addStateChangeListener(unlockPage);
  }
}

function lockElements(el)
{
  for (var i=0; i<el.length; i++)
  {
    el[i].style.cursor = 'wait';
    if (el[i].onclick)
    {
      var newEvent = 'return false;' + el[i].onclick;
      alert(el[i].onclick + "\n\nlock -->\n\n" + newEvent);
      el[i].onclick = newEvent;
    }
  }
}

function unlockPage(state)
{
  if (typeof TrRequestQueue == "undefined" || state == TrRequestQueue.STATE_READY)
  {
    //alert("unlocking …
Run Code Online (Sandbox Code Playgroud)

javascript events

8
推荐指数
1
解决办法
1万
查看次数

Jenkins管道构建如何确定工作空间文件夹?

在Jenkins管道中,当在特定节点上运行构建时,会在该代理上分配工作区。我们没有设置工作空间路径,因此它是自动确定的。我了解,当同一作业在同一代理上同时运行时,工作空间必须包含执行程序编号以隔离构建。

但是...工作空间路径究竟是如何构建的?

我们的构建被分配给一个特定的节点(具有4个执行器),并且被配置为不允许并行构建。通常分配给它:

EXECUTOR_NUMBER=1
WORKSPACE=xxx\yyy\jobname
Run Code Online (Sandbox Code Playgroud)

在某个时候,该构建开始在执行程序2上运行,但仍使用与以前相同的工作空间。

稍后,该构建再次在执行程序1上运行,但现在使用

WORKSPACE=xxx\yyy\jobname@2
Run Code Online (Sandbox Code Playgroud)

由于无法处理路径中的“ @”符号,因此中断了构建。从那时起,即使在将构建计算机上的执行程序的数量设置为1之后,该构建仍继续使用该工作区,手动删除代理的工作区目录等。

所以我的问题是:

  • 如何确定工作空间路径?为什么突然出现@ 2后缀?
  • Jenkins是否重新使用先前的工作空间,而不管执行者的编号是多少?
  • 如果是这样,此信息存储在哪里?我在作业配置中找不到与上次使用的工作空间路径相关的任何内容...

感谢您的任何见解!

我们正在使用Jenkins LTS 2.107.2和最新的Pipeline插件(我不知道哪个版本特别有趣)。

jenkins jenkins-pipeline

6
推荐指数
1
解决办法
2342
查看次数

标签 统计

jenkins ×2

jenkins-pipeline ×2

events ×1

javascript ×1