本文将介绍在 centos 系统上完整搭建并运行 Jenkins 持续集成的实现细节,主要分以下几个步骤来介绍:

一、 Jenkins安装

  1. 登陆需要安装Jenkinscentos机器;
  2. (可选) 卸载已有的 open jdk,安装最新版本的 java jdk,为后续集成maven服务做准备;
  3. 安装 java
  4. 配置 java 环境变量

  5. 创建软链接,在/usr/bin目录下创建新的 java 工具的软链接(Jenkins 服务启动需要在 /usr/bin 下有 java 命令行工具): ln -s /usr/java/jdk1.8.0_40/bin/java /usr/bin/java

  6. 安装 Jenkins

  7. 启动 Jenkins

二、配置 Jenkins

  1. 打开 Jenkins,默认端口 8080。http://{jenkins_host}:8080/,发现 Jenkins 服务已经搭建成功;
  2. 更改 Jenkins 的默认执行用户,确保拥有后续构建中部分指令需要的高级权限。

  3. 安装部分 Jenkins 插件

三、配置 nginx 反向代理

  1. 在 nginx 配置目录/etc/nginx/conf.d 目录下新建配置文件 jenkins.conf,配置文件内容如下

    server {
              listen       80;
              server_name jenkins.yourhost.com;
              #access_log  /var/log/jenkins.access.log  main;
              #error_log   /var/log/jenkins.error.log ;   
              client_max_body_size 60M;
              client_body_buffer_size 512k;
              location / {
                       port_in_redirect on;
                       proxy_pass http://127.0.0.1:8080$request_uri;
                       proxy_redirect  off;
                       proxy_set_header Host $host;
                       proxy_set_header X-Real-IP $remote_addr;
                       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                     }
            }
    
  2. 修改/etc/hosts,在末尾新增一行 :

    127.0.0.1     jenkins.yourhost.com
    
  3. 重启 nginx,/usr/sbin/nginx -s reload,即可以地址 jenkins.yourhost.com 访问 Jenkins 主页

四、相关插件安装

  1. 插件安装方法为,进入系统管理--->插件管理,在 Available 的 Tab 下勾选需要的插件直接安装即可。 一些常用的插件如下。
插件名 说明
Git plugin jenkins 的 git 集成工具,拉取源代码
GitBuckit plugin jenkins 的 gitbuckit 集成工具,拉取源代码(提供 gitbucket 的 webhook 配置,使 gitbucket 可以通过提交代码触发 build,webhook 地址为 http://[jenkins_host]/gitbucket-webhook/, 将其写入项目远程仓库的 settings->service hooks 里即可)
Cobertura Plugin 显示代码测试覆盖率报表,如 java 、python 等
Violations Plugin 用来展示 Python 静态代码审查报表,支持 pylint、jslint 等
Email Extension Plugin Jenkins 自定义邮件插件 。
Junit Plugin 用来展示生成的单元测试报表,支持一切单测框架,如 junit、nosetests 等
Maven Integration plugin maven 项目管理工具。一些 maven 代码质量管理命令:mvn sonar:sonar(单测结果,覆盖率)、findbugs:findbugs(静态代码检查) 、checkstyles:checkstyles(编写规范,潜在问题)
Description Setter Plugin 为每次 build 设置说明文字。通过正则表达式来匹配 log 里每行的输出,将符合正则表达式的部分显示在说明中。

Email Extension Plugin 的设置参考

Default Subject: 
        构建通知:$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!
Default Content:
        <hr/>
        (本邮件是程序自动下发的,请勿回复!)<br/><hr/>
        项目名称:$PROJECT_NAME<br/><hr/>
        构建编号:$BUILD_NUMBER<br/><hr/>
        git版本号:${GIT_REVISION}<br/><hr/>
        构建状态:$BUILD_STATUS<br/><hr/>
        触发原因:${CAUSE}<br/><hr/>
        构建日志地址:<a href="${BUILD_URL}console">${BUILD_URL}console</a><br/><hr/>
        构建地址:<a href="$BUILD_URL">$BUILD_URL</a><br/><hr/>
        失败单测:${FAILED_TESTS} <br/><hr/>
        变更集:${JELLY_SCRIPT,template="html"}<br/>
         <hr/>

五、系统设置明细

以下图解会对 Jenkins 系统的主要设置进行说明,可参考该部分进行必要的设置。

此处是之前推荐安装的邮件插件 Email Extension Plugin 的设置。
邮件收发设置,按照字段要求填写即可,SMTP server 为邮件的 smtp 服务器地址;
Default Subject:邮件默认标题,可以带 Jenkins 变量,如:构建通知:$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!
Default Content:  邮件默认内容,可以带 Jenkins 变量,如


(本邮件是程序自动下发的,请勿回复!)



项目名称:$PROJECT_NAME


构建编号:$BUILD_NUMBER


git 版本号:${GIT_REVISION}


构建状态:$BUILD_STATUS


触发原因:${CAUSE}


构建日志地址:${BUILD_URL}console


构建地址:$BUILD_URL


失败单测:${FAILED_TESTS}


变更集:${JELLY_SCRIPT,template="html"}


需注意,要点击 Default user E-mail suffix 右下方的“高级(advance)”选项,才能进行邮件发送的 smtp 服务器的详细设置,设置如下:
勾选 “use SMTP Authentication”,根据字段填入相应信息。
User Name: 发送邮件的 email
Password: 发送人 email 的登陆密码。
SMTP port: SMTP 邮件服务器的端口。

点击 “Default Triggers” ,展开邮件发送触发器配置界面,如下图所示,根据需求勾选默认的触发发送邮件的方案。

下图为默认的邮件发送选项配置,若已经配置了之前介绍的 Extended E-mail Notification 的邮件选项,则该部分可忽略。
填写字段如 Extended E-mail Notification,注意,该部分需要勾选 “使用 smtp 认证”,才能展开 smtp 配置项的填写,不可忽略。

Path to key: jenkins 服务运行用户的 rsa 私钥路径,如~/.ssh/id_rsa;
Key: 将 Jenkins 服务运行用户的私钥全部内容填入,即~/.ssh/id_rsa 内的全部内容粘贴到此框;
 Passphrase:创建 ssh-keygen rsa 私钥时,未设置则不填写。
 rsa 方式远程操作机器的前提是,Jenkins 所在用户的id_rsa.pub 即公钥内容已经在远程机器用户.ssh 目录下的authorized_keys文件内,请确保 Jenkins 的公钥已复制到远程机的~/.ssh/authorized_keys 文件中。

SSH Servers(下图),需要远程操作的机器的信息配置,按照字段填写远程机器名称(自定义)、host 地址、访问用户和远程机器的指定工作目录即可。

点击 “高级(advanced)” 选项,展开 SSH Servers 的详细配置信息,如下图:
勾选 Use password authentication, or use a different key,展开针对于访问该远程机器的详细配置信息。
Key :将 Jenkins 服务运行用户的私钥全部内容填入,即~/.ssh/id_rsa 内的全部内容粘贴到此框。
port :ssh 连接远程机器的端口,ssh 默认端口 22。

六、slave 节点配置

  1. 设置 linux  的 slave 机器环境。
    创建专用的 jenkins 用户来管理 Jenkins job(可选)

  2. 在 Slave 的 linux 机器上创建 public/private key pair;

  3. 创建 slave 节点。

  4. 配置构建环境的依赖项。

  5. 用 slave 机器构建 job。

七、一些依赖项的安装

  1. maven 安装。

  2. centos 下一些 python 包的安装(可能在一些 python 项目的持续集成中会用到):


↙↙↙阅读原文可查看相关链接,并与作者交流