2017-11-13 32 views
2

Ich versuche Psake zu verwenden, um meine Asp.Net MVC-Lösung auf Jenkins Server zu erstellen. Ich habe die Powershell-Skripte und Psake-Skripte im Quellcode eingecheckt. Ich habe eine Bootstrapper-Datei build.ps1 erstellt, die Psake importiert und aufruft.Modul kann nicht aus Powershell-Skript mit Jenkins importiert werden

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

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

Alle meine Aufgaben definiert sind, in der default.ps1-Datei, die ich zu berufen bin versucht. Lokal, wenn ich das Skript ausführe, wird das Psake-Modul importiert und alles funktioniert. aber auf Jenkins Server erhalte ich die folgende Fehlermeldung:

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 

Ich bin neu in Jenkins, benutzt zu haben Team-Stadt vorher und ich habe doppelt geprüft, dass das Psake Modul in der Tat auf die Jenkins Workspace kopiert wird.

Dies ist, wie ich die Build.ps1 von Jenkins

Powershell.exe -noprofile -ExecutionPolicy Bypass -datei bin aufrufen. \ Bauen \ Build.ps1

Kann jemand zeigen Sie mir bitte, was Ich mache falsch?

Antwort

2

Ok Ich war endlich in der Lage, das Problem zu lösen und wollte die Lösung teilen, falls jemand anderes dazu kommt. Beim Ausführen von Powershell Script. \ Wird automatisch in das aktuelle Verzeichnis aufgelöst. Wenn wir jedoch unser Skript von Jenkins ausführen, müssen wir den Pfad unseres Jenkins Workspace referenzieren und den vollständigen Pfad verwenden. Um das zu tun, Jenkins bietet Variable $ ENV. ARBEITSBEREICH

Überall, wo ich wurde mit \ Habe ich es $ ENV zu verwenden:. ARBEITSBEREICH

so

Import-Module \ Psake.4.5.0 \ psake.psm1

wurde

Import-Module $ ENV: ARBEITSBEREICH \ Build-\ Psake.4.5.0 \ psake.psm1

Und es begann zu arbeiten!

Verwandte Themen