教程:使用 Azure 容器实例 作为 Jenkins 生成代理

重要

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

Azure 容器实例 (ACI) 提供按需、可迸发的隔离环境用于运行容器化工作负荷。 这些特性使得 ACI 成了大规模运行 Jenkins 生成作业的极佳平台。 本文介绍如何部署 ACI,以及如何将其添加为 Jenkins 控制器的永久生成代理。

有关 Azure 容器实例的详细信息,请参阅关于 Azure 容器实例

先决条件

  • Azure 订阅:如果还没有 Azure 订阅,可以在开始前创建一个免费 Azure 帐户
  • Jenkins 服务器:如果没有安装 Jenkins 服务器,请在 Azure 上创建 Jenkins 服务器。

准备 Jenkins 控制器

  1. 浏览到 Jenkins 门户。

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

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

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

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

  6. 在“安全性”下选择“配置全局安全性”

  7. 在“代理”下,指定固定端口并为环境输入适当的端口号

    配置示例: Configure TCP port

  8. 选择“保存”。

创建 Jenkins 工作代理

  1. 浏览到 Jenkins 门户。

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

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

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

  5. 输入节点名称的值

  6. 选择“永久代理”

  7. 选择“确定”

  8. 为远程根目录输入一个值。 例如: /home/jenkins/work

  9. 添加标签(标签用于将多个代理分组到一个逻辑组中。标签的一个示例是linux将 Linux 代理分组为值linux

  10. 将启动方法设置为“通过连接到主服务器来启动代理”

  11. 验证是否已指定或输入所有必填字段:

    Example Jenkins agent configuration

  12. 选择“保存”。

  13. 在“代理状态”页面上,应会看到 JENKINS_SECRETAGENT_NAME。 以下屏幕截图显示了如何识别值。 创建 Azure 容器实例时需要这两个值。

    The build-agent secret is displays after its successful creation.

使用 CLI 创建 Azure 容器实例

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

    az group create --name my-resourcegroup --location westus
    
  2. 使用 az container create 创建 Azure 容器实例。 将占位符替换创建工作代理时获取的值。

    az container create \
      --name my-dock \
      --resource-group my-resourcegroup \
      --ip-address Public --image jenkins/inbound-agent:latest \
      --os-type linux \
      --ports 80 \
      --command-line "jenkins-agent -url http://jenkinsserver:port <JENKINS_SECRET> <AGENT_NAME>"
    

    http://jenkinsserver:port<JENKINS_SECRET><AGENT_NAME> 替换为 Jenkins 控制器和代理信息。 容器启动后,它会自动连接到 Jenkins 控制器服务器。

  3. 返回到 Jenkins 仪表板并检查代理状态。

    Agent has started successfully

    注意

    Jenkins 代理通过端口 5000 连接到控制器,确保允许该端口入站连接到 Jenkins 控制器。

创建生成作业

现在,创建 Jenkins 生成作业来演示 Azure 容器实例中的 Jenkins 生成。

  1. 选择“新建项”,为生成项目命名(例如 aci-demo),选择“自由风格项目”,然后选择“确定”

    Box for the name of the build job, and list of project types

  2. 在“常规”下,确保已选择“限制可以运行此项目的位置”。 为标签表达式输入 linux。 此配置可确保此生成作业在 ACI 云中运行。

  3. 在“生成”下,选择“添加生成步骤”并选择“执行 Shell”。 输入 echo "aci-demo" 作为命令。

  4. 选择“保存”。

运行生成作业

若要测试生成作业并观察 Azure 容器实例,请手动启动生成。

  1. 选择“立即生成”启动生成作业。 作业启动后,会看到类似于下图的状态:

  2. 在“生成历史记录”中单击生成“#1”

  3. 选择“控制台输出”查看生成输出

后续步骤