如果你一直在管理Windows服务器,毫无疑问你可能有很多PowerShell脚本,用于执行那些乏味但必要的定期任务,比如重置密码、收集日志数据或归档备份文件。你知道在Jenkins中使用PowerShell是可行的吗?
你可能有定期运行的脚本,甚至可能设置了一个任务计划程序事件,试图自动化你的PowerShell脚本。
有一种更好的方法。
在本文中,你将学习如何在Windows上安装Jenkins并运行一个简单的PowerShell脚本。你将学会如何安装Jenkins,设置基本安全性,启用PowerShell插件,并运行一个任务以创建一个包含我们将输入的参数的简单文本文件。
本文旨在作为Jenkins的基础介绍。你将学到的配置不一定适用于生产环境。
先决条件
本文的大部分内容将是一步一步的演练。如果你打算跟着做,请确保你的计算机满足一些先决条件。
运行Jenkins的要求非常低,任何现代计算机都可以胜任。本文中的示例都基于运行在:
- Windows 10企业版v.1903
- PowerShell Core v6
尽管 Jenkins 能够在几乎任何平台上运行,但我将专注于 Windows 10 企业版,以保持简单。
安装 Jenkins
在处理完先决条件后,让我们开始安装 Jenkins。
安装 Jenkins 很简单直接。访问 https://www.jenkins.io/download/ 并下载长期支持(LTS)版本。有两个版本可用,LTS 版本和“每周”版本。“每周”版本定期更新,可能不太稳定。本文使用的是 LTS 版本。这是最稳定的版本。
从下面的截图中可以看到,有几个选项可供选择。选择 Windows 版本开始下载。

一旦下载了安装程序,解压缩 zip 文件并运行安装程序,接受所有默认设置。安装很简单。
安装完成后,Jenkins 将在浏览器中打开入门页面。该页面包含了解锁 Jenkins 继续配置所需的初始管理员密码。你可以看到 Jenkins 正告诉我去读取位于 C:\Program Files (x86)\Jenkins\secrets\initialAdminPassword 的文本文件。

转到显示的文件,打开它,复制显示的密码,并将其用作入门页面上的管理员密码。
安装插件
一旦您第一次登录,Jenkins 将完成最终设置,然后询问要安装哪些插件。如下截图所示,您有几个选择。
选择 安装建议的插件 将根据最常见的使用场景安装推荐的插件集。这些包括身份验证提供程序、GitHub 交互和 Java 扩展等插件。选择要安装的插件 允许您仅从所有可用插件列表中安装所需的插件。
突出显示 安装建议的插件,然后单击 确定。此过程将花费几分钟来安装初始插件,所以现在是喝杯咖啡的好时机。

创建管理员用户
安装完插件后,下一步是创建我们的第一个用户。这个第一个用户是 Jenkins 的管理员,将拥有全局权限,类似于 Windows Server 的企业管理员。您可以在下面看到 创建第一个管理员用户 页面的样子。

从这一点开始,只有输入有效的用户名和密码才能访问 Jenkins 界面。
设置 Jenkins 管理员 URL
最后一步是设置 Jenkins 服务运行的 URL。这个 URL 是管理 Jenkins 程序的界面,最好设置为完全合格的域名(FQDN)。将其设置为 FQDN 将允许远程访问,就像访问网站一样。对于本文和为了保持简单,接受默认的 URL。

设置安全性
安装完成后,让我们配置认证。如果主仪表板尚未打开,请导航至主仪表板。从主仪表板,点击管理 Jenkins,然后点击配置全局安全以打开安全设置,如下所示。

在配置全局安全页面中,您将看到一些选项可供选择。对于本文,我们将使用Jenkins 自己的用户数据库以保持简单。取消选中允许用户注册的复选框也是一个好主意,如下所示。勾选它将允许任何用户创建帐户并访问 Jenkins。.
查看下面的截图,还有其他身份验证选项。
- 委托给 Servlet 容器 – 如果您已经设置了带有 Jenkins 的 Docker 容器,并允许通过容器进行身份验证,则使用此选项。
- LDAP – 当您已经拥有要用于身份验证的活动目录时,可以使用此选项。
接下来,选择已登录用户可以执行任何操作选项。在此模式下,每个已登录用户将对 Jenkins 拥有完全控制权。对于生产环境来说,这可能不是一个好主意,因为这允许任何用户更改设置。

