腾讯云CentOS7安装jenkins持续集成环境

CentOS上安装软件,我个人比较倾向于使用yum或rpm的方式进行安装,因为毕竟在yum的支持下,系统所有软件可以处在一种可控可管理的状态下,需要时可以一键安装和卸载的,并且也可以把etclogshare等文件都统一收拢到特定的目录下,比较符合现代化的程序安装和卸载方式。

本文记录了在腾讯云CVM CentOS7上面安装jenkins持续集成平台的详细操作步骤

安装jdk

由于yum仓库中没有oracle版本的JRE或者JDK(只有openjdk的版本),所以我们去oracle官方去下载下oracle版本的jdk进行安装。

  • 第一步: 下载oracle官方的Linux版本rpm包. 在这个页面 选择最新的linux64位版本即可
  • 第二步: 将rpm包发送到自己的腾讯云服务器上:

    1
    scp ./jdk-10.0.1_linux-x64_bin.rpm root@yourip:/root/software

    请根据自己的实际情况填写传输路径

  • 第三步: 登录自己的腾讯云服务器,执行如下命令进行rpm软件安装

    1
    yum install ./jdk-10.0.1_linux-x64_bin.rpm

    安装后可以这样确认是否已经正确安装到rpm系统:

    1
    yum list installed | grep jdk

    1
    rpm -qa | grep jdk
  • 第四步: 执行java命令验证下

    1
    java --version

    确认下看到JAVA SE的标识就说明安装成功了, 如:
    Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10)

    如有需要,你可以在自己的profile或全局/etc/profile增加jdk相关环境变量:

    1
    2
    3
    4
    5
    JAVA_HOME=/usr/local/java/jdk1.8.0_144
    JRE_HOME=$JAVA_HOME/jre
    PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
    export JAVA_HOME JRE_HOME PATH CLASSPATH

jenkins安装

  • 登陆云服务器,使用wget下载jenkins的war包
    jenkins是个自托管的java程序,CentOS安装文档可参考官网:
    1
    wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war
  • 不过,喜欢用yum的我还是在网上找到了yum的安装方法, 主要命令如下:
    1
    2
    3
    4
    5
    6
    # 安装yum源
    $ wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
    # 导入key
    $ rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
    # yum执行安装
    $ yum install jenkins
  • daemon脚本

    jenkins默认使用了/etc/init.d的传统启动脚本,不能很好的利用如今更先进的systemd. 所以我们可以把他原来的脚本删除,从新在 /lib/systemd/system 下面创建一个新的:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    [Unit]
    Description=Jenkins
    After=network.target
    Requires=network.target

    [Service]
    Type=simple
    EnvironmentFile=/etc/sysconfig/jenkins
    ExecStart=/usr/bin/java ${JENKINS_JAVA_OPTIONS} -jar /usr/lib/jenkins/jenkins.war --httpPort=${JENKINS_PORT} --httpListenAddress=${JENKINS_LISTEN_ADDRESS} ${JENKINS_ARGS}
    Restart=always
    User=jenkins
    RestartSec=20

    [Install]
    WantedBy=multi-user.target
  • 尝试直接启动jenkins.war来确认下是否有报错

    1
    java -jar /usr/lib/jenkins/jenkins.war

    如果没有报错,则可以使用服务方式启动了:

    1
    2
    3
    systemctl start jenkins
    // 如果有需要还可以加入启动项
    systemctl enable jenkins.service

    如果端口被占用,你可以修改 /etc/sysconfig/jendins 配置来修改端口。

  • nginx配置一个proxy转发规则,转到jenkins启动的端口上 (本文默认你已经安装了nginx)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Host $http_host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Host $http_host;
    proxy_set_header X-Nginx_proxy true;
    proxy_pass http://127.0.0.1:8010;
    }
  • 在客户端浏览器中访问nginx配置的网站地址即可

升级jenkins

  • 停止jenkins服务
1
systemctl stop jenkins
  • 通过yum更新
1
yum install jenkins
  • 重新启动jenkins

开启https

由于我们把jenkins放在nginx后面运行,所以只需开启nginx的https支持即可。请自行参考其他文章进行开启

踩坑

  • jenkins CPU占用过高

这个确实可能因为jenkins装了很多插件有关,当然他本身也是个不小的软件。对我1G内存1核的CPU来说压力太大,最终我把它挪到了阿里云

  • jenkins网页卡在”正在启动中”

    此时你可能需要修改下配置文件,因为你所在网络被限制了。需要你进入jenkins的工作目录,打开 hudson.model.UpdateCenter.xml

    http://updates.jenkins-ci.org/update-center.json
    改成
    http://mirror.xmission.com/jenkins/updates/update-center.json

    还是不行的话 找到updates目录下的default.json 把里面所有的谷歌地址改成百度的

Refer

CentOS7安装jenkins