【報錯信息】 ERROR: Support for FileParameters in the input step is disabled and will be removed in a future release. Details on how to migrate your pipelin ...
【報錯信息】
ERROR: Support for FileParameters in the input step is disabled and will be removed in a future release.
Details on how to migrate your pipeline can be found online: https://jenkins.io/redirect/plugin/pipeline-input-step/file-parameters.
【事件背景】
在遷移Jenkins Job到新的Jenkins伺服器時,Pipeline中的上傳文件步驟在新伺服器報錯。
【相關資料】
鏈接1:https://jenkins.io/redirect/plugin/pipeline-input-step/file-parameters
【調查結果】
根據鏈接1大概瞭解,Pipeline的input step之前可以直接上傳文件,現在由於某些安全原因被禁用了。目前,提供了替代方案,即先上傳base64再輸出到指定文件。
解決方法:
1.確保Jenkins已安裝File Parameters插件
如果不安裝,執行步驟2時應該會報錯誤:No such DSL method 'base64File' found among steps […]
2.參考下方示例來上傳文件:
def fileBase64 = input message: 'Please provide a file', parameters: [base64File('file')] node { withEnv(["fileBase64=$fileBase64"]) { sh 'echo $fileBase64 | base64 -d > myFile.txt' // powershell '[IO.File]::WriteAllBytes("myFile.txt", [Convert]::FromBase64String($env:fileBase64))' } // do something with the file stored in ./myFile.txt }
3.按照步驟2示例,上傳文件內容一般會被傳到Jenkins的$WORKSPACE路徑下的myFile.txt文件。執行效果如下:
懸停相關stage等待彈出視窗:
上傳相關文件
擴展:
假如我們上傳的文件內容是幾行字元串:
ABC XYZ
需要讀取文件中每行字元串形成數組,可以如下配置:
def myContext = readFile "${WORKSPACE}/myFile.txt" def myList = myContext.tokenize() println myList
最終輸出結果:[ABC,XYZ]