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
我正在尝试使用文件参数创建 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