所属专栏:《GO语言实战开发后台管理系统》

实测搭建jenkins多环境、多分支demo

温馨提示:
本文最后更新于 2022年04月18日,距今已超过 165 天。若文章内容失效或有不良信息,请举报或直接联系官方

一、环境以及工具信息

  1. 3台服务器信息

  jenkins: 192.168.123.163、serverA:192.168.123.130、serverB :139.198.17.241三台机器都是ubuntu16.04系统

  所需jenkins插件工具:Publish Over SSH、Maven Integration plugin、git plugin、Git Parameter Plug-In

  ssh工具:sshd

  jenkins版本为2.17

二、搭建目标

  1. 实现可选git分支以及拉取最新代码

  2. 实现选择不同环境发布jar部署到对应的机器上

三、构建

  1. 安装插件:Publish Over SSH、Maven Integration plugin、git plugin

  2. jenkins机器配置

    a. 安装jdk8

    b.配置maven路径,下载tar.gz,解压即可

  3. 配置系统管理-》全局工具配置

   只需要配置jdk和maven,其他都默认即可

  

 

  

    

  4. 配置系统管理-》系统设置

    

      passphrase/password:为你输入的密码

    

    241配置 ,key为你jenkins机器的本地私钥,passphrase/passwd值可以删掉,这里要注意:必须将本地私钥完整内容拷贝,包括----字

    

 

 

   5. 部署配置

    5.1 新建任务,由于我这里已经创建忽略此步骤

    

    5.2 选中general里的参数化构建过程,点击git parameter和选项参数,前者是配置不同git分支,后者是选中不同环境

    

    

 

 

     5.3 配置git

     注意将branch spec改为:$BRANCH,否则git只会找master分支

    

    5.4 构建触发器

    

    5.5 配置post steps

      此步骤实现文件上传、jar启动,执行shell脚本

      a. 选中send files or execute commands over ssh

      b. 配置server

      c. 选中server里的高级 选中lable

      d. 选中外层的高级 配置 参数化发布

      

 

      

 

      Source files:需要发送到远程服务器的文件,可以使用通配符和Jenkins变量(注意这里要写相对jenkins的workspace的工作目录而已,不支持绝对路径,target为项目的子目录)
      Remove prefix:删除目录前缀,填target表示不创建target目录
      Remote directory:文件发送到远程服务器的哪个目录下。这里跟你系统设置里的工作目录关联,会在对应的remote directory 目录下创建Kepler..目录。

      Exec command:文件发送到远程服务器后,在远程服务器上执行的命令

      最后在外层点击 高级选中parameterized publist,否则不会实现不了环境选中

       

     附上shell内容:masterKepler.sh

# jar包路径
JAR_PATH='/data/app/KeplerMockDevice'

#Jenkins中编译好的jar名称
jar_name=KeplerMockDevice-0.0.1-SNAPSHOT.jar

cd ${JAR_PATH}

#模糊查询指定jar服务的进程id
pid=`ps -ef|grep Mock|grep -v grep|awk '{print $2}'`
if [ -n "$pid" ]
then
echo '163 mock The pid: server' $pid ' will be killed....'
sudo kill -9 $pid
echo '163 mock The pid: server' $pid ' will be start'
nohup java -jar ${JAR_PATH}/${jar_name}  &
else
echo '163 mock The pid: server' $pid ' not exist , will be start'
nohup java -jar ${JAR_PATH}/${jar_name}  &
fi
echo '163 mock The pid: server' $pid ' started'

 

     6. 保存

    

四、发布

  选中项目下的git parameters,选中分支BRANCH,选中环境ENV发布。最后就可以享受成果了。

五、常见问题

  1.jenkins 彻底解决sudo sudo: no tty present and no askpass program specified

  方案:

    a. chmod 600 /etc/sudoers

    b.vim /etc/sudoers 改成下列值

    %root        ALL=(ALL)       NOPASSWD: ALL

    %sudo  ALL=(ALL) NOPASSWD: ALL

    c.添加jenkins Linux account到root 组中:

    usermod -a -G root jenkins

    运行id jenkins 查看jenkins Linux account是否已经属于root 组

    d.重启jenkins

  2. 配置ssh remotes hosts报Can't connect to server

    方案:  

  1. 本地机器秘钥生成不对
  2. 必须将本地私钥完整内容拷贝,包括----字符
  3. 生成秘钥时候的密码错误

  3.  There were errors checking the update sites: UnknownHostException: updates.jenkins.io

  方案:没有外网导致

 

  参考自:

  https://www.jianshu.com/p/6288703532cf

剩余内容,需要“订阅专栏”后继续阅读

正文结束了