瞎扯淡:Jenkins 搭建要点

前言

  • Jenkins 作为持续集成工具,大大的解放了 ITER 的双手,将大量重复性的,繁琐的更新、构建、部署操作融于一体。之前用了一些时间为项目组搭建了一套 Jenkins 环境,将搭建的步骤做一次梳理,分享出来。

    概述

  • 总的来说,Jenkins 是一个协调者的身份,管理和协调了代码库,代码仓库,代码运行环境等。Jenkins 和其他部分的依赖关系如图:

5064745a495547fe899076bde14db822-jenkins1.png

步骤

  • 有了上述的关系图,我们就可以开始着手搭建 CI 环境了。

    JDK,NEXUS,MAVEN

    此三者是 Jenkins 直接依赖的环境,因此需要先行安装配置。
  • 下载安装 JDK,配置环境变量。java -version 命令查看是否安装成功。
  • 下载安装 MAVEN,配置环境变量。
  • 安装私有的 NEXUS,见此处
  • 关联 MAVEN 与 NEXUS,将 MAVEN 的远程仓库修改为私有 NEXUS( 在 MAVEN 的 settings.xml 文件中设置)。不建议使用 MAVEN 中央仓库,因为部分 jar 包被墙且下载速度慢,同时无法发布自己的私有 Jar 包(审核时间长且不适合放在公网),造成构建发布失败。

Jenkins

  • 安装过程略
  • 启停命令 :service jenkins start|stop
  • 默认地址:http://ip:8080 admin/admin

至此,Jenkins + Maven + Nexus + Jdk 的环境已经搭好,然而这仅仅是一个开始而已。

GitLab

  • 俗话说,巧妇难为无米之炊,目前的 Jenkins 还没有米下锅。而 GitLab 就是 Jenkins 的米仓,Jenkins 拿到米之后,将它们做成了香喷喷的饭并发送到部署环境。GitLab 安装过程略,说一说怎么完成这个“生米煮成熟饭”的过程。
  • Jenkins 工作的前半部分,是将 GitLab 上的代码拉到 Jenkins 本机的环境中,然后 Maven 打包。拉的过程,我们用的是 SSH 将 Jenkins 的公钥分发到 GitLab 库中完成远程传递文件。
  • 可以在 Jenkins 主机上,通过两个命令完成
    > ssh-keygen -t rsa -P ''
    > ssh-copy-id -i ~/.ssh/id_rsa.pub <IP>
    
  • 命令一完成了 SSH 公钥的生成,命令二完成了 SSH 公钥的分发,公钥分发给 GitLab 远程主机后,就可以免密登陆进而拉取 GitLab 上的最新代码。

发布环境

  • 如果说 GitLab 是巧妇的米仓,而发布环境就是递到客人手中的饭碗,饭碗中盛的是一个个运行的应用程序。
    同 GitLab 一样,需要完成 Jenkins 到发布环境的公钥分发,方法与上一步同样。

Jenkins 其他配置

  • 这里主要指,在 Jenkins 中 GitLab 和发布环境的配置,具体方法请自行搜索。

其他的东东

  • 分享两个服务启停脚本,可以放在真实环境使用:
启动:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64
nohup java -server -Xms512M -Xmx512M -Xss256k \
      -XX:+UseStringDeduplication \
      -XX:+HeapDumpOnOutOfMemoryError \
      -jar member.jar \
      --server.port=9092 \
      --spring.profiles.active=pre \
      > /dev/null 2>&1 &

停止:
PID=$(ps -ef | grep member.jar | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
    echo Application is already stopped
else
    echo kill $PID
    kill -9 $PID
fi

总结

  • 本文叫“Jenkins 搭建要点”,是一个对之前做工作的概要总结。因此注定不是一个面面俱到的资料。希望看到后的 ITER,看完本文之后能对 Jenkins 有一个比较清晰的认识和判断。