天天看點

Jenkins入門之執行Powershell腳本

之前章節提到過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 點選

Jenkins入門之執行Powershell腳本

選擇紅框框選的指令

這時候界面上會出現如下指令框,我們說過,可以在這裡像在cmd裡面一樣輸入各種cmd指令

Jenkins入門之執行Powershell腳本

我們輸入以下指令後點選儲存

Jenkins入門之執行Powershell腳本

點選儲存以後,然後執行Build Now執行一次建構.我們可以看到指令是執行成功的

Jenkins入門之執行Powershell腳本

點選建構記錄#1進入詳情,然後點選左側console output檢視輸出詳情

Jenkins入門之執行Powershell腳本

我們可以看到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 執行政策,請看以下文檔

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.security/set-executionpolicy?view=powershell-6

-Comand 要執行的指令,比如上面我們執行的是get-childitem

-File 要執行的powershell腳本檔案,如果腳本内容很長時,我們往往儲存成一個ps1檔案,這裡通過-File參數指定ps1檔案所在的位置

-Sta單線程啟用powershell,如果腳本中有非線程安全代碼,多線程啟動則可能會造成資料狀态錯誤,此時需要指定-sta.

-help 擷取關于powershell的幫助,一般的程式都會提供這樣一個參數,通過此參數可以快速找到一些想要的幫助,而不需要去檢視文檔或者筆記

通過插件來運作powershell腳本.

很多時候通過powershell.exe來執行powershell并不是很友善,幸運的是Jenkins裡面有可以直接運作powershell腳本的插件.下面來看看如何使用

如果不在Jenkins主界面請點選左上角人頭标志切換到主界面,然後點選左側的Manage Jenkins

Jenkins入門之執行Powershell腳本

按鈕

進入到如下界面:

Jenkins入門之執行Powershell腳本

點選

Jenkins入門之執行Powershell腳本

進入如下界面

Jenkins入門之執行Powershell腳本

大家的跟我的可能稍不一樣,因為我已經安裝的一些插件,是以這裡會提示更新.

點選上面的Available标簽

Jenkins入門之執行Powershell腳本

我們在Filter框輸入Powershell搜尋powershell插件

Jenkins入門之執行Powershell腳本

這時候我們勾選powershell插件前面的複選框,并點選Install Without Restart按鈕

這時候進入插件安裝界面:

Jenkins入門之執行Powershell腳本

等一會我們發現powershell安裝成功

Jenkins入門之執行Powershell腳本

勾選Restart Jenkins when installation is complete and no jobs are running前面的複選框,使jenkins重新開機,以使插件生效

等Jenkins重新開機完成以後,我們建立一個任務叫作ExecutePsCmd

當我們點選Add Step Build時,如果powershell安裝成功,便會多出一個選項

Jenkins入門之執行Powershell腳本

我們點選它并添加以下指令:

Jenkins入門之執行Powershell腳本

注意這裡我們可以添加像本地powershell視窗裡一樣的指令.有些小夥伴可能會看到我這裡get-date全是小寫,但是很多教程上都開頭首字母大寫.Powershell是大小寫不敏感的腳本語言,完成全是小寫也是ok的.

點選儲存以後執行Build Now然後打開#1任務記錄,看看視窗輸出内容:

Jenkins入門之執行Powershell腳本

Jenkins powershell插件成功執行一條powershell腳本

繼續閱讀