无法使用Jenkins

时间:2017-11-13 08:43:57

标签: jenkins continuous-integration psake

我正在尝试使用Psake在Jenkins服务器上构建我的Asp.Net MVC解决方案。我将Powershell脚本和Psake脚本签入源代码。我创建了一个bootstrapper文件build.ps1,它导入并调用Psake。

Import-Module。\ Psake.4.5.0 \ psake.psm1

    Invoke-Psake -buildFile .\default.ps1 `
        -taskList Default `
        -framework '4.6' `
        -parameters @{'solutionFilePath'='..\Application.sln'}

我正在尝试调用的default.ps1文件中定义了所有任务。本地运行脚本时,导入Psake模块,一切正常。然而,在Jenkins服务器上,我收到以下错误:

Import-Module : The specified module '.\Psake.4.5.0\psake.psm1' was not loaded 
because no valid module file was found in any module directory.At C:\Program 
Files (x86)\Jenkins\workspace\Atmosphere\Build\Build.ps1:9 char:1
+ Import-Module .\Psake.4.5.0\psake.psm1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ResourceUnavailable: (.\Psake.4.5.0\psake.psm1:S 
   tring) [Import-Module], FileNotFoundException
    + FullyQualifiedErrorId : Modules_ModuleNotFound,Microsoft.PowerShell.Comm 
   ands.ImportModuleCommand

我是Jenkins的新手,以前使用过Team City,我已经仔细检查过Psake模块确实被复制到了Jenkins工作区。

这就是我从Jenkins调用Build.ps1的方法

Powershell.exe -noprofile -executionpolicy Bypass -file。\ Build \ Build.ps1

有人可以指出我做错了吗?

1 个答案:

答案 0 :(得分:2)

好的,我终于能够解决问题,并希望分享解决方案以防其他人遇到它。运行Powershell Script时,\会自动解析为当前目录。但是当我们从Jenkins执行脚本时,我们需要引用Jenkins工作区的路径并使用完整路径。为此,Jenkins提供变量$ ENV:WORKSPACE

我正在使用的所有地方。\我将其更改为使用$ ENV:WORKSPACE

所以

导入模块。\ Psake.4.5.0 \ psake.psm1 成为

导入模块$ ENV:WORKSPACE \ Build \ Psake.4.5.0 \ psake.psm1

它开始工作了!