12

我有一個聲明式管道腳本,用於我的多分支項目,在該項目中,我想讀取文本文件並將結果作爲字符串變量存儲,以供後續步驟管道。使用片斷髮生器我試圖做這樣的事情:如何在Jenkins文件中設置和引用變量

filename = readFile 'output.txt' 

對於那些filename將是我的字符串。

我得到的詹金斯控制檯輸出錯誤:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: 
WorkflowScript: 30: Expected a step @ line 30, column 5. 
      filename = readFile 'output.txt' 

我需要使用withEnv步驟的readFile輸出設置爲詹金斯環境變量?如果是這樣,怎麼樣?

感謝

+0

你能根據[MCVE(HTTP編輯你的問題:// stackoverflow.com/help/mcve)指南? –

回答

13

的錯誤是由於您只允許使用steps指令內部管道的步驟。我知道的一種解決方法是使用script步驟並在其中包裝任意管道腳本並將結果保存在環境變量中,以便稍後使用它。

所以你的情況:

pipeline { 
    agent any 
    stages { 
     stage("foo") { 
      steps { 
       script { 
        env.FILENAME = readFile 'output.txt' 
       } 
       echo "${env.FILENAME}" 
      } 
     } 
    } 
} 
+0

我試過了,回聲沒有顯示任何東西 –

+0

奇怪的是,當運行這個(詹金斯2.32.2)我得到了預期的結果(添加'writeFile文件:'output.txt',文本:'asdsad''就在' readFile',我得到'[Pipeline] echo asdsad'按預期)。你確定文件中有任何內容嗎? –

+0

雅這是空白的,這是由於我的邏輯中的其他問題,但我認爲你的答案是我一直在尋找。謝謝 –

10

According to the documentation,你也可以設置全局環境變量,如果你以後想使用的變量的值在腳本中的其他部分。在你的情況下,將它設置它的根管道:

pipeline { 
    ... 
    environment { 
    FILENAME = readFile ... 
    } 
    ... 
} 
+0

這是正確的答案 – Liam

-2

的腳本pipepline一個完整的例子:

 stage('Build'){ 
      withEnv(["GOPATH=/ws","PATH=/ws/bin:${env.PATH}"]) { 
       sh 'bash build.sh' 
      } 
     } 
+0

這個問題沒有提到任何有關運行構建腳本或添加到PATH的內容。 – daemonaka

相關問題