瞎扯淡:Jenkins 搭建要点

本贴最后更新于 2687 天前,其中的信息可能已经事过境迁

前言

  • 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 有一个比较清晰的认识和判断。
  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    53 引用 • 37 回帖 • 1 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3187 引用 • 8213 回帖
  • Nexus
    13 引用 • 20 回帖
  • SSH
    44 引用 • 51 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • flhuoshan
    作者

    没有推那个,而且估计不太稳定,Jenkins 现在用的不错

    1 回复
  • 其他回帖
  • Jenkins 还需要你搭建?

    1 回复
  • alanfans

    文不对题,官网介绍可不是这么搭建的

    1 回复
  • flhuoshan
    作者

    官网上角度不一样,更细节一些,这个是从全局的角度来说的

  • 查看全部回帖