当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 Jenkins 和 Git 运行 PowerShell 脚本

作者:精品下载站 日期:2024-12-14 20:52:18 浏览:13 分类:玩电脑

使用 Jenkins 和 Git 运行 PowerShell 脚本


如果您和您的团队有太多的 PowerShell 脚本在运行(谁知道在哪里),那么本文适合您。在本文中,您将学习如何设置流行的 Jenkins 自动化服务器来管理和执行 PowerShell 脚本!

您将学习如何将 Git 版本控制与 Jenkins 集成,然后设置和安排 PowerShell 脚本按预定义的时间表运行。

PowerShell 脚本蔓延:这不起作用

作为一名自动化工程师,我和我的团队必须克服的主要挑战之一是预定的 PowerShell 脚本蔓延。我发现许多不同的地方正在调度和运行数十个 PowerShell 脚本。

每个工程师或工程师团队都有自己的服务器来安排事情。每种类型的脚本都在运行该服务的服务器上执行。

  • 域控制器运行所有 Active Directory 脚本。
  • Exchange 服务器运行所有 Exchange 脚本。
  • 成员服务器运行所有网络团队脚本。
  • 成员服务器为 DBA 运行所有数据库脚本。
  • 成员服务器运行安全团队的所有脚本。
  • ……等等

在这些服务器上运行的所有代码要么保存为该服务器上临时目录中的脚本文件,要么保存为共享驱动器上的脚本文件夹。这真是一场噩梦!

不管你相信与否,在大多数情况下,这个系统运行良好。脚本按需要运行,而且我们在所有服务器上都有备份。没有任何代码丢失。

每个人都很容易对这种现状感到满意,这是可以理解的。改进这个系统并不是优先考虑的事情。

但这个系统并非没有缺陷。虽然它满足了一些工程师的需求,但它无法永远扩展或易于维护。该系统也不允许计划任务有任何灵活性。这种僵化导致同一剧本的十个版本(略有编辑)被安排。

输入詹金斯。

为什么是詹金斯?

在安排和运行 PowerShell 脚本的所有选项中,为什么选择 Jenkins?使用 Jenkins 服务器运行 PowerShell 脚本有很多好处。以下是一些亮点:

更好的控制

一旦您将所有 PowerShell 脚本集中到一个位置,就不用担心脚本在哪台服务器上运行了。您现在可以忘记两年前编写的脚本,该脚本现已过时并锁定了某些服务帐户。

您可以将脚本组织到易于导航的文件夹结构中,准确控制所有脚本实际执行的位置,甚至使用管道将大型整体脚本分解为可在多个作业中重用的较小模块化块。

轻松安排

借助 Jenkins,您将拥有一个单一的中心位置,并且完全支持安排 PowerShell 脚本执行。您可以安排不同的脚本在不同的时间使用不同的参数运行,拥有一个漂亮的 Web GUI 来管理计划等。

版本控制

将 PowerShell 脚本置于某种版本控制之下可以解决许多不同的问题。其中之一是能够与 Jenkins 等工具集成。 Jenkins可以与Git等版本控制产品集成,自动拉取最新版本。

综合记录

当PowerShell脚本分散在各处并创建日志时,日志可能会分散在各处。使用 Jenkins,您可以在网站上的可读输出窗口中获得出色的日志记录,而不必挖掘计划任务创建的某些日志文件。

先决条件/要求

本文将演练如何设置 Jenkins 来运行 PowerShell 脚本。因此,您将需要遵循一些事情。

  • 正在运行的 Jenkins 服务器
  • Git 安装在 Jenkins 服务器或构建代理上
  • 包含 PowerShell 脚本的 Git 存储库设置(确保您知道存储库 URL)
  • 詹金斯 Git 插件

安装PowerShell插件

要使用 Jenkins 运行 PowerShell 脚本,您必须安装 PowerShell 插件。为此,请在主页上执行以下操作:

  1. 单击“管理 Jenkins”,然后单击“管理插件”。
  2. 单击可用选项卡。
  3. 在屏幕右侧的“过滤器”框中键入“powershell”。然后您应该会看到 PowerShell 插件出现,如下所示。

[玩转系统] 使用 Jenkins 和 Git 运行 PowerShell 脚本

4. 选择安装复选框,然后单击安装而不重新启动

5. 当您稍后提供要运行的 PowerShell 脚本时,安装 PowerShell 插件将创建一个 Windows PowerShell 构建步骤选项。

创造就业机会

詹金斯有一个工作的概念。作业是一组指令,您可以向 Jenkins 提供这些指令,以了解要执行哪些脚本、要遵守的计划等。您将在本节中创建一个作业来执行 PowerShell 脚本。为此,您将设置一个作业,将 Git 存储库克隆到 Jenkins 中。

  1. 登录 Jenkins 后,单击右上角的新建项目

[玩转系统] 使用 Jenkins 和 Git 运行 PowerShell 脚本

