Jenkins 参数化构建 - 在 powershell 中读取文件

Jenkins parametrized build - read file in powershell

我正在尝试使用文件参数创建 Jenkins 参数化构建。

用户将 select 使用参数构建,并将提供一个包含项目列表的文本文档(每行一个)。

我想尝试在我的 powershell 脚本中阅读这个列表,然后开始进行一些服务调用(我有点怀疑)。

我正在努力让我的 powershell 脚本读取已传递给 Jenkins 的文件,这是我目前所拥有的

$ids = Import-Csv input.txt

$array = @()

Write-Host $array.Length

foreach($id in $ids){
   Write-Host $id.id
   $array += $id

   Write-Host "Array now has" $array.Length "items"
}

我知道脚本 运行 正常,因为我可以在 Powershell ISE 中 运行 并传入 csv/txt 文件的绝对路径。

供参考,input.txt的内容是这样的:

id
2884430041011214,
9751297519392363,
lfsdkjgskdjflgsdjfg

这是我得到的两个输出

Powershell ISE(如预期):

0
2884430041011214
Array now has 1 items
9751297519392363
Array now has 2 items
lfsdkjgskdjflgsdjfg
Array now has 3 items

詹金斯(不是我所希望的)

Started by user anonymous
Building in workspace C:\Users\jonec34\.jenkins\jobs\getParty\workspace
[workspace] $ powershell.exe -NonInteractive -ExecutionPolicy ByPass "& 'C:\Users\jonec34\AppData\Local\Temp\hudson4035619350462822370.ps1'"
Import-Csv : Could not find file 'C:\Users\jonec34\.jenkins\jobs\getParty\workspace\input.txt'.
At C:\Users\jonec34\AppData\Local\Temp\hudson4035619350462822370.ps1:1 char:8
+ $ids = Import-Csv input.txt
+        ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OpenError: (:) [Import-Csv], FileNotFoundException
    + FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.ImportCsvCommand

0
Finished: SUCCESS

谁能告诉我如何做到这一点。我也试过将 Param($file) 放在脚本的开头,并使用 ${WORKSPACE} 但要么它们不工作,要么我没有正确理解它。非常感谢任何帮助。

谢谢

好的,我发现我哪里出错了...

在我的文件参数中,我没有设置文件位置(例如,我将其留空),但我输入了 '\input.txt' 并且很低,我得到

Building in workspace C:\Users\jonec34\.jenkins\jobs\getParty\workspace
Copying file to \input.txt
[workspace] $ powershell.exe -NonInteractive -ExecutionPolicy ByPass "& 'C:\Users\jonec34\AppData\Local\Temp\hudson6216657038417634126.ps1'"
getting requests from file
0
2884430041011214
Array now has 1 items
9751297519392363
Array now has 2 items
lfsdkjgskdjflgsdjfg
Array now has 3 items
Finished: SUCCESS