我使用哈德森版本1.324的CI,并有几个问题:如何让Hudson CI执行Powershell脚本?
环境:
- 的Windows Server 2008
- PowerShell的1.0
- 哈德森1.324作为运行服务
- 已安装Hudson PowerShell插件
- Psake(又名“Powershell Make/Rake”,可从Github获得)0.23 (全电流/最新版本,因为这最初的职位)
我有一个PowerShell(PS)脚本的作品来编译,运行NUnit的测试,如果成功,创造的产值的的7z文件。 PS脚本可以在我的本地开发框以及安装了Hudson的CI服务器的命令行上运行。
1)使用Powershell执行策略。
我最初在服务器上运行PS控制台,运行Set-ExecutionPolicy Unrestricted
,它允许任何脚本运行。 (是的,我意识到这里的安全问题,我试图让一些工作,无限制应该删除安全问题,所以我可以专注于其他问题。)
[这工作,并允许我开火PS昨天从Hudson建立脚本。然后我遇到的另外一个问题,但我们会讨论更多的项目#2]
一旦哈德森也火了一个PS脚本,它与下面的错误抱怨:
"C:\Windows\system32\WindowsPowerShell\v1.0\powershell "& 'OzSystems.Tools\psake\psake.ps1' '.\oz-build.ps1'" The term 'OzSystems.Tools\psake\psake.ps1' is not recognized as a cmdlet, funct ion, operable program, or script file. Verify the term and try again. At line:1 char:2 + & <<<< 'OzSystems.Tools\psake\psake.ps1' '.\oz-build.ps1'"
使用相同的命令行,我能够从命令行手动成功执行PS脚本。然而哈德森无法让PS做同样的事情。在看了附加的PS文档之后,我也试过了这个:
"& 'OzSystems.Tools\psake\psake.ps1' '.\oz-build.ps1'"
并且得到了类似的错误。似乎没有任何针对Hudson的Powershell插件的文档。我浏览了所有的Powershell插件文件,没有看到任何可配置的东西。我找不到Hudson的日志文件以获取更多信息。
任何人都可以帮我过去吗?
2)我昨天和#1一起摔跤。我进入这个AM并尝试在重新启动Hudson服务器/服务后重新进入,现在看起来ExecutionPolicy已经重置为Restricted。我做了昨天的工作,打开了一个PS控制台和Set-ExecutionPolicy
到Unrestricted
。它在PS控制台中显示Unrestricted
,但Hudson说它没有执行PS脚本的权限。我重新打开了一个新的PS控制台,并确认ExecutionPolicy
仍然是Unrestriced
- 是的。但哈德森显然没有意识到这种变化。再次重启Hudson服务并没有改变哈德森对该政策的看法。
有人知道这里发生了什么吗?
谢谢,德里克
我遇到了完全相同的问题。老实说,这个powershell的东西是如何与bash相媲美的。太多的安全! – stimms
通过签署脚本的痛苦过程(http://www.hanselman.com/blog/SigningPowerShellScripts.aspx)没有帮助。仅供参考。 – stimms
确保你没有以某种方式为-Scope CurrentUser设置执行策略而不是-Scope LocalMachine ...并确保Hudson不尝试在另一个客户端上运行你的构建;) – Jaykul