前言
- Jenkins 作为持续集成工具,大大的解放了 ITER 的双手,将大量重复性的,繁琐的更新、构建、部署操作融于一体。之前用了一些时间为项目组搭建了一套 Jenkins 环境,将搭建的步骤做一次梳理,分享出来。
概述
- 总的来说,Jenkins 是一个协调者的身份,管理和协调了代码库,代码仓库,代码运行环境等。Jenkins 和其他部分的依赖关系如图:
步骤
- 有了上述的关系图,我们就可以开始着手搭建 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 有一个比较清晰的认识和判断。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于