教程:使用 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),则路径将相对于 Launch 方法提供的工作目录。

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

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

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

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

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

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

        节点配置示例,指定通过 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

        节点配置示例,通过对主节点执行命令指定启动代理的启动方法。

  8. 选择“保存”

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

作为新工作节点的虚拟机示例

在 Jenkins 中创建作业

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

  2. 输入 demoproject1 名称。

  3. 选择 Freestyle 项目

  4. 选择“确定”

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

    设置新的 Jenkins 作业

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

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

  8. 选择“保存”

在 Azure VM 代理上生成新作业

  1. 选择在上一步中创建的任务。

  2. 选择“ 立即生成”。 新的构建已排队,但在 Azure 订阅中创建一个代理 VM 之前不会启动。

  3. 生成完成后,转到 控制台输出。 你会看到生成是在 Azure 代理上远程执行的。

    控制台输出

后续步骤