小编Jay*_*ang的帖子

在多个同步上游作业成功后,如何让Jenkins工作开始?

为了尽可能快地获得反馈,我们偶尔会希望Jenkins的作业能够并行运行.Jenkins能够在作业完成时启动多个下游作业(或"分叉"管道).但是,Jenkins似乎没有任何方法可以使下游作业只启动该fork的所有分支成功(或者将fork连接在一起).

Jenkins有一个"构建其他项目后构建"按钮,但我将其解释为"当任何上游作业完成时启动此作业"(不是"当所有上游作业成功时启动此作业").

这是我正在谈论的内容的可视化.有谁知道一个插件是否存在我做的事情? 构建管道


编辑:

当我最初在2012年发布这个问题时,Jason的答案(Join和Promoted Build插件)是最好的,而且我选择了解决方案.

然而,dnozay的回答(The Build Flow插件)在这个问题之后大约一年左右流行,这是一个更好的答案.对于它的价值,如果人们今天问我这个问题,我现在建议改为.

plugins continuous-integration pipeline build jenkins

70
推荐指数
4
解决办法
6万
查看次数

如何捕获使用Powershell的Invoke-Command调用的ScriptBlock的返回值

我的问题与问题非常相似,除了我试图使用Invoke-Command捕获ScriptBlock的返回代码(因此我不能使用-FilePath选项).这是我的代码:

Invoke-Command -computername $server {\\fileserver\script.cmd $args} -ArgumentList $args
exit $LASTEXITCODE
Run Code Online (Sandbox Code Playgroud)

问题是Invoke-Command没有捕获script.cmd的返回码,所以我无法知道它是否失败.我需要知道script.cmd是否失败.

我也尝试使用New-PSSession(这让我看到了远程服务器上的script.cmd的返回代码)但是我找不到任何方法将它传递回我的调用Powershell脚本来实际处理有关失败的任何事情.

powershell return-value exit-code windows-scripting invoke-command

29
推荐指数
2
解决办法
4万
查看次数

如何修改Jenkins用于控制从站的负载平衡行为?

我们将Jenkins用于CI构建系统.我们还使用'并发构建',以便Jenkins将独立构建每个更改.这意味着我们经常同时运行相同作业的5或6个版本.为了适应这种情况,我们有4个奴隶,每个奴隶有12个执行者.

问题是詹金斯并没有真正在其奴隶之间"负载平衡".它试图在之前构建的同一个slave上构建一个作业(可能是为了减少从源代码控制同步的时间).这是一个问题,因为Jenkins将在同一个slave上构建我们构建的所有6个实例(或者更可能在2个slave之间).一台构建机器陷入困境并且运行非常缓慢,而其余机器处于空闲状态.

是否有插件或其他东西改变Jenkins用来控制其奴隶的负载平衡行为?

continuous-integration load-balancing build jenkins jenkins-plugins

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

什么是构建管道的好工具?

我需要一个工具,以图形方式表示我们的构建管道.下面的ThoughtWorks Go和Jenkins Pipeline插件的截图几乎可以说明我想要它的样子.

问题是我们已经将Jenkins用于我们的构建和部署,以及一些其他用于编排类型职责的自定义工具.我们不希望管道工具本身进行构建或部署,它只需要调用Jenkins!我尝试了Go,它要求的第一件事是我的源代码是什么以及如何构建它.我无法以Jenkins进行构建的方式开始工作,但Go创建了管道.

我也尝试过Jenkins Pipeline插件,但它非常有限.首先,它不适用于Join插件(因此我们不能并行运行作业,这是一项要求).它还假设我们的所有任务都发生在Jenkins中(Jenkins无法在我们的测试实验室之外看到我们的生产环境).我不知道这是否也是可行的选择.

那么,有没有人对某些管道工具有什么建议可以做我正在寻找的东西?

ThoughtWorks Go Jenkins管道插件

deployment build-automation pipeline jenkins

9
推荐指数
1
解决办法
6751
查看次数

使用Powershell的Invoke-Command调用带参数的批处理文件

我想使用Powershell来调用远程机器上的批处理文件.此批处理文件包含参数.这是我到目前为止所拥有的:

$script = "\\fileshare\script.cmd"
$server = $args[0]
$args [string]::join(',',$args[1 .. ($args.count-1)])

Invoke-Command -computername $server {$script + ' ' + $args}
Run Code Online (Sandbox Code Playgroud)

经过一些搜索,我发现Invoke-Command函数在一个全新的进程中运行它的scriptblock,因此你不能在其中放入变量(它们不会被扩展).这就是-ArgumentList标签的用途.所以我尝试了这个......

Invoke-Command -computername $server {\\fileshare\script.cmd} -ArgumentList "FirstArgument"
Run Code Online (Sandbox Code Playgroud)

这也不起作用......我的批处理脚本告诉我它没有传递任何参数.我找不到任何明确说明的内容,但看起来-ArgumentList参数只适用于Powershell脚本(它不会将它们提供给批处理脚本).

有关如何使用Invoke-Command调用带参数的批处理文件的任何想法?

windows powershell cmdlets batch-file invoke-command

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

如何使用Perforce Shelving让一个人创建更改而另一个人提交更改?

我希望UserA能够在Perforce中创建一个更改列表,然后搁置它.然后,我希望UserB能够取消搁置该更改列表并提交它.

这听起来很简单,但Perforce的不受欢迎似乎并没有像我期望的那样发挥作用.当UserB运行'p4 unshelve -s 1234'时,它会从更改1234中取消所有已更改的文件,但它不会带来更改的元数据(描述,作业修复)!这意味着UserB可以搁置的CL 复制到一个全新的CL并提交它(通过手动重新创建描述和修复),但这会留下旧的搁置CL.

