將PowerShell集成到Jenkins中實現無縫自動化

如果您在管理Windows服务器方面有一段时间了,毫无疑问您肯定有很多PowerShell脚本来执行那些常规但必要的任务,比如重置密码、收集日志数据或归档备份文件。您知道在Jenkins中使用PowerShell是一个好的选择吗?

您可能有定期运行的脚本,甚至可能设置了一个任务计划事件,以尝试自动化您的PowerShell脚本。

有一种更好的方法。

在本文中,您将学习如何在Windows上安装Jenkins并运行一个简单的PowerShell脚本。您将学习如何安装Jenkins,设置基本安全性,启用PowerShell插件,并运行一个任务来创建一个简单的文本文件,并输入参数。

本文旨在对Jenkins进行基本介绍。您将学习的配置并不一定适用于生产环境。

先决条件

本文大部分内容将是一个实例演示。如果您打算跟随操作,请确保已经满足以下几个先决条件。

运行Jenkins所需的要求非常低,任何现代计算机都可以胜任。本文中的示例都是基于运行在以下环境上的Jenkins:

  • Windows 10 Enterprise v.1903
  • PowerShell Core v6

雖然Jenkins可以在任何平台上運行,但我將專注於Windows 10企業版,以保持簡單。

安裝Jenkins

在確保具備先決條件後,讓我們安裝Jenkins。

安裝Jenkins非常簡單和直觀。前往 https://www.jenkins.io/download/ 下載長期支援(LTS)版本。有兩個版本可供選擇,即LTS版本和“每週”版本。 “每週”版本經常更新,可能不穩定。在本文中,我們使用LTS版本。這是最穩定的版本。

如下圖所示,有幾個選項可以選擇。選擇Windows版本開始下載。

Installing the Windows package for Jenkins

一旦下載安裝程序,解壓縮zip文件並運行安裝程序,接受所有默認值。安裝過程很簡單。

安裝完成後,Jenkins將在瀏覽器中打開入門指南頁面。該頁面包含初次設置Jenkins所需的管理員密碼。如下所示,Jenkins告訴我要閱讀位於 C:\Program Files (x86)\Jenkins\secrets\initialAdminPassword 的文本文件。

Providing the administrator password for Jenkins

前往所示的文件,打開它,複製顯示的密碼,並將其用作入門指南頁面上的管理員密碼。

安裝插件

第一次登錄後,Jenkins將完成最終設置,然後會詢問要安裝哪些插件。如下圖所示,有幾個選擇。

選擇安裝建議插件將根據最常見的使用場景安裝推薦的插件集。這些插件包括身份驗證提供者、GitHub互動和Java擴展的插件。選擇要安裝的插件允許您只從所有可用插件列表中安裝所需的插件。

高亮顯示安裝建議插件並點擊確定。這個過程將花費幾分鐘的時間來安裝初始插件,所以現在是喝杯咖啡的好時機。

Installing plugins in Jenkins

創建管理用戶

插件安裝完成後,下一步是創建我們的第一個用戶。這個第一個用戶是Jenkins的管理員,將具有全局權限,就像Windows Server的企業管理員一樣。您可以在下面看到創建第一個管理員用戶頁面的外觀。

Creating a Jenkins admin user

從這一點開始,只有輸入有效的用戶名和密碼才能訪問Jenkins界面

設置Jenkins管理URL

最後一步是設置Jenkins服務運行的URL。該URL是管理Jenkins程序的界面,理想情況下應該設置為完全合格的域名(FQDN)。將其設置為FQDN將允許遠程訪問,就像訪問網站一樣。為了這篇文章和簡化問題,接受默認URL。

The Jenkins URL

設置安全性

安裝完成後,讓我們配置身份驗證。如果尚未打開主控台,請導航至主控台。從主控台,點擊管理 Jenkins,然後點擊配置全局安全性以打開安全設定,如下所示。

Setting Global Security options

配置全局安全性頁面上,您會看到一些選項可供選擇。對於本文,我們將使用Jenkins 的內建使用者資料庫,以保持事情簡單。同時,建議取消選中「允許使用者註冊」,如下圖所示。如果選中此選項,將允許任何使用者創建帳戶並獲得對 Jenkins 的訪問權限。

從下圖中可以看到其他身份驗證選項。

  • 委派給 Servlet 容器 – 如果您已經在 Jenkins 中設定了 Docker 容器,則可以透過容器進行身份驗證。
  • LDAP – 如果您已經有要用於身份驗證的 Active Directory,則可以選擇此選項。

接下來,選擇已登入的使用者可以進行任何操作選項。在此模式下,每個已登入的使用者都將對 Jenkins 擁有完全控制權。對於生產環境來說,這可能不是一個好主意,因為這允許任何使用者對設定進行更改。

