2016-10-17 367 views
1

是否可以通过脚本(bat或sh)以某种方式与Jenkins管道进行交互?例如。开始新的阶段?与Jenkins管道阶段进行交互

echo This is a batch file in no stage 
pipeline.stage(build) 
echo This is a batch file in build stage 

我有一个用PowerShell编写的非常紧凑的构建作业。我的团队现在正在试验Jenkins Pipeline功能,将我们的ps构建代码拆分为各个阶段(构建核心,构建模块,测试,覆盖范围等)将是一件好事。我们可以很容易地做到这一点通过为每个阶段创建功能,但它是低效率的(PS加载模块...)

+1

如果我理解正确,这并非来自Jenkins管道。管道Jenkins文件应该通过创建阶段/节点等来控制和包含您的构建的一般流程。对此进行反转使流水线在脚本中似乎并不适合我。 将脚本分割成多个部分并在单个节点上依次运行它们看起来就像是对我来说一样。 – Bricktop

+0

我期待着这个答案。无论如何,Thx! – Honzajscz

回答

1

我建议你另一种方式: 你可以定义你的Powershell脚本的不同步骤的cmdlet:

function step_1() 
{ 
    [CmdletBinding(SupportsShouldProcess=$true)] 
    param() 
    Write-Verbose "step 1" 
} 
function step_2() 
{ 
    [CmdletBinding(SupportsShouldProcess=$true)] 
    param() 
    Write-Verbose "step 2" 
} 

然后,您可以定义PowerShell的方法,像我描述票数:To call a PowerScript from the Groovy-Script

在你Groovy管道脚本:

node ('MyWindowsSlave') { 
    stage ('Stage 1') { 
     PowerShell(". '.\\all-stages.ps1'; stage1 -Verbose") 
    } 
    stage ('Stage 2') { 
     PowerShell(". '.\\all-stages.ps1'; stage2 -Verbose") 
    } 
} 

您也可以考虑将您的Groovy脚本分成几个文件,让powershell开发人员使用他们自己的Groovy子脚本。

问候。

+1

这就是我最终使用的。这种方法的缺点是它为每一个阶段启动一个新的过程。这使得例如变量共享更难。 – Honzajscz

相关问题