文档章节

jenkins自动化搭建测试环境

shzwork
 shzwork
发布于 05/29 21:34
字数 1931
阅读 27
收藏 5

简述
概念
Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台。这是一个免费的源代码,可以处理任何类型的构建或持续集成。集成Jenkins可以用于一些测试和部署技术。 
Jenkins是一种软件允许持续集成。

目的
1、持续、自动地构建/测试软件项目,如CruiseControl与DamageControl。 
2、监控一些定时执行的任务。

什么是持续集成?
持续集成是一个开发的实践,需要开发人员定期集成代码到共享存储库。这个概念是为了消除发现的问题,后来出现在构建生命周期的问题。持续集成要求开发人员有频繁的构建。最常见的做法是,每当一个代码提交时,构建应该被触发。

搭建环境
Linux/Centos7 
jdk-8u181-linux-x64.tar.gz 
apache-maven-3.5.4-bin.tar.gz 
git-2.9.5.tar.gz 
apache-tomcat-9.0.10.tar.gz 
jenkins.war(2.137)

搭建步骤:
centos7服务器配置
查看ssh协议服务,是否被sshd进程占用

netstat -anp|grep :22
1
启动ssh服务

service sshd start
1
查看防火墙状态

firewall-cmd --state
1
关闭防火墙

//临时关闭
systemctl stop firewalld.service
//禁止开机启动
systemctl disable firewalld.service 
1
2
3
4
安装jdk
解压jdk

tar  -xzvf  jdk-8u181-linux-x64.tar.gz
1
修改/etc/profile

export JAVA_HOME=/opt/java/jdk1.8.0_181
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
1
2
3
立即生效

source /etc/profile
1
安装maven
解压maven

tar  -xzvf  apache-maven-3.5.4-bin.tar.gz
1
修改/etc/profile

export JAVA_HOME=/opt/java/jdk1.8.0_181
export MAVEN_HOME=/usr/local/apache-maven-3.5.4

export PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
1
2
3
4
5
重新加载配置

. /etc/profile
1
安装git
安装好必要的依赖包

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
1
解压git

tar  -xzvf git-2.9.5.tar.gz
1
安装git到/usr/local/git目录

cd git-2.9.5
make prefix=/usr/local/git all
make prefix=/usr/local/git install
1
2
3
配置环境参数 
方式一:

echo "export PATH=$PATH:/usr/local/git/bin" >>/etc/profile
source /etc/profile
1
2
方式二: 
vim手写修改 /etc/profile

export JAVA_HOME=/opt/java/jdk1.8.0_181
export MAVEN_HOME=/usr/local/apache-maven-3.5.4
export GIT_HOME=/usr/local/git

export PATH=$MAVEN_HOME/bin:$GIT_HOME/bin:$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
1
2
3
4
5
6
立即生效

source /etc/profile
1
初始化设置

git config --global user.name "Your Name"
git config --global user.email "email@example.com"
1
2
生成公钥

ssh-keygen -t rsa -C "email@example.com"
1
一直回车完成 
查看公钥

cat ~/.ssh/id_rsa.pub
1
在码云写入公钥 

测试连接

ssh -T git@gitee.com
1
第一次需要输入yes 
返回Welcome to Gitee.com, yourname! 则为成功

在码云新建项目,并复制SSH连接 
进入保存源代码的位置,克隆仓库

git clone git@github.com:michaelliao/gitskills.git
1
部署jenkins
方式一:直接用命令启动 java -jar jenkins.war –httpPort=8080 
http://localhost:8080 即可访问 
方式二:部署在中间件下 
解压apache-tomcat-9.0.10.tar.gz

tar  -xzvf  apache-tomcat-9.0.10.tar.gz 
1
给apche-tomcat下所有文件赋予可执行权限

cd apache-tomcat-9.0.10
chmod a+x -R *
1
2
如果要指定jdk启动tomcat可以在tomcat安装的bin文件中,找到setclasspath.sh和catalina.sh,vi编辑,在最前面加上需要指定的启动jdk和jre的路径,如下:

#指定jdk路径
export JAVA_HOME=/opt/java/jdk1.8.0_181
export JRE_HOME=/opt/java/jdk1.8.0_181/jre
1
2
3
将jenkins.war放到tomcat的webapps目录下,启动tomcat 
访问:http://localhost:8090/jenkins 


cat /root/.jenkins/secrets/initialAdminPassword
1
选择推荐的插件安装 

补装插件: 
系统管理-插件管理 rebuilder 作用:重新构建 
系统管理-插件管理 safe restart 作用:安全重启 
配置系统安全: 
系统管理-全局安全配置 

添加用户: 
系统管理-管理用户-新建用户 
为新用户添加权限 
系统管理-全局安全配置 


jenkins测试任务
添加节点: 
系统管理-节点管理-新建节点 


 
启动节点验证Linux服务器已经成功注册到jenkins上 
单击刚才添加的节点 TestEnv ,再单击启动代理 
如果报错: 

原因: 
SSH代理的主机密钥验证 
到目前为止,SSH代理是在不使用任何安全问题的主机密钥验证的情况下启动的。SSH Slaves插件 1.15的发布通过向SSH代理引入主机密钥验证策略来解决这个问题。此新功能旨在防止中间人攻击。 
当您和您要连接的服务器之间的服务器伪装成远程主机时,会发生中间人攻击。在这种情况下,您将连接到“中间人”,当您尝试进行身份验证并使用它们与远程主机建立连接时,可以拦截您传输的信息。

主机密钥验证是验证远程主机标识的过程。 
主机密钥存储在SSH服务器下/etc/ssh/,用于标识服务器(Jenkins代理充当SSH服务器) 
在SSH客户端保持主键列表是否信任下~/.ssh/known_hosts (詹金斯主充当SSH客户端) 
主机密钥验证的目的是确保您连接到正确的远程主机 - 您要连接的主机。主机密钥存储在已知主机文件中(通常在下面~/.ssh/known_hosts)。当SSH客户端启动与远程主机的连接时,远程主机(SSH服务器)会发送其主机密钥。然后,SSH客户端将浏览此已知主机文件,并查找该主机的现有主机密钥。如果找到一个,它将检查远程主机发送的主机密钥是否与已知主机密钥匹配。 
解决: 
查看公钥

cat /etc/ssh/ssh_host_rsa_key.pub
1
vim 编辑~/.ssh/known_hosts

vim ~/.ssh/known_hosts
1
添加ip 和公钥进去

172.25.16.131 ssh-rsa AAAAB3NzaC1yc2EAAAADAQAB…
1
参考:https://support.cloudbees.com/hc/en-us/articles/115000073552-Host-Key-Verification-for-SSH-Agents 
新建任务验证jenkins任务可以远程运行在linux服务上 
新建任务 


 
单击立即构建,查看结果

实际应用
自动化部署流程图 

在项目根目录添加deploy.sh文件

#!/usr/bin/env bash
#编译+部署erp项目站点

#需要配置如下参数
#项目路径,在Execute Shell中配置项目路径,命令pwd 就可以获取该项目路径
#export PROJ_PATH=这个jenkins任务在部署机器上的路径

#输入你的环境上tomcat的全路径
#export TOMCAT_APP_PATH=tomcat在部署机器上的路径

###base函数
killTomcat()
{
    #pid=`ps -ef|grep tomcat|grep java|awk '{print $2}'`
    pid=netstat -anp|grep 8091|awk '{printf $7}'|cut -d/ -f1 
    echo "tomcat Id list :$pid"
    if [ "$pid" = "" ]
    then 
        echo "no tomcat pid alive"
    else
        kill -9 $pid
    fi
}

cd $PROJ_PATH/erp
mvn pull
mvn clean install

#调用函数,停tomcat
killTomcat
rm -rf $TOMCAT_APP_PATH/webapps/erp
rm -f $TOMCAT_APP_PATH/webapps/erp.war
#rm -f $TOMCAT_APP_PATH/webapps/ROOT.war

#复制新的工程
cp $PROJ_PATH/erp/target/erp.war $TOMCAT_APP_PATH/webapps/
#cd $TOMCAT_APP_PATH/webapps/
#mv erp.war ROOT.war