Configuring global security

啟用 Jenkins 插件中的 PowerShell

完成基本安全設定後,現在是時候配置 Jenkins 插件中的 PowerShell 了。要安裝 PowerShell 插件,請導航至主控台,點擊管理 Jenkins,然後點擊管理插件,如下圖所示。

Installing the PowerShell plugin

有數百個插件,所以找到PowerShell插件的最佳方式是搜索。在過濾器欄中輸入“PowerShell”,並從列表中選擇它。勾選下面的框,以啟用它。這將允許Jenkins直接將PowerShell命令和腳本直接寫入Jenkins中的文本框,並允許Jenkins調用PowerShell而無需啟動單獨的PowerShell控制台。

您可以在下面看到這可能是什麼樣子。

Finding the PowerShell plugin

啟用插件後,Jenkins可以運行PowerShell作業。

在Jenkins中創建一個PowerShell作業

PowerShell在Jenkins插件的安裝完成。現在開始有趣的事情了。讓我們創建一個作業。

在Jenkins中,作業被定義為一系列要完成的任務。一個常見的情況是,當開發人員檢入代碼時,作業將開始編譯程序。類似於Windows服務器中的任務管理器。

我們要設置的作業是檢查c:\temp目錄並在該目錄中插入一個帶有自定義消息的文本文件。

Jenkins有不同類型的項目,有時稱為流水線,專注於特定目標。不同類型的項目將根據您選擇的項目類型具有不同的設置、選項和參數。您可以在Jenkins網站上了解有關項目類型及其使用時機的更多信息。Jenkins網站上可以找到更多信息。

從主儀表板中點擊新建項目。對於工作名稱,輸入創建文本文件。這是任意的,但最好將其標記為有意義的內容。

在這篇文章中,我們將使用自由風格專案。這提供了最大的靈活性來創建我們的工作。選中自由風格專案,滾動到底部,然後點擊確定

Creating a Jenkins project

這個工作將是一個帶參數的專案。這意味著我們可以提示用戶輸入,並將該輸入傳遞給工作。例如,假設我們有一個在 Jenkins 工作中將日誌文件複製到特定目錄的 PowerShell 工作。我們可以添加一個提示,當我們運行該工作時,詢問要包含在構建中的文件名。

從下拉列表中選中此專案是帶參數的項目。點擊添加參數下拉並選擇字符串參數。字符串參數是您要在文本文件中包含的消息的位置。

Creating a parameterized Jenkins job

然後添加第二個選擇參數。它應該看起來像下面的截圖。

Adding parameters to the project

現在,工作設置應該看起來像下面的屏幕截圖。

Final job

向下滾動到 建立 部分。點擊小箭頭,選擇 Windows PowerShell。這樣 Jenkins 就知道我們正在運行一個 PowerShell 腳本。這也是我們輸入 PowerShell 腳本的地方。這個工作現在已經準備好了。點擊保存。

Windows PowerShell option

對於我們在 Jenkins 工作中的 PowerShell 的示例腳本,讓我們在臨時目錄中創建一個文件並添加一條簡單的消息。

這是一個簡單的腳本,如果根目錄下還沒有臨時目錄,它將創建臨時目錄並在該目錄中創建一個文本文件。

# 創建臨時目錄
if (-not(Test-Path -Path 'C:\temp'))
{
    New-Item -Path 'C:\temp' -ItemType directory
}

# 使用 Jenkins 工作公開的環境變量 
Set-Content -Path "C:\temp\$($env:Filename).txt" -Value $env:Message

提示:首先在 VSCode 或其他編輯器中編寫腳本,然後將其粘貼到框中。

運行 Jenkins 工作中的 PowerShell

最後,您已經準備好運行第一個工作了。讓我們返回到主控制面板,您將在主控制面板中看到列出的 創建文本文件 工作。如下所示。

Our new Jenkins job

點擊右側的時鐘圖標,打開工作表單。

Setting parameters on Jenkins job

在消息框中,輸入要插入文本文件中的文本,然後點擊建立。一旦建立完成,點擊控制台輸出。控制台輸出顯示工作的狀態以及工作運行是否成功。

Console output from job

現在只需打開文件管理器並檢查文件。導航到臨時目錄並打開文本文件。它將與您在建立消息框中輸入的文本相同。

Final outcome of Jenkins job

摘要

你現在對Jenkins中的PowerShell有了基本的了解。它是一個強大的工具,可以用來管理你的PowerShell腳本並自動化所有事情!

Source:
https://adamtheautomator.com/jenkins-powershell/