之前章節提到過powershell,如果需要構建復雜的任務時,使用cmd不是很方便(也可能是由於筆者不太熟悉cmd命令,這里見笑了),這時候powershell就派上用場了,這里並不詳細介紹powershell腳本,如果有需要以后另開章節講解powershell基本命令,powershell面向對象編程,powershell腳本調試,C#編寫powershell cmdlet,powershell相關工具等.本篇主要介紹如何在Jenkins環境中運行powershell命令.
目前主要有兩種方法在Jenkins環境中運行powershell腳本:通過windows batch command運行powershell和使用powershell Jenkins插件運行powershell
-
使用windows batch command運行powershell.這里主要是使用powershell.exe來執行powershell腳本,跟在windows下使用cmd執行exe並沒有什么兩樣.
下面我們創建一個新項目,名稱叫作RunPowershellInCmd,仍然選擇FreeStyle Project,我們略過幾個和當前項目無關的欄目,直接進入Build 點擊
選擇紅框框選的命令
這時候界面上會出現如下命令框,我們說過,可以在這里像在cmd里面一樣輸入各種cmd命令
我們輸入以下命令后點擊保存
點擊保存以后,然后執行Build Now執行一次構建.我們可以看到命令是執行成功的
點擊構建記錄#1進入詳情,然后點擊左側console output查看輸出詳情
我們可以看到Jenkins實際上創建的一個臨時bat命令來執行一個cmd命令.這里之所以沒有輸出結果,是因為當前命令的執行環境為Jenkins安裝目錄下的當前項目目錄,里面默認是空的,所以沒有內容,如果我們在編寫命令里如果指定-path為powershell指定要列出哪個目錄下的內容,則你將會看到此處會輸出此目錄下的內容.當然你也可以在當前工作目錄下面添加一些隨機內容,然后再執行一次構建,看看輸出內容的變化.
使用powershell.exe來執行powershell腳本時還可以指定一些參數,注意這里的參數並不是powershell命令的參數,而是powershell.exe運行時支持的參數.
支持的參數請看以下文檔:
https://technet.microsoft.com/zh-cn/library/dd315276.aspx
這里介紹幾個有用的參數:
-ExecutionPolicy腳本默認執行策略.
Powershell腳本的默認執行策略,如果相要執行遠程腳本必須設置此選項為RemoteSigned, Unrestricted或者Bypass.關於powershell 執行策略,請看以下文檔
-Comand 要執行的命令,比如上面我們執行的是get-childitem
-File 要執行的powershell腳本文件,如果腳本內容很長時,我們往往保存成一個ps1文件,這里通過-File參數指定ps1文件所在的位置
-Sta單線程啟用powershell,如果腳本中有非線程安全代碼,多線程啟動則可能會造成數據狀態錯誤,此時需要指定-sta.
-help 獲取關於powershell的幫助,一般的程序都會提供這樣一個參數,通過此參數可以快速找到一些想要的幫助,而不需要去查看文檔或者筆記
-
通過插件來運行powershell腳本.
很多時候通過powershell.exe來執行powershell並不是很方便,幸運的是Jenkins里面有可以直接運行powershell腳本的插件.下面來看看如何使用
如果不在Jenkins主界面請點擊左上角人頭標志切換到主界面,然后點擊左側的Manage Jenkins
按鈕 進入到如下界面:
點擊
進入如下界面
大家的跟我的可能稍不一樣,因為我已經安裝的一些插件,所以這里會提示升級.
點擊上面的Available標簽
我們在Filter框輸入Powershell搜索powershell插件
這時候我們勾選powershell插件前面的復選框,並點擊Install Without Restart按鈕
這時候進入插件安裝界面:
等一會我們發現powershell安裝成功
勾選Restart Jenkins when installation is complete and no jobs are running前面的復選框,使jenkins重啟,以使插件生效
等Jenkins重啟完成以后,我們新建一個任務叫作ExecutePsCmd
當我們點擊Add Step Build時,如果powershell安裝成功,便會多出一個選項
我們點擊它並添加以下命令:
注意這里我們可以添加像本地powershell窗口里一樣的命令.有些小伙伴可能會看到我這里get-date全是小寫,但是很多教程上都開頭首字母大寫.Powershell是大小寫不敏感的腳本語言,完成全是小寫也是ok的.
點擊保存以后執行Build Now然后打開#1任務記錄,看看窗口輸出內容:
Jenkins powershell插件成功執行一條powershell腳本