#启动tomcat
cd $TOMCAT_APP_PATH/
sh bin/startup.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
新建Jenkins任务 DeployErp 


#jenkins部署完service任务后,jenkins进场自动关闭,service进程不会被关闭
BUILD_ID=DONTKILLME

#加载配置参数
. /etc/profile

#配置运行参数,对照deploy.sh文件
export PROJ_PATH=`pwd`
export TOMCAT_APP_PATH=/usr/local/apache-tomcat-8091

sh $PROJ_PATH/erp/deploy.sh
1
2
3
4
5
6
7
8
9
10
11
至此部署完成
--------------------- 
作者:借物小人 
来源:CSDN 
原文:https://blog.csdn.net/u012894692/article/details/81628994 
版权声明:本文为博主原创文章,转载请附上博文链接!

本文转载自:https://blog.csdn.net/u012894692/article/details/81628994

shzwork
粉丝 13
博文 749
码字总数 10605
作品 0
厦门
私信 提问
使用 Jenkins 构建 Coding 项目 (资源)

Jenkins简介 Jenkins是一种跨平台的持续集成和交付的应用软件,它便于不断稳定地交付新的软件版本,并提高你的工作效率。这款开发运维工具还让开发人员更容易把项目的变化整合起来,并使用大...

寰宇01
2018/04/23
527
0
tomcat搭建之Jenkins环境

导读 Jenkins是一个开源的Java Web项目,一个持续集成的Web项目。例如在自动化测试中,开发了自动化测试的脚本,不可能一直用IDE来运行,然后查看测试结果,这个时候我们就需要借助一个平台,...

问题终结者
2018/10/31
48
1
利用gogs+jenkins+robotframework搭建持续集成测试部署环境[一]

1. 介绍篇 这里提出了一种基于Robot Framework自动化测试框架的最佳实践模式,利用gogs对Robot Framework的自动化测试用例进行版本管理,利用jenkins的robot插件实现对Robot Framework执行结...

wywincl_wy
2016/04/10
0
0
Jenkins 自动化部署上线

Jenkins 自动化部署上线 标签(空格分隔): Jenkins 由于51cto格式问题,可以直接访问https://www.abcdocker.com/abcdocker/3174 查看原文 [TOC] ##一、Jenkins是什么 ##二、上线流程图 既然...

Abcdocker
2018/07/04
0
0
jenkins自动部署

一.说明 经过一段时间的研究与讨论(关于自动化部署及自动化运维),初步确定方案,并已经开始实施。 根据目前公司的服务器环境及系统架构,以及当前市面流行趋势,对工具的使用进行了确定,为...

邱野
2016/10/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

会用python把linux命令写一遍的人,进大厂有多容易?

看过这篇《2000字谏言,给那些想学Python的人,建议收藏后细看!》的读者应该都对一个命令有点印象吧?没错,就是 linux 中经常会用到的 ls 命令。 文章中我就提到如何提升自己的 python 能力...

上海小胖
9分钟前
1
0
HashMap的特性

一、hashmap数据结构:哈希表结构:数组+链表 hashmap调用默认构造方法会产生一个默认底层是长度为16的Entry数组,首先调用key的hasCode()方法来得到一个整数, int hash = hash(key.hashCode...

GGbird
9分钟前
2
0
第五章 spring-connet之Imports注解来龙去脉

前言 imports是一个在spring体系里非常重要的注解,基本每个Enable开头的注解必然有一个import注解。接下来我们深入研究下import的作用。看小节的同学建议先取看PostProcessorRegistrationDe...

鸟菜啊
13分钟前
1
0
CentOS部署Harbor镜像仓库

关于Harbor Harbor是用于存储和分发Docker镜像的镜像仓库服务,相比Docker Registry,Harbor在安全、标识、管理等方面做了增强,更适合企业使用; 官方网站:https://goharbor.io/ 官方开源:...

程序员欣宸
17分钟前
1
0
JavaScript调试必会的8个console方法

每个JavaScript开发者都用过console.log()来调试程序,但实际上Console对象还提供了很多其他方法可以提高调试效率。本文将介绍8个有趣的Console方法,即使JavaScript老手也不一定知道! 1、c...

汇智网教程
39分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部