美文网首页软件测试go
Windows版 Jenkins 自动化部署

Windows版 Jenkins 自动化部署

作者: 宇宙小神特别萌 | 来源:发表于2019-10-12 15:32 被阅读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

    相关文章

      网友评论

        本文标题:Windows版 Jenkins 自动化部署

        本文链接:https://www.haomeiwen.com/subject/jdbqmctx.html