教程:使用 Azure 中运行的 VM 缩放 Jenkins 部署

重要

许多 Azure 服务都有 Jenkins 插件。其中一些插件将从 2024 年 2 月 29 日开始不受支持。 当前推荐通过 Azure CLI 将 Jenkins 与 Azure 服务集成。 有关详细信息,请参阅适用于 Azure 的 Jenkins 插件一文。

本教程介绍如何在 Azure 中创建 Linux 虚拟机,以及如何将 VM 作为工作节点添加到 Jenkins。

在本教程中,你将执行下列操作:

  • 创建代理计算机
  • 将代理添加到 Jenkins
  • 创建新的 Jenkins 自由风格作业
  • 在 Azure VM 代理上运行作业

先决条件

配置代理虚拟机

  1. 使用 az group create 创建 Azure 资源组。

    az group create --name <resource_group> --location <location>
    
  2. 使用 az vm create 创建虚拟机。

    az vm create --resource-group <resource-group> --name <vm_name> --image UbuntuLTS --admin-username azureuser --admin-password "<password>"
    

    要点

    • 还可通过命令 --ssh-key-value <ssh_path> 上传 ssh 密钥。
  3. 安装 JDK。

    1. 使用 SSH 工具登录虚拟机。

      ssh username@123.123.123.123
      
    2. 使用 apt 安装 JDK。 还可随其他包管理器工具(如 yum 或 pacman)一起安装。

      sudo apt-get install -y default-jdk
      
    3. 安装完成后,运行 java -version 来验证 Java 环境。 输出将包含与 JDK 各部分关联的版本号。

配置 Jenkins URL

如果使用 JNLP,则需要配置 Jenkins URL。

  1. 从菜单中选择“管理 Jenkins”

  2. 在“系统配置”下,选择“配置系统”

  3. 验证 Jenkins URL 是否设置为 Jenkins 安装的 HTTP 地址 - http://<your_host>.<your_domain>:8080/

  4. 选择“保存”。

将代理添加到 Jenkins

  1. 从菜单中选择“管理 Jenkins”

  2. 在“系统配置”下,选择“管理节点和云”

  3. 从菜单中选择“新节点”

  4. 输入节点名称的值

  5. 选择“永久代理”

  6. 选择“确定”

  7. 为以下字段指定值:

    • 名称:指定用于标识新 Jenkins 安装中的代理的唯一名称。 此值可以与代理主机名不同。 不过,将这两个值设为相同很便利。 可在名称值中使用以下列表中的任何特殊字符:?*/\%!@#$^&|<>[]:;

    • 远程根目录:代理需要有一个专用于 Jenkins 的目录。 指定代理上此目录的路径。 最好使用绝对路径,例如 /home/azureuser/workc:\jenkins。 这应该是代理计算机的本地路径。 不需要在主服务器中显示此路径。 如果使用相对路径(如 ./jenkins-agent),则该路径将相对于启动方法提供的工作目录。

    • 标签:标签用于将语义上相关的代理分组到一个逻辑组中。 例如,可为运行 Linux Ubuntu 发行版的所有代理定义 UBUNTU 标签。

    • 启动方法:有两个选项可用于启动远程 Jenkins 节点: 通过 SSH 启动代理,并通过 在主节点上执行命令启动代理:

      • 通过 SSH 启动代理:指定以下字段的值:

        • 主机:VM 公共 IP 地址或域名。 例如,123.123.123.123example.com

        • 凭据:选择要用于登录到远程主机的凭据。 还可选择“添加”按钮来定义新的凭据,然后在凭据创建后将其选中

        • 主机密钥验证策略:控制 Jenkins 在连接时如何验证远程主机提供的 SSH 密钥。

        Node configuration example specifying a launch method of Launch agents via SSH.

      • 通过在主服务器上执行命令来启动代理

        • 从中下载 。agent.jarhttps://<your_jenkins_host_name>/jnlpJars/agent.jar 例如 https://localhost:8443/jnlpJars/agent.jar

        • agent.jar 上传到虚拟机

        • 使用命令 ssh <node_host> java -jar <remote_agentjar_path> 启动 Jenkins。 例如 ssh azureuser@99.99.999.9 java -jar /home/azureuser/agent.jar

        Node configuration example specifying a launch method of Launch agent via execution of command on the master.

  8. 选择“保存”。

定义配置后,Jenkins 会将虚拟机添加为新的工作节点。

Example of virtual machine as new work node

在 Jenkins 中创建作业

  1. 从菜单中选择“新建项”

  2. 对于名称,请输入 demoproject1

  3. 选择“自由风格项目”

  4. 选择“确定”

  5. 在“常规”选项卡中,选择“限制可运行项目的位置”,并在“标签表达式”中键入 ubuntu。 将看到一条消息,确认标签由上一步创建的云配置提供。

    Setting up a new Jenkins job

  6. 在“源代码管理”选项卡中,选择“Git”,然后将以下 URL 添加到“存储库 URL”字段:https://github.com/spring-projects/spring-petclinic.git

  7. 在“生成”选项卡中,选择“添加生成步骤”,再选择“调用顶级 Maven 目标”。 在“目标”字段中输入 package

  8. 选择“保存”。

在 Azure VM 代理上生成新作业

  1. 选择上一步中创建的作业。

  2. 选择“立即生成”。 新的生成会加入队列但不会启动,除非已在 Azure 订阅中创建代理 VM。

  3. 生成完成后,转到“控制台输出”。 可看到该生成在 Azure 代理上远程执行。

    Console output

后续步骤