这里顺理成章的事情将是用户B

  1. 取消保持CL
  2. 查看搁置的CL的元数据
  3. 将该元数据复制到 CL中
  4. 提交新的CL
  5. 删除旧搁置的CL
这就是Perforce文档甚至推荐的内容.有一个小问题:UserB不允许删除其他用户的搁置CL!只有UserA和p4管理员可以删除他的搁置CL.我不明白为什么文档会掩盖这一点.

以前有没有人遇到这个问题?你是怎么解决的?

编辑:我应该澄清一下,我的问题非常普遍.我正在开发一个UserA是开发人员的工具,而UserB本身就是构建系统.开发人员会搁置CL,然后让构建系统取消搁置,并通过一系列构建和测试对其进行验证(如果它通过了所有这些测试,则自动提交CL).期待每个开发人员记住删除他们搁置的CL,如果构建系统提交它们似乎必然会失败!

version-control perforce shelve unshelve shelving

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

使用Powershell DSC Package资源安装exe获取返回码1619

我正在尝试使用Powershell DSC的Package资源来安装exe ... Perforce的P4V是具体的.这是我的代码:

Configuration PerforceMachine
{
    Node "SERVERNAME"
    {
        Package P4V
        {
            Ensure = "Present"
            Name = "Perforce Visual Components"
            Path = "\\nas\share\p4vinst64.exe"
            ProductId = ''
            Arguments = "/S /V/qn" # args for silent mode
            LogPath = "$env:ProgramData\p4v_install.log"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

运行时,这是Powershell给我的错误:

PowerShell provider MSFT_PackageResource failed to execute Set-TargetResource functionality with error message: The return code 1619 was not expected. Configuration is likely not
correct
    + CategoryInfo          : InvalidOperation: (:) [], CimException
    + FullyQualifiedErrorId : ProviderOperationExecutionFailure
    + PSComputerName        : …
Run Code Online (Sandbox Code Playgroud)

powershell windows-installer p4v dsc

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

如何检测 Jenkins 声明式管道中哪个并行阶段失败?

我的 Jenkins 管道并行运行多个任务。似乎如果一个阶段失败,所有后续阶段都将运行它们的failurepost 块(无论它们是否真的失败了)。我不知道这是设计使然还是我做错了什么。

注意:此管道在 Windows 节点上运行,因此 bat('exit /b 1')

pipeline {
    agent any

    stages {
        stage('Parallel steps') {
            parallel {
                stage('Successful stage') {
                    steps {
                        script { sleep 10 }
                    }
                    post {
                        failure {
                            echo('detected failure: Successful stage')
                        }
                    }
                }
                stage('Failure stage') {
                    steps {
                        script { bat('exit /b 1') }
                    }
                    post {
                        failure { 
                            echo('detected failure: Failure stage')
                        }
                    }
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的管道中,只有“失败阶段”失败,但在输出中我看到了这一点,表明failure两个步骤都执行了条件!

Started by user Doe, John …
Run Code Online (Sandbox Code Playgroud)

jenkins jenkins-pipeline

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

如何为动态生成的Button添加EventHandler

这与这些问题非常相似,但它们似乎对我没有帮助(将在下面解释原因):

我正在创建一个C#aspx页面.该页面抓取了大量数据,然后构建了一个表格.表中的一列包含一个在构建数据时动态创建的按钮(因为按钮的操作依赖于表中的数据).

Default.aspx的

<body>
  <form id="form1" runat="server">
    <div>
      <asp:Table ID="tblData" runat="server"></asp:Table>
    </div>
  </form>
</body>
Run Code Online (Sandbox Code Playgroud)

Defafult.aspx.cs

protected void Page_Load(object sender, EventArgs e)
    {
        Build_Table();
    }

protected void Build_Table()
    {
        //create table header row and cells
        TableHeaderRow hr_header = new TableHeaderRow();
        TableHeaderCell hc_cell = new TableHeaderCell();
        hc_cell.Text = "This column contains a button";
        hr_header.Cells.Add(hc_cell);
        tblData.Rows.Add(hr_header);

        //create the cell to contain our button
        TableRow row = new TableRow();
        TableCell cell_with_button = new TableCell();

        //create the button
        Button btn1 …
Run Code Online (Sandbox Code Playgroud)

c# asp.net button event-handling

4
推荐指数
1
解决办法
6616
查看次数

Powershell DSC Pull Server引发内部错误 - 未找到Microsoft.Isam.Esent.Interop

我按照Powershell.org的DSC Book中的说明设置了一个用于DSC的http Pull服务器(Windows 2012服务器).我设置了http Pull Server,然后设计了一个要拉的配置,然后设置我的节点的LCM以拉动并运行配置.

我可以在任务计划程序/ Microsoft/Windows /所需状态配置下的节点上看到计划任务,所以我知道至少有些工作.但是,我的配置没有运行.当我查看Apps&Svcs/Microsoft/Windows/Desired State Configuration/Operational Log下的Event Logs时,我看到以下事件:

Job {E0B6977A-E34F-4EDD-8455-E555063CD3DD} : 
This event indicates that failure happens when LCM is trying to get the configuration from pull server using download manager WebDownloadManager. ErrorId is 0x1. ErrorDetail is The attempt to get the action from server http://pullserver.local:8080/PSDSCPullServer/Action(ConfigurationId='adaba4f6-b2b6-420d-a1dd-3714106451d6')/GetAction returned unexpected response code InternalServerError.
Run Code Online (Sandbox Code Playgroud)

当我手动点击该URL时,启用CustomErrors后,出现以下错误:

Exception Details: System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Isam.Esent.Interop, Version=6.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' …
Run Code Online (Sandbox Code Playgroud)

windows powershell dsc

2
推荐指数
1
解决办法
2615
查看次数