软件测试go

Windows版 Jenkins 自动化部署

2019-10-12  本文已影响0人  宇宙小神特别萌

主要讲述:Windows Jenkins的安装及使用

一、Windows Jenkins的安装、配置及使用

部署说明:jenkins服务器和应用服务器在一台机器上的情况。
服务器环境:Windows-jdk1.8、git、maven3.3.9、tomcat8、jenkins.war
jenkins部署:在Windows-Tomcat下部署的jenkins.war(稳定版)

说明:jdk大于1.5,tomcat7以上,maven3.0以上,要不然会出现各种问题。

jenkins环境部署流程:

jenkins环境搭建和构建job流程图.png

1、Tomcat下安装Jenkins

首先配置tomcat用户密码:在jenkins用做凭证用
进入tomcat目录,新增tomcat用户及权限 conf/tomcat-users.xml

<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="admin-gui"/>
<role rolename="manager"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-status"/>
<user username="tomcat" password="tomcat" roles="tomcat,role1,admin-gui,manager,manager-gui,manager-script,manager-status"/>

1.下载jenkins的war包:https://jenkins.io/index.html
2.安装jenkins
拷贝jenkins.war到tomcat的webapps的文件下,及完成jenkins的安装.
tomcat打印出现的问题:

WARNING [Finalizing set up] hudson.model.UpdateCenter.updateDefaultSite Upgrading Jenkins. Failed to update the default Update Site 'default'. Plugin upgrades may fail.
 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
     at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)

问题解析:jenkins会显示该jenkins实例似乎已离线
原因是就是升级站点的链接https://updates.jenkins.io/update-center.json默认是https的
问题解决方式:输入网址http://localhost:8085/jenkins/pluginManager/advanced
最底下有个【升级站点】,把其中的链接由https改成http的就好了,http://updates.jenkins.io/update-center.json, tomcat重新启动后就可以正常使用了。

jenkins http.png

解决jenkins下载插件慢的问题:
原有的:https://updates.jenkins.io/update-center.json
将原有的:http://updates.jenkins.io/update-center.json换成下面的下载源连接

http://mirror.esuni.jp/jenkins/updates/update-center.json

更换方法: 找到插件管理-> 高级(Tab),找到升级站点下面的url input框, 复制到这里
设置好后,需要重启jenkins。
不管你是 war包扔在tomcat里启动的, 还是配置方式启动的, 还是docker里面启动的, 都要重启。
访问 http://localhost:8084/jenkins
初始密码:

tomcat安装jenkins.png

我的密码是:606e96f75d0f40428f467d9d2d1963b3
点击continue,跳转到如下页面


jenkins页面.png

选择安装Install suggested plugins,等待其自动安装完成


jenkins pligins.png

各种插件安装完后,开始设置账户信息,以后用此账户登录jenkins


jenkins user.png

我设置的是:root/123456 全名:zhengja 邮箱:zhengja@dist.com.cn
点击:保存并完成
实例配置:

实例配置.png

最好改成自己本机的ip。
然后进入首页:


jenkins已就绪.png

安装完成,开始使用jenkins。

2、更改jenkins工作空间(可选,不一定要更改)

jenkins工作空间默认是在c盘,不建议已有项目的情况下更改工作空间。
jenkins更改工作空间

3、jenkins配置插件

[jenkins常用插件详解](jenkins插件配置/Jenkins 插件详解.md)

3.1 Manage Plugins (插件管理)

jenkins开始自动默认安装的插件(这里不说)

必要的插件:
Deploy to contontainer Plugin  部署插件:如部署到tomcat
Git Plugin 支持使用Github、GitLab、Gerrit等系统管理代码仓库
Maven Intergration plugin  maven插件

可选插件:
GitHub Bran Soerce Plugin   github需要的插件
Email Extension Plugin 这个插件是邮件通知的扩展,支持定制邮件内容,触发条件以及邮件接收者,功能比基本邮件通知要灵活强大的多.
Matrix Authorization Strategy Plugin : 这个插件提供了基于矩阵的授权策略,支持全局和项目级别的配置

4、Global Tool Configuration (全局工具配置)

前提:windows需要安装有 maven、tomcat、git、jdk

4.1 配置 maven settings

tool maven settins .png

4.2 配置jdk

tool jdk.png

4.3 配置git

Git安装路径(Linux命令:which git、windows 命令: where git)


