一、环境以及工具信息

  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.-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 - $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

实测搭建jenkins多环境、多分支demo的更多相关文章

  1. Docker下搭建Jenkins构建环境

    首先需要搭建好docker环境的linux系统,这个教程多如牛毛,在此不再赘述. 然后编写一个dockerfile来生成一个镜像,dockerfile其实就是一系列命令的集合,有点像windows的批 ...

  2. 如何在Linux(CentOS7)环境搭建 Jenkins 服务器环境

    最近,我自己要亲手搭建一套完整的企业级 CI/CD 环境,这个环节里面涉及了很多内容,没有办法把这么多的内容都放在一篇文章里,所以 Jenkins 的安装和Java 的 JDK 安装我就是分了两篇文章 ...

  3. 用Vagrant创建Jenkins构建环境

    这是一个关于Vagrant的学习系列,包含如下文章: Vagrant入门 创建自己的Vagrant box 用Vagrant搭建Jenkins构建环境 用Vagrant和Ansible搭建持续交付平台 ...

  4. centos7 搭建jenkins

    centos7 搭建jenkins.note 环境:VMware 虚拟机 centos 7+ jdk 1.8+ tomcat7+jenkins搭建好linux 服务器后,关闭防火墙 停止firewal ...

  5. 用MSBuild和Jenkins搭建持续集成环境(2)

    http://www.infoq.com/cn/articles/MSBuild-2   作者 Mustafa Saeed Haji Ali ,译者 李剑 发布于 2012年10月23日 | 注意:  ...

  6. Jenkins环境搭建(2)-搭建jmeter+ant+jenkins自动化测试环境

    一直想在持续集成方向学习并研究一番,近期正准备结合jmeter+ant+jenkins做自动化接口测试,在学习的同时,正好实践一番,毕竟实践才是真理. 在搭建jmeter+ant+jenkins环境有 ...

  7. 基于Docker+Jenkins+Gitlab搭建持续集成环境

    随着DevOps理念和敏捷理念的发展,我们希望通过自动化技术,加快项目的迭代.尤其是当使用微服务方案后,面临在大量的项目构建和部署工作,借助于jenkins的持续集成,可以快速把应用打包成docker ...

  8. 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(二)

    前言     上一篇随笔Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)介绍maven和nexus的环境搭建,以及如何使用maven和nexus统一管理库 ...

  9. 基于 Jenkins 快速搭建持续集成环境

      什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火 ...

随机推荐

  1. 如何在docker镜像里安装pycuda和numba?

    其实,安装numba还好,直接pip install numba就可以. 但pycuda就不那么友好了. 默认安装时,可能会报如下错误: src/:: fatal error: curand.h: N ...

  2. 201871010117-石欣钰《面向对象程序设计(java)》第十三周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

  3. 02-numpy-笔记-amin

    >>> a = np.arange(4).reshape((2,2)) >>> a array([[0, 1], [2, 3]]) >>> np. ...

  4. Python内容

    1.Python介绍.计算机硬件.网络.变量.数据类型:列表+元组+字典+布尔值+字符串+数字+集合.格式化输出.if判断.for循环.while循环. 2.三元运算.字符编码.文件处理:r/rb(读 ...

  5. 【Spring AOP】切入点表达式(四)

    一.切入点指示符 切入点指示符用来指示切入点表达式目的,在Spring AOP中目前只有执行方法这一个连接点,Spring AOP支持的AspectJ切入点指示符如下: execution:用于匹配方 ...

  6. CF1193A Amusement Park

    洛谷 CF1193A Amusement Park 洛谷传送门 题目翻译 有一个游乐场有一个好玩的项目:一些有向滑梯可以将游客从一个景点快速.刺激地传送到另一个景点.现在,你要帮游乐场老板来规划一个造 ...

  7. [CODEVS4632][BZOJ4326]运输计划

    题目描述 Description 公元 2044 年,人类进入了宇宙纪元.L 国有 n 个星球,还有 n−1 条双向航道,每条航道建立在两个星球之间,这 n−1 条航道连通了 L 国的所有星球.小 P ...

  8. icon发展史速览

    icon 发展史 img 多张图片占用多个请求,想办法减少请求,合并图片,image sprite background-position /* 使用background-position来定位图标 ...

  9. DP问题(2) : hdu 1421

    题目转自hdu 1421,题目传送门 题目大意: 给你n个物品,你要搬走2*k个(也就是搬k次) 每次搬需要花费v,v=(ai-aj)2 (i表示左手拿的物品重量,j表示右手拿的物品的重量) 要求所有 ...

  10. [LeetCode] 1123. Lowest Common Ancestor of Deepest Leaves 最深叶结点的最小公共父节点

    Given a rooted binary tree, return the lowest common ancestor of its deepest leaves. Recall that: Th ...