云计算百科
云计算领域专业知识百科平台

jenkins服务器与代码执行机器不是同一机器,如何配置jenkins?

当 Jenkins 服务器与代码执行机器(构建/部署节点)不是同一台机器时,可以通过 Jenkins 的分布式构建(Master-Slave 模式) 或 SSH 远程执行 来实现远程机器上的任务执行。以下是具体配置方法:


1. 使用 Jenkins 分布式构建(Master-Slave 模式)

配置步骤
  • 安装 Jenkins Agent

    • 在代码执行机器上安装 Jenkins Agent(也称为 Jenkins Node)。
    • 可以选择以下方式安装:
      • 通过 Java Web Start:下载 agent.jar 文件,并通过命令启动:java -jar agent.jar -jnlpUrl http://<jenkins-master>/computer/<node-name>/slave-agent.jnlp
      • 通过 SSH:配置 SSH 连接,Jenkins Master 通过 SSH 启动 Agent。
      • 通过 Docker:使用 Docker 容器运行 Jenkins Agent。
  • 在 Jenkins Master 上配置节点

    • 登录 Jenkins 管理界面,进入 Manage Jenkins > Manage Nodes and Clouds。
    • 点击 New Node,输入节点名称,选择 Permanent Agent。
    • 配置以下信息:
      • Remote root directory:Agent 机器上的工作目录。
      • Labels:为节点添加标签,方便在任务中指定使用该节点。
      • Launch method:选择启动方式(如 SSH、Java Web Start 等)。
      • Host:Agent 机器的 IP 或主机名。
      • Credentials:配置用于连接 Agent 的 SSH 凭据。
  • 在任务中指定节点

    • 创建或编辑任务时,在 General 设置中选择 Restrict where this project can be run,并输入节点的标签。
    • Jenkins 将会在该节点上执行任务。

  • 2. 使用 SSH 插件远程执行任务

    配置步骤
  • 安装 SSH 插件

    • 在 Jenkins 管理界面中,进入 Manage Jenkins > Plugin Manager,安装 Publish Over SSH 插件。
  • 配置 SSH 服务器

    • 进入 Manage Jenkins > Configure System,找到 Publish over SSH 部分。
    • 添加 SSH 服务器信息:
      • Name:服务器名称。
      • Hostname:代码执行机器的 IP 或主机名。
      • Username:登录用户名。
      • Remote Directory:代码执行机器上的工作目录。
      • Passphrase/Key:选择使用密码或私钥进行认证。
  • 在任务中配置 SSH 执行

    • 在任务构建步骤中,选择 Send build artifacts over SSH 或 Execute shell script on remote host using ssh。
    • 配置:
      • SSH Server:选择之前配置的 SSH 服务器。
      • Source files:要传输的文件(可选)。
      • Remove prefix:要移除的路径前缀(可选)。
      • Remote directory:文件传输到的远程目录。
      • Exec command:在远程机器上执行的命令。

  • 3. 使用 Pipeline 实现远程执行

    如果使用 Pipeline,可以通过 sshagent 或 sshCommand 等步骤实现远程执行。

    示例 Pipeline

    pipeline {
    agent any
    stages {
    stage('Deploy') {
    steps {
    sshagent(['your-ssh-credentials-id']) {
    sh 'ssh user@remote-host "cd /path/to/remote/dir && ./deploy.sh"'
    }
    }
    }
    }
    }

    • sshagent:用于管理 SSH 密钥。
    • sshCommand(如果使用插件):直接执行远程命令。

    4. 注意事项

    • 网络连通性:确保 Jenkins Master 和代码执行机器之间的网络是连通的,尤其是 SSH 端口(默认 22)。
    • 权限管理:确保 Jenkins 使用的用户有足够的权限在代码执行机器上执行任务。
    • 安全性:
      • 使用 SSH 密钥认证,避免明文密码。
      • 定期更新密钥和插件,确保安全性。
    • 日志和调试:如果任务执行失败,检查 Jenkins 控制台输出和远程机器上的日志。

    总结

    • 如果需要长期、稳定的远程执行,建议使用 Jenkins 分布式构建。
    • 如果只是临时或简单的远程执行,可以使用 SSH 插件 或 Pipeline。
    • 根据实际需求选择合适的方式,确保 Jenkins Master 和代码执行机器之间的通信和权限配置正确。
    赞(0)
    未经允许不得转载:网硕互联帮助中心 » jenkins服务器与代码执行机器不是同一机器,如何配置jenkins?
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!