tool git.png

4.4 配置maven

tool maven.png

5、Configure System (系统配置)

5.1 配置jenkins URL

系统配置jenkins.png

5.2 配置邮箱的全局配置

邮箱默认配置.png 邮箱默认配置2.png 邮箱默认配置3.png
5.2.2 SMTP 和 Password(授权码) 获取:

​ Password 不是邮箱或qq号密码,是邮箱的授权码。
​ [获取qq的授权码和SMTP server.md](其它/获取qq的授权码和SMTP server.md)

5.2.3 Default Subject 默认值:
构建通知 : $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!

5.2.4 Default Content 默认值:
<!DOCTYPE html>    
<html>    
<head>    
<meta charset="UTF-8">    
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>    
</head>    
    
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"    
    offset="0">    
    <table width="95%" cellpadding="0" cellspacing="0"  style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">    
        <tr>    
            本邮件由系统自动发出,无需回复!<br/>            
            各位同事,大家好,以下为${PROJECT_NAME }项目构建信息</br> 
            <td><font color="#CC0000">构建结果 - ${BUILD_STATUS}</font></td>   
        </tr>    
        <tr>    
            <td><br />    
            <b><font color="#0B610B">构建信息</font></b>    
            <hr size="2" width="100%" align="center" /></td>    
        </tr>    
        <tr>    
            <td>    
                <ul>    
                    <li>项目名称 : ${PROJECT_NAME}</li>    
                    <li>构建编号 : 第${BUILD_NUMBER}次构建</li>    
                    <li>触发原因: ${CAUSE}</li>    
                    <li>构建状态: ${BUILD_STATUS}</li>    
                    <li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>    
                    <li>构建  Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>    
                    <li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>    
                    <li>项目  Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>    
                </ul>    

<h4><font color="#0B610B">失败用例</font></h4>
<hr size="2" width="100%" />
$FAILED_TESTS<br/>