2. 然后您将看到如下所示的屏幕。选择自由式项目。这种类型的作业将提供最大的灵活性。

[玩转系统] 使用 Jenkins 和 Git 运行 PowerShell 脚本

3. 将作业命名为“Hello World”,然后单击“确定”。

[玩转系统] 使用 Jenkins 和 Git 运行 PowerShell 脚本

4. 您现在应该位于“作业配置”屏幕。您现在应该看到一个名为源代码管理的部分,如下所示。这允许您指定 Jenkins 将克隆哪个 Git 存储库以供作业使用。对于此演示,选择 Git

[玩转系统] 使用 Jenkins 和 Git 运行 PowerShell 脚本

5. 当您点击Git时,您现在应该会看到一个选项,要求您提供 Git 存储库信息。这是包含 PowerShell 脚本的 Git 存储库。

[玩转系统] 使用 Jenkins 和 Git 运行 PowerShell 脚本

下面是每个字段的细分:

  • 存储库 URL - 指向 Git 存储库的 URL。例如,在 TFS 中,URL 可能如下所示:*http://SERVERNAME:8080/tfs//Messaging/_git/Dynamic Distro List*
  • 凭据 - 有权访问存储库的用户名/密码。如果您尚未设置凭据,可以通过单击“添加”来创建一个凭据。
  • 名称 - 可以留空。
  • Refspec - 这可以留空。
  • 分支说明符 - 这允许您选择您希望此作业使用的分支。默认情况下,它将拉取 master 分支,但如果您想使用另一个测试分支,您可以在此处指定它。

您还可以使用上面的“添加存储库”按钮为一项作业克隆多个存储库。如果您在单独的存储库中有需要的模块或其他依赖项,这非常有用。

添加 Windows PowerShell 构建步骤

也许您在 Git 存储库的 master 分支的根目录中有一个名为 Hello World.ps1 的脚本。在这个脚本中,有一行:

Write-Host "Hello World, I'm a Jenkins build!"

您希望在作业运行时执行此脚本。为此,您必须创建一个构建步骤。

Jenkins 允许您为每个作业指定多个构建步骤。出于您的目的,您需要添加一个Windows PowerShell构建步骤。为此,请在作业配置屏幕上:

  1. 单击添加构建步骤按钮并选择Windows PowerShell

[玩转系统] 使用 Jenkins 和 Git 运行 PowerShell 脚本

2. 在命令框中,点源位于 Git 存储库中的 PowerShell 脚本,如下所示。您可以看到我们正在使用名为 WORKSPACE 的 PowerShell 环境变量。该变量表示当前工作目录(Git 存储库的根文件夹)。

[玩转系统] 使用 Jenkins 和 Git 运行 PowerShell 脚本

3. 现在点击“保存”以保存作业。

您现在应该已经设置了一个作业来从 Git 存储库调用 PowerShell 脚本!

执行PowerShell脚本

现在您已经创建了一个作业,运行它并查看输出。

  1. 确保您位于主作业屏幕。如果您为此作业使用 Hello World 名称,则默认 URL 将为 http://localhost:8080/job/Hello world/
  2. 在主作业屏幕上,单击左侧的“立即构建”,如下所示。

[玩转系统] 使用 Jenkins 和 Git 运行 PowerShell 脚本

单击立即构建会立即启动当前作业的构建。对于复杂且需要一段时间才能运行的作业,您将能够单击构建并在运行时实时查看输出。然而,在这种情况下,作业几乎会立即运行。

4. 要查看结果,请点击版本旁边的绿色对号。

[玩转系统] 使用 Jenkins 和 Git 运行 PowerShell 脚本

如果一切按计划进行,您将在输出中看到类似以下内容:

[玩转系统] 使用 Jenkins 和 Git 运行 PowerShell 脚本

时间表和触发器

您现在拥有一个可以在需要时运行并输出 Hello World 消息的作业。但Jenkins的一大卖点就是替代计划任务。我们不想手动运行它。如果您重新打开该作业,您将看到一个名为“构建触发器”的部分。

[玩转系统] 使用 Jenkins 和 Git 运行 PowerShell 脚本

这些是您无需在 Jenkins 中单击“立即构建”即可运行作业的选项。

创建时间表

有几种不同的选项可以用来创建触发器。在这个例子中,让我们保持简单。

  1. 选择定期构建。此触发器允许您使用类似 cron 的调度语法来调度作业。

2. 将作业设置为在周一、周三和周五上午 7:30 运行,如下所示。

[玩转系统] 使用 Jenkins 和 Git 运行 PowerShell 脚本

3. 保存更改并等待。

当指定的日期和时间发生时,您将在构建历史记录下看到脚本按需要运行。

[玩转系统] 使用 Jenkins 和 Git 运行 PowerShell 脚本

现在,您已在 Jenkins 中安排了一个 PowerShell 脚本,该脚本将定期执行。

进一步阅读

  • 在 Windows 上使用 Jenkins 和 PowerShell 实现自动化

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