ubuntu

Ubuntu Jenkins如何远程操作

小樊
67
2025-09-21 01:41:14
栏目: 智能运维

Ubuntu Jenkins远程操作配置指南

一、远程访问Jenkins管理界面

要远程访问Ubuntu服务器上的Jenkins,需完成以下基础配置:

  1. 安装Jenkins
    在Ubuntu上通过包管理器安装Jenkins及依赖:
    sudo apt update && sudo apt install -y openjdk-11-jdk
    wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
    sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ /etc/apt/sources.list.d/jenkins.list'
    sudo apt update && sudo apt install -y jenkins
    
  2. 启动Jenkins服务
    设置Jenkins开机自启并立即启动:
    sudo systemctl enable jenkins
    sudo systemctl start jenkins
    sudo systemctl status jenkins  # 验证服务状态
    
  3. 开放防火墙端口
    使用ufw开放Jenkins管理界面(8080)和Agent通信(50000)端口:
    sudo ufw allow 8080/tcp
    sudo ufw allow 50000/tcp
    sudo ufw reload
    
  4. 初始化Jenkins
    获取初始管理员密码并完成解锁:
    sudo cat /var/lib/jenkins/secrets/initialAdminPassword
    
    浏览器访问http://<Ubuntu服务器IP>:8080,输入初始密码完成解锁。后续建议创建专用管理员账户(而非使用默认admin)。
  5. 安全强化配置
    • 启用全局安全:进入Manage Jenkins > Configure Global Security,勾选“Enable security”。
    • 选择认证方式:推荐使用“Jenkins’ own user database”(内置用户管理)或“LDAP”(企业级认证)。
    • 授权策略:选择“Role-Based Strategy”(基于角色的访问控制),精细化分配用户权限(如管理员、开发者、观察者)。
    • 配置SSL(可选但推荐):通过Let’s Encrypt申请免费证书,将Jenkins访问协议升级至HTTPS(避免密码明文传输)。

二、远程命令行操作Jenkins

Jenkins提供两种主流远程命令行方式:SSH接口CLI jar工具

1. 通过SSH执行命令

2. 使用jenkins-cli.jar工具

三、远程控制主机执行脚本(Publish Over SSH插件)

若需远程执行Shell脚本或传输文件到其他主机(如部署构建产物),可通过Publish Over SSH插件实现:

  1. 安装插件
    进入Manage Jenkins > Manage Plugins > Available,搜索“Publish Over SSH”,点击“Install without restart”。
  2. 配置SSH远程主机
    进入Manage Jenkins > Configure System > Publish over SSH,点击“Add”添加远程主机:
    • Name:自定义标识(如RemoteServer)。
    • Hostname:远程主机IP或域名。
    • Username:远程主机登录用户名(如ubuntu)。
    • Remote Directory:远程主机上的目标目录(如/var/www/html,需提前创建)。
    • Credentials:选择或添加SSH私钥(需提前在Jenkins“Credentials”中配置,类型为“SSH Username with private key”)。
  3. 在项目中使用插件
    • Freestyle Project:进入项目配置,找到“Post-build Actions”,添加“Send build artifacts over SSH”,选择配置好的SSH主机,设置源文件(如dist/**/*,匹配构建产物)和目标目录(如/var/www/html),还可添加执行命令(如systemctl restart nginx)。
    • Pipeline:在Jenkinsfile中使用sshPublisher步骤:
      pipeline {
          agent any
          stages {
              stage('Deploy') {
                  steps {
                      sshPublisher(
                          publishers: [
                              sshPublisherDesc(
                                  configName: 'RemoteServer',  // 对应配置的SSH主机名称
                                  transfers: [
                                      sshTransfer(
                                          sourceFile: 'dist/**/*',
                                          removePrefix: 'dist',
                                          remoteDirectory: '/var/www/html'
                                      )
                                  ],
                                  execCommand: 'systemctl restart nginx'  // 部署后重启服务
                              )
                          ]
                      )
                  }
              }
          }
      }
      

四、分布式构建(远程Slave节点)

若需将构建任务分发到远程Ubuntu服务器(Slave节点),可通过SSH连接实现:

  1. 准备Slave节点
    在远程Ubuntu服务器上安装Jenkins Agent和Java:
    sudo apt update && sudo apt install -y openjdk-11-jdk
    wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
    sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ /etc/apt/sources.list.d/jenkins.list'
    sudo apt update && sudo apt install -y jenkins
    
  2. 配置Master节点
    进入Manage Jenkins > Manage Nodes and Clouds > New Node,输入节点名称(如RemoteSlave),选择“Permanent Agent”,点击“OK”。
    • Remote root directory:设置Slave节点的工作目录(如/home/ubuntu/jenkins)。
    • Launch method:选择“Launch agents via SSH”,填写Slave节点的Hostname/IP,选择之前配置的SSH Credentials(私钥)。
    • Host Key Verification Strategy:选择“Non verifying Verification Strategy”(测试环境)或手动验证主机密钥(生产环境)。
  3. 启动Slave节点
    保存配置后,Jenkins会自动通过SSH连接到Slave节点,启动Agent进程。节点状态显示为“Online”即表示连接成功。
  4. 分配任务到Slave
    在项目配置中,勾选“Restrict where this project can be run”,输入Slave节点的标签(如RemoteSlave),任务将自动分发到该节点执行。

0
看了该问题的人还看了