搭建jenkins主从集群

本文详细介绍在Ubuntu环境下安装配置Jenkins及JDK,并实现与GitLab的集成,包括配置Crowd2Integration、设置JNLP代理协议、守护进程、Docker权限、动态分支切换等高级功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 检查服务器包配置[可选]

一般不需要apt的额外配置, 如果有删除配置或者移动到别处, 使其不生效:

sudo rm /etc/apt/apt.conf

sudo apt-get update

2. 安装JDK

jenkins依赖java, 安装java8+版本,并且配置java_home:

sudo apt search openjdk

sudo apt-get install openjdk-8-jdk

sudo vim /etc/bash.bashrc
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/

3. 安装jenkins

在ubuntu环境下安装:

wget -q -O - https://pkg.jenkins.io/debian/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-get update
sudo apt-get install jenkins

一些默认文件位置:

路径描述
/etc/default/jenkinsjenkins运行配置
jenkins默认文件用户
/var/log/jenkins/jenkins.log日志路径
/var/lib/jenkins/jenkins home

4. 高级设置

  • Crowd 2 Integration
  • 配置slave
    • 新建node
    • 配置node启动方式: 通过Java Web启动代理, 注意只有在全局安全配置中设置了JNLP代理协议的TCP端口该选项才可选
    • 查看salve页面下载agent.jar 和 slave-agent.jnlp 文件, 并且放到salve服务器的jenkins_home目录下
    • 登录salve服务器切换到jenkins用户, 运行上一步salve页面执行命令, 如: java -jar agent.jar -jnlpUrl http://slave.server.ip:8080/computer/slave-01/slave-agent.jnlp -secret 2a99268dbfc5d5f4c517d237d48078b1163f -workDir "/var/lib/jenkins/"
  • GitLab和Jenkins集成
    • Jenkins选择一个pipeline任务, Build Triggers->高级->Secret token, 生成一个token
    • Gitlab选择一个项目, Setting->Integrations, 新建一个webhook, 其中

5. 遇到问题

  • 空白页面

    解决方式: sudo /etc/init.d/jenkins restart

  • 配置agent的守护进程(否则java -jar agent.jar....命令中断后集群就垮了)

    sudo easy_install supervisor
    echo_supervisord_conf > supervisord.conf
    sudo mv supervisord.conf /etc/supervisord.conf
    sudo vim /etc/supervisord.conf # 修改include为files = /etc/supervisor/*.conf
    sudo mkdir -p /etc/supervisor
    sudo vim /etc/supervisor/jenkins-slave-agent.conf
    

    jenkins-slave-agent.conf:

    [program:jsa]
    directory = /var/lib/jenkins/
    command = java -jar agent.jar -jnlpUrl http://slave.server.ip:8080/computer/slave-01/slave-agent.jnlp -secret 2a99268dbfc5d5f4c517d237d48078b1163f -workDir "/var/lib/jenkins/"
    autostart = true
    autorestart = true
    user = jenkins
    redirect_stderr = true
    stdout_logfile = /var/lib/jenkins/jenkins-slave-agent.log
    

    supervisorctl commond:

    sudo supervisorctl reread # 读取新配置
    sudo supervisorctl update # 启动更新
    sudo supervisorctl status # 查看状态
    sudo supervisorctl stop jsa # 停止一个子进程
    sudo supervisorctl start jsa # 启动一个子进程
    sudo supervisorctl restart jsa # 重启一个子进程
    
  • 在agent node 运行docker-compose build报告无法连接到http+docker://localhost docker

    原因: 权限

    解决方法: sudo chown jenkins:docker /var/run/docker.sock

  • 在agent node 运行docker push报告 no basic auth credentials

    原因: load credential文件位置不对

    解决方案: 指定加载权限文件位置如: docker --config /var/lib/jenins/ push xxxxx

  • 配置动态切换到推送的分支

    原因: 默认配置了固定的分支, 如果需要动态配置分支就不可以了

    解决方案: 使用gitlab插件内置的一些变量, 比如使用gitlabSourceBranch变量结合checkout进行切换, 如

    checkout([$class: 'GitSCM', branches: [[name: '${gitlabSourceBranch}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'gitlab-user', url: 'http://git.devops.com/devops/devops.git']]])
    

转载于:https://my.oschina.net/jimmywa/blog/2877437

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值