<h4><font color="#0B610B">最近提交(#$SVN_REVISION)</font></h4>
<hr size="2" width="100%" />
<ul>
${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="<li>%d [%a] %m</li>"}
</ul>
详细提交: <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a><br/>

            </td>    
        </tr>    
    </table>    
</body>    
</html>

5.2.5 邮箱发送成功效果:在下方的测试项目中使用到了
邮箱发送成功效果1.png 邮箱发送成功效果2.png

5.3 配置系统FTP

需要插件--> Publish over FTP
一般部署完成后都会对文件做下备份,使用前需要先去系统管理-->系统配置中先配置下FTP服务器.


FTP配置1.png

需要填写的配置还是比较少的,填写完成后点击下Test Configuration按钮测试下自己的配置是否正确.

注意:
这里的Remote Directory是指你能够工作的路径。举个例子,比如我指定路径为/dir1的话,那么我就只能上传到此目录下的子目录。如果某天我想上传到/dir2,不好意思,这个路径你访问不到。限定目录后可以起到一点隔离的作用,算是一个安全措施吧
配置无误后转到项目配置页FTP。在下方有 项目配置FTP 实例.

6、创建测试项目-->tomcat+jenkins同一台机器上

环境:windows+tomcat+jenkins+maven+jdk+git
项目来源:idea --> github
注意:这是本机tomcat服务器和jenkins在同一台电脑上,如果不在一台服务器会报403!

初期实现:项目配置-->自动发布到tomcat服务器

初期实现:自动从github下拉-->jenkins工作空间-->打包成war-->部署到本地tomcat webapps下-->自动发布项目。
创建一个任务:
输入一个任务名称:sptingboot-test-github
Freestyle project (自由风格的项目)

创建一个自由风格的项目1.png 创建一个自由风格的项目2.png 创建一个自由风格的项目3.png 创建一个自由风格的项目4.png 创建一个自由风格的项目5.png
点击-->“保存”
创建一个自由风格的项目9.png

后期实现1: 项目配置邮箱

创建一个自由风格的项目8.png

后期实现:自动从github下拉-->jenkins工作空间-->打包成war-->部署到本地或远程tomcat webapps下-->自动发布项目-->项目自动构建信息发送到指定邮箱。

增加邮箱配置功能:需要插件-->Email Extension Plugin


创建一个自由风格的项目10.png

项目配置邮箱:


创建一个自由风格的项目6.png
创建一个自由风格的项目7.png
创建一个自由风格的项目8.png

点击-->保存


创建一个自由风格的项目9.png

点击 “#27” -->查看构建信息

创建一个自由风格的项目11.png
部分控制台信息:可以看出部署成功和邮箱发送成功!
创建一个自由风格的项目12.png
邮箱发送成功效果:
邮箱发送成功效果1.png

后期实现2: 项目配置FTP

说明: 这个插件可以将构建的产物(例如:Jar,war)发布到FTP中去
需要插件--> Publish over FTP
在添加构建后操作选择ftp插件:

FTP配置2.png
FTP配置3.png
解释下中间的这个Remove prefix配置,这个配置用于裁剪路径用的。比如我这里配置的是target,那么文件上传后所在路径就是/test/upload/springboot-test-github-0.0.1-SNAPSHOT.war。还是很好理解的
FTP配置4.png
不过,这样设置,每次构建的产物还是会覆盖之前的,没有达到想要效果。
项目设置基本界面:点击Remote directory后面的-->高级
FTP配置5.png
生成的目录结构:/builds/2019/09/25/springboot-test-github-39/springboot-test-github-0.0.1-SNAPSHOT.war
FTP配置1.png

二、jenkins 配置节点及使用

windows_jenkins机器环境:tomcat+jenkins+jdk
Linux_127 节点环境:git、jdk1.8、maven、tomcat8
Linux_127 节点工具路径:

java : /usr/local/jdk1.8
maven : /usr/local/apache-maven-3.6.2
git : /usr/local/git
tomcat: /usr/local/apache-tomcat-8.5.46

1、Linux_127节点环境搭建

Linux节点环境搭建

2、jenkins配置Linux_127节点工具

配置Linux_127 节点的工具路径
系统管理-->全局工具配置:

配置jdk:
配置Liunx节点工具1.png
配置Git:
配置Linux节点工具2.png
配置Maven:
配置Linux节点工具3.png

3、jenkins 配置Linux_127节点

[Jenkins 节点slave配置.md](jenkins节点slave配置/Jenkins 节点slave配置.md)

6、jenkins使用Linux_127节点部署项目

项目来源:github

构建流程:执行构建->从github拉取项目-->保存在Linux_127节点的 .jenkins2/workspace 工作空间下-->打成war-->部署到Linux_127节点上的tomcat下-->发布项目

创建一个自由风格的任务-->任务名称: Linux127-sptingboot-test-github2

Linux_127节点部署项目1.png
Linux_127节点部署项目2.png
Linux_127节点部署项目3.png

其中deploy.sh脚本->放到项目大根目录下:

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

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

# 输入你的环境上tomcat的全路径
# export TOMCAT_APP_PATH=tomcat在部署机器上的路径
# export TOMCAT_APP_PATH=/usr/local/apache-tomcat-8.5.46

### base 函数
killTomcat()
{
    pid=`ps -ef|grep tomcat|grep java|awk '{print $2}'`
    echo "tomcat Id list :$pid"
    if [ "$pid" = "" ]
    then
      echo "no tomcat pid alive"
    else
      kill -9 $pid
    fi
    #上面注释的或者下面的
    #cd $TOMCAT_APP_PATH/bin
    #sh shutdown.sh
}
cd $PROJ_PATH/workspace/Linux127-springboot-test-github
# mvn clean install

# 停tomcat
killTomcat

# 删除原有工程
#rm -rf $TOMCAT_APP_PATH/webapps/ROOT
#rm -f $TOMCAT_APP_PATH/webapps/ROOT.war
rm -rf $TOMCAT_APP_PATH/webapps/springboot-test-github
rm -f $TOMCAT_APP_PATH/webapps/springboot-test-github.war

# 复制新的工程到tomcat上
cp $PROJ_PATH/workspace/Linux127-springboot-test-github/target/springboot-test-github-0.0.1-SNAPSHOT.war $TOMCAT_APP_PATH/webapps/

cd $TOMCAT_APP_PATH/webapps/
mv springboot-test-github-0.0.1-SNAPSHOT.war springboot-test-github.war

# 启动Tomcat
cd $TOMCAT_APP_PATH/
sh bin/startup.sh

保存执行”构建“-->成功!
效果:


Linux_127节点部署项目4.png
上一篇 下一篇

猜你喜欢

热点阅读