2016-10-17 121 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

相關問題