实测搭建jenkins多环境、多分支demo
一、环境以及工具信息
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. 选中外层的高级 配置 参数化发布


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
方案:
- 本地机器秘钥生成不对
- 必须将本地私钥完整内容拷贝,包括----字符
- 生成秘钥时候的密码错误
3. There were errors checking the update sites: UnknownHostException: updates.jenkins.io
方案:没有外网导致
参考自:
https://www.jianshu.com/p/6288703532cf
实测搭建jenkins多环境、多分支demo的更多相关文章
- Docker下搭建Jenkins构建环境
首先需要搭建好docker环境的linux系统,这个教程多如牛毛,在此不再赘述. 然后编写一个dockerfile来生成一个镜像,dockerfile其实就是一系列命令的集合,有点像windows的批 ...
- 如何在Linux(CentOS7)环境搭建 Jenkins 服务器环境
最近,我自己要亲手搭建一套完整的企业级 CI/CD 环境,这个环节里面涉及了很多内容,没有办法把这么多的内容都放在一篇文章里,所以 Jenkins 的安装和Java 的 JDK 安装我就是分了两篇文章 ...
- 用Vagrant创建Jenkins构建环境
这是一个关于Vagrant的学习系列,包含如下文章: Vagrant入门 创建自己的Vagrant box 用Vagrant搭建Jenkins构建环境 用Vagrant和Ansible搭建持续交付平台 ...
- centos7 搭建jenkins
centos7 搭建jenkins.note 环境:VMware 虚拟机 centos 7+ jdk 1.8+ tomcat7+jenkins搭建好linux 服务器后,关闭防火墙 停止firewal ...
- 用MSBuild和Jenkins搭建持续集成环境(2)
http://www.infoq.com/cn/articles/MSBuild-2 作者 Mustafa Saeed Haji Ali ,译者 李剑 发布于 2012年10月23日 | 注意: ...
- Jenkins环境搭建(2)-搭建jmeter+ant+jenkins自动化测试环境
一直想在持续集成方向学习并研究一番,近期正准备结合jmeter+ant+jenkins做自动化接口测试,在学习的同时,正好实践一番,毕竟实践才是真理. 在搭建jmeter+ant+jenkins环境有 ...
- 基于Docker+Jenkins+Gitlab搭建持续集成环境
随着DevOps理念和敏捷理念的发展,我们希望通过自动化技术,加快项目的迭代.尤其是当使用微服务方案后,面临在大量的项目构建和部署工作,借助于jenkins的持续集成,可以快速把应用打包成docker ...
- 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(二)
前言 上一篇随笔Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)介绍maven和nexus的环境搭建,以及如何使用maven和nexus统一管理库 ...
- 基于 Jenkins 快速搭建持续集成环境
什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火 ...
随机推荐
- [TCP/IP] 关闭连接后为什么客户端最后还要等待2MSL
MSL(Maximum Segment Lifetime)报文最大生存时间,2MSL即两倍的MSL,TCP允许不同的实现可以设置不同的MSL值. 第一,保证客户端发送的最后一个ACK报文能够到达服务器 ...
- 003-OpenStack-镜像服务
OpenStack-镜像服务 [基于此文章的环境]点我快速打开文章 1.安装和配置 控制节点(controller) 1.1 创库授权 glance mysql CREATE DATABASE gla ...
- Mysql使用语法总结
查看数据库 show databases; 使用数据库 use honeypot; 查看数据表 show tables; 查看数据表结构 desc TABLEname; 修改数据表的某个字段的类型 a ...
- python中判断两个对象是否相等
#coding=utf-8#比较两个对象是否相等#python 2中使用cmp(),==,is#is 主要是判断 2 个变量是否引用的是同一个对象,如果是的话,则返回 true,否则返回 false. ...
- Vue-cli 中安装并使用less
首先安装vue-cli,网站教程多多,在这不多说.接下来在vue项目目录下,运行 其他扩展使用方法我放个官网链接,大家可以点击查看 npm install less less-loader --sav ...
- ActionResult源码分析笔记
ActionResult是一个抽象类: public abstract class ActionResult { public abstract void ExecuteResult(Controll ...
- The Preliminary Contest for ICPC Asia Shanghai 2019 C. Triple
[传送门] FFT第三题! 其实就是要求有多少三元组满足两短边之和大于等于第三边. 考虑容斥,就是枚举最长边,另外两个数组里有多少对边之和比它小,然后就是 $n^3$ 减去这个答案. 当 $n \le ...
- 几个简单js,普通写法和高逼格写法比较
1. 取数组中的数据,并对空值设置默认值: 常规写法: let arr = [0, 1, null, '', 'abc']; let newArr = []; arr.forEach((item, i ...
- C++面向对象程序设计学习笔记(1)
基本概念 对象: 面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体,每个对象都是由数据和操作代码两部分构成的. 类: 面向对象程序设计中,类是具有相同的数据 ...
- 详解 ASP.NET Core MVC 的设计模式
MVC 是什么?它是如何工作的?我们来解剖它 在本节课中我们要讨论的内容: 什么是 MVC? 它是如何工作的? 什么是 MVC MVC 由三个基本部分组成 - 模型(Model),视图(View)和控 ...