启用 Jenkins 插件中的 PowerShell
具有基本安全设置,现在是时候配置 Jenkins 插件中的 PowerShell 了。要安装 PowerShell 插件,请导航至主仪表板,点击管理 Jenkins,然后点击管理插件,如下所示。

有数百个插件,找到PowerShell插件的最佳方法是搜索它。在筛选栏中输入“PowerShell”并从列表中选择它。勾选如下所示的框,以启用它。这将允许Jenkins直接在文本框内编写PowerShell命令和脚本,并允许Jenkins调用PowerShell而无需启动单独的PowerShell控制台。
您可以在下面看到这可能是什么样子。

启用插件后,Jenkins已准备好运行PowerShell作业。
创建Jenkins作业中的PowerShell
PowerShell在Jenkins插件中的安装已完成。现在是有趣的部分。让我们创建一个作业。
在Jenkins中,作业被定义为完成的一系列任务。一个常见的场景是当开发人员检入代码时,作业将开始编译程序,类似于Windows服务器中的任务管理器。
我们要设置的作业将检查c:\temp目录,并在该目录中插入一个带有自定义消息的文本文件。
Jenkins有不同类型的项目,有时被称为流水线,专注于特定的目标。不同类型的项目将根据您选择的项目类型具有不同的设置、选项和参数。您可以在Jenkins网站上找到有关项目类型及其使用场景的更多信息。
从主面板,点击新建项。对于作业名称,输入创建文本文件。这是任意的,但最好将其标记为有意义的东西。
在本文中,我们将使用自由样式项目。这提供了最大的灵活性来创建我们的工作。突出显示自由样式项目并滚动到底部,然后点击确定。

这个作业将是一个参数化项目。这意味着我们可以提示用户输入,而该输入将传递给作业。例如,假设我们有一个在Jenkins作业中运行的PowerShell作业,该作业将日志文件复制到特定目录。我们可以向作业添加一个提示,当我们运行作业时,它将要求输入要包含在构建中的文件名。
从下拉列表中检查此项目是参数化的项目。点击添加参数下拉菜单,选择字符串参数。字符串参数是您要包含在文本文件中的消息的位置。

然后添加第二个选择参数。它应该看起来像下面的截屏。这个选项将给用户提供从下拉列表中选择项目的选项。

现在作业设置应该看起来像下面的截屏一样。

滚动到构建部分。点击小箭头,选择Windows PowerShell。这样Jenkins就知道我们正在运行一个PowerShell脚本。这也是我们输入PowerShell脚本的地方。这个任务现在已经准备好了。点击保存。

对于我们在Jenkins作业中的PowerShell的示例脚本,让我们在临时目录中创建一个文件并添加一个简单的消息。
这是一个简单的脚本,如果根目录下不存在临时目录,则会创建临时目录,并在该目录中创建一个文本文件。
提示:先在VSCode或其他编辑器中编写您的脚本,然后将其粘贴到框中。
在Jenkins作业中运行PowerShell
最后,您已经准备好运行第一个作业了。让我们返回到主仪表板,您将看到创建文本文件作业在主仪表板中列出。如下所示。

点击右侧的时钟图标,弹出作业表单。

在消息框中,输入要插入到文本文件中的文本,然后点击构建。构建完成后,点击控制台输出。控制台输出显示作业的状态以及作业运行是否成功。

现在只需打开文件管理器并检查文件即可。导航到临时目录并打开文本文件。它将具有与您在构建消息框中输入的相同文本。

总结
你现在对Jenkins中的PowerShell有了基本的了解。这是一个强大的工具,可以用来管理你的PowerShell脚本并自动化所有的事情!