在Linux主机上通过jenkins在Powershell脚本上运行

时间:2018-07-13 20:48:08

标签: linux powershell jenkins

我有一个Powershell脚本从bitbucket存储库克隆到我的工作区中。如果我登录到jenkins服务器cli,则可以通过运行

cd /var/lib/jenkins/workspace/powershell
pwsh
./psscript.ps1

这可以按预期运行,但是当我尝试通过jenkins运行它时出现错误

/tmp/jenkins2117772455970634975.sh: line 3: ./psscript.ps1: Permission denied

我的詹金斯用户是

user.name   netuser

当我同时在pwsh cli控制台和linux cli上执行whoami时,都会得到相同的结果

PS /var/lib/jenkins/workspace/powershell> whoami
netuser

[netuser@server1]$ whoami
netuser

显示詹金斯用户

[netuser@server1]$ ps axufwwww | grep 'jenkins\|java' -
netuser  31903  0.0  0.0 112660   980 pts/1    S+   22:15   0:00              \_ grep --color=auto jenkins\|java -

3 个答案:

答案 0 :(得分:1)

尝试

pwsh -command "&.\psscript.ps1"

如果需要-

sudo pwsh -command "&.\psscript.ps1"

答案 1 :(得分:0)

在执行以下操作之前,我无法通过jenkins运行我的第一个PS脚本。我必须将带有文件名的整个路径保存到变量中,然后调用powershell来执行。不知道这是否会帮助您。

$File_Path_Name = $ENV:WORKSPACE + "\file.ps1"

Powershell -File $File_Path_Name

答案 2 :(得分:0)

这里很好地介绍了如何在管道中使用它。

https://www.jenkins.io/blog/2017/07/26/powershell-pipeline/

他们增加了对Powershell核心的支持。看到这里

https://github.com/jenkinsci/workflow-durable-task-step-plugin/blob/master/CHANGELOG.md

这是在管道中使用它的方式。

pipeline {
    agent any
    stages {
        stage ("PowershellDemo") {
            steps {
                pwsh ( returnStatus: true, script: "&.\psscript.ps1")
            }
        }
    }
  }