最近搭建测试环境自动化,之前都是用机器猫。机器猫的流程大概是这样,开发打包上传到svn,给测试一个svn地址,测试到机器猫上传文件,然后再运行启动。

为了减去开发打包这个环节,所以专用jenkins。

实现需求如下:

1、自动拉取git代码,自动打包

2、备份远程机的jar包

3、上传至远程机,并启动项目

4、提供回滚功能

cat /data/jekins_shell/autoshell

#参数 $1项目  $2方法  $roll_bak参数
app=meng if [ -n "$1" ];then
app=$
fi app_home=/data/webroot/youximao/${app}
app_jar=${app_home}/${app}.jar
bak_home=${app_home}/bak
bak_file=${bak_home}/${app}_$(date +"%Y-%m-%d_%H%M%S").jar if [ ! -d "$bak_home" ]; then
mkdir $bak_home
fi #保留个数
save_count= #执行回滚操作
function roll_back(){
echo filenameis: ${}
filename=`ls $bak_home/*jar |sort -n|head -n 1`
echo $1
if [ -n "$1" ]; then
if [ -e $bak_home/$1 ]; then
filename=$bak_home/$1
fi
fi echo old${filename}
if [ -e $filename ]; then
echo 拷贝开始 $filename $app_jar
\cp -f $filename $app_jar
echo 拷贝完成 开始启动
sh /etc/init.d/tomcat-$app restart
fi
} function add_bak(){ cp $app_jar ${bak_file} #文件总个数
count=`ls $bak_home/ |wc| awk '{print $1}'` #删除个数
del_count=$[$count-$save_count] #倒序排列 删除最后几条
if [ $del_count -gt 0 ]; then echo $del_count" count deleted "
ls ${bak_home}/*jar |sort -r|tail -n $del_count|xargs rm -rf
fi } case $2 in
add_bak)
add_bak;;
roll_back)
roll_back $3;;
esac

[root@jenkins-50-130 .ssh]# cat ~/.jenkins/jekins_shell/general_shell

#!/bin/bash

#app名称
app=$ #远程服务器地址
remote_host=root@${} #最新的jar包
new_jar=/root/.jenkins/workspace/${app}/target/${app}.jar #远程jar包目录
remote_home=/data/webroot/youximao/${app} #远程jar包
remote_jar=${remote_home}/${app}.jar
ssh ${remote_host} "/data/jekins_shell/autoshell ${app} add_bak" scp ${new_jar} ${remote_host}:${remote_jar} #远程执行
ssh ${remote_host} "/etc/init.d/tomcat-${app} restart >/dev/null 2>&1"

1、允许root登陆
vi /etc/ssh/sshd_config #PermitRootLogin no (注释掉)
/etc/init.d/sshd restart 重启sshd服务
2、创建自动化脚本
mkdir /data/jekins_shell
上传autoshell 脚本
chomd 555 autoshell 设置为可执行权限

ssh-keygen -t rsa -f ~/.ssh/id_rsa -P '' -C "IP"  创建key

3、登陆jekins 服务器
cd /root/.ssh
执行 ssh-copy-id 192.168.50.197 将公钥发送到远程,显现登陆免密【远程没有添加的情况下】
登陆远程 ssh root@192.168.50.197 必须要登陆一次才行

scp autoshell root@192.168.50.211:/data/jekins_shell/

4、创建项目 类型为maven

调用默认的shell 参考cat
编写自定义shell 参考meng

pid=`ps -ef|grep java |grep -v 'grep' |grep "$plat_home"|awk '{print $2}'`
if [[ -n $pid ]]; then
echo -e $jar "is running"
exit
else
su - zoumi -c "$java_home/java $java_arg -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=9900,suspend=n -jar $plat_home/$jar --spring.config.location=$pro_file/$pro_name &" sleep
pid2=`ps -ef|grep java |grep -v 'grep' |grep "$plat_home"|awk '{print $2}'`
if [[ -n $pid2 ]]; then
echo $jar " is start"
else
echo $jar "not running.please check it"
exit
fi fi
} function stop() {
pid4=`ps -ef|grep java |grep -v 'grep' |grep "$plat_home"|awk '{print $2}'`
if [[ -n $pid4 ]]; then
echo $jar "is running,we will stop it !!!!"
kill - $pid4
sleep
pid3=`ps -ef|grep java |grep -v 'grep' |grep "$plat_home"|awk '{print $2}'`
if [[ ! -n $pid3 ]]; then
echo $jar "is stop !!!"
else
echo $jar " is running,please check it !!!"
exit
fi
fi } function restart() {
stop
sleep
start
} function status() {
pid5=`ps -ef|grep java |grep -v 'grep' |grep "$plat_home"|awk '{print $2}'`
if [[ -n $pid5 ]]; then
echo $jar "is start"
else
echo $jar "is stop" fi }
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
*)
echo $"Usage: $0 {start|stop|restart|status}"
esac

项目回滚

./autoshell meng roll_back

邮箱配置:

https://blog.csdn.net/fullbug/article/details/53024562

jekins测试环境自动化的更多相关文章

  1. 项目测试环境自动化部署[jenkins前后端配置、Nginx配置]

    持续部署:关注点在于项目功能部署到服务器后可以正常运行,为下一步测试环节或最终用户正式使用做准备.(问题点:一个环节有问题,其他环节跟着有问题) 持续集成:关注点是在于尽早发现项目整体运行问题,尽早解 ...

  2. .NET持续集成与自动化部署之路第三篇——测试环境到生产环境的一键部署策略(Windows)

    Jenkins测试环境到生产环境的一键部署策略(Windows) 一.前言     前面我们已经初步实现了开发集成环境.测试环境的持续集成(自动化构建.自动化测试.自动化部署).但生产环境自动化部署迟 ...

  3. 用Jenkins自动化搭建测试环境-前奏

    用Jenkins自动化搭建测试环境-前奏 1.安装 参考及启动:https://www.cnblogs.com/Eric15/articles/9828062.html 2.插件 新手一般按推荐安装即 ...

  4. 总结Selenium自动化测试方法(二)测试环境搭建

    (接上期内容) 二.测试环境搭建 1.安装python 现在python3.0比python2.0多了一些改进的功能(详见http://zhidao.baidu.com/link?url=3sT1g7 ...

  5. [唐胡璐]Android自动化- 测试环境搭建中遇到的问题

    这里主要讲一下在配置过程中遇到一个小问题,其他的步骤会略过。 安装JDK,并设置环境变量 下载Android ADT, 解压后,文件夹显示如下: Download the ADT bundle for ...

  6. Mcaca+Python 测试环境搭建及上手

    Macaca是一套面向用户端软件的测试解决方案,提供了自动化驱动,周边工具,集成方案,旨在解决终端上的测试.自动化.性能等方面的问题,很多人选择它的原因简单:轻量化(相比于appium),跨平台(wi ...

  7. selenium结合docker构建分布式测试环境

    selenium是目前web和app自动化测试的主要框架.对于web自动化测试而言,由于selenium2.0以后socker服务器由本地浏览器自己启动且直接通过浏览器原生API操作页面,故越来越多的 ...

  8. 基于.net的微服务架构的开发测试环境运维实践

    眼下,做互联网应用,最火的架构是微服务,最热的研发管理就是DevOps, 没有之一.微服务.DevOps已经被大量应用,它们已经像传说中的那样,可以无所不能.特来电云平台,通过近两年多的实践,发现完全 ...

  9. Jenkins~配合Docker及dotnetCore进行生产和测试环境的灵活部署

    回到目录 首先要清楚本文是讲dotnetcore项目在生产和测试环境部署的,这在过去的frameworks项目里,我们可以通过设置web.config的环境变量,然后再发布时指定具体的变量,去实现生产 ...

随机推荐

  1. LoadRunner设置监控Windows系统资源步骤

    一般在客户端通过LoadRunner对服务器进行压力测试,都需要实时监控服务器端的系统资源,本篇主要简单介绍一下如何设置在LoadRunner的Controller中配置监控Windows Resou ...

  2. 二叉树题目集合 python

    二叉树是被考察频率非常高的数据结构.二叉树是按照“父节点-左子树&右子树”这样的方式,由根节点不断向下扩展,形成一棵树的结构.二叉树经常被提到的三种遍历方式:前序遍历.中序遍历和后序遍历,既是 ...

  3. Winform开发常用控件之TreeView菜单导航和权限用法

    TreeView一个很棒的控件,我们在做WEB开发时常常犯困的一个东东.当然这里介绍winform里面的用法唠. 先介绍几个属性吧,CheckBoxes设置为true的话树形节点前面会出现checkb ...

  4. scikit-learn 学习笔记-- Generalized Linear Models (三)

    Bayesian regression 前面介绍的线性模型都是从最小二乘,均方误差的角度去建立的,从最简单的最小二乘到带正则项的 lasso,ridge 等.而 Bayesian regression ...

  5. Word操作(基于word2013)【非编程类】

    一.生成目录 1.word支持自动生成目录功能,生成地点为操作时光标的落点 2.生成方式:打开首选项,进入引用标签,如下图所示最左边即为目录选项. 一般有3个内置目录类型 a:手动目录,生成目录后只有 ...

  6. Java移位运算符 “

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/zjx409/article/details/37569055 左移运算符(<<) 基本使 ...

  7. iOS 基础类解析 - NSDate

    版权声明:本文为博主原创文章,未经博主同意不得转载.转载联系 QQ 30952589,加好友请注明来意. https://blog.csdn.net/sleks/article/details/248 ...

  8. 转-Python自然语言处理入门

      Python自然语言处理入门 原文链接:http://python.jobbole.com/85094/ 分享到:20 本文由 伯乐在线 - Ree Ray 翻译,renlytime 校稿.未经许 ...

  9. 如何ping别人的计算机名来获取IP?

    来源:http://blog.csdn.net/qq_27109081/article/details/47128175 如何ping别人的计算机名来获取IP?            获取别人的IP, ...

  10. linux 线程的同步 三 (内存信号量的使用)

    信号量.同步这些名词在进程间通信时就已经说过,在这里它们的意思是相同的,只不过是同步的对象不同而已.但是下面介绍的信号量的接口是用于线程的信号量,注意不要跟用于进程间通信的信号量混淆,关于用于进程间通 ...