zoukankan      html  css  js  c++  java
  • Jenkins+MSbuild+SVN实现dotnet持续集成 快速搭建持续集成环境

    Jenkins是一个可扩展的持续集成引擎,Jenkins非常易于安装和配置,简单易用,下面开始搭建dotnet持续集成环境

    一、准备工作

    1、系统管理--》管理插件--》可选插件中找到MSBuild Plugin, 安装插件 MSBuild Plugin

    2、配置MSBuild(系统管理--》Global Tool Configuration--》MSBuild安装)

    参数填写说明:

    MSBuild Name 只是一个名称可以随便填,但建议填有点意义名称,例如:MSBuild_v4.0

    Path to MSBuild 这个是安装MSBuild所在的路径,例如:C:WindowsMicrosoft.NETFramework64v4.0.30319MSBuild.exe

    3、邮件通知配置(邮件的发送者信息)

    邮件通知需要配置两个地方,一处是在系统设置,一处是在job配置中的 构建后操作 Extended E-mail Notification与E-mail Notification节点配置:

    系统管理--》系统设置 找到 Extended E-mail Notification(此插件需要安装,图中的部分信息需要点击 高级 按钮才能显示)

    邮件通知节点配置(图中的部分信息需要点击 高级 按钮才能显示):

    上面的配置是邮件的发送者的163邮件信息

    说明:

    SMTP server(SMTP服务器) :登录163邮箱进行获取( 设置--》POP3/SMTP/IMAP)

    User Name(用户名):登录163邮箱的账号名称

    Password(密码):163邮箱的 客户端授权码

    登录163邮箱--》设置--》POP3/SMTP/IMAP

    开启 服务POP3/SMTP/IMAP

    选中上图的 开启 获得 授权码  此授权码就是  配置邮件通知时的密码

    设置客户端授权码成功:

    系统管理员邮件地址配置 可以不配置:

    job里面邮件通知的配置(配置邮件接收者的信息)

    进入配置:

    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>  
                    <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>项目描述:${JOB_DESCRIPTION}</li>  
                            <li>构建编号 : 第${BUILD_NUMBER}次构建</li>  
                            <li>SVN 版本: ${SVN_REVISION}</li>  
                            <li>触发原因: ${CAUSE}</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>  
                    </td>  
                </tr>  
                <tr>  
                    <td><b><font color="#0B610B">变更集</font></b>  
                    <hr size="2" width="100%" align="center" /></td>  
                </tr>  
                  
                <tr>  
                    <td>${JELLY_SCRIPT,template="html"}<br/>  
                    <hr size="2" width="100%" align="center" /></td>  
                </tr>  
                 
               <tr>
                <td>
                    <ul>
                        <li>历史变更记录 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>
                    </ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat="&nbsp;&nbsp;&nbsp;&nbsp;%p"}
                </td>
            </tr>
            <tr>
                <td><b>Failed Test Results</b>
                <hr size="2" width="100%" align="center" /></td>
            </tr>
            <tr>
                <td><pre
                        style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">$FAILED_TESTS</pre>
                    <br /></td>
            </tr>
            <tr>
                <td><b><font color="#0B610B">构建日志 (最后 9999999行):</font></b>
                <hr size="2" width="100%" align="center" /></td>
            </tr>
            <!-- <tr>
                <td>Test Logs (if test has ran): <a
                    href="${PROJECT_URL}ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip">${PROJECT_URL}/ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip</a>
                    <br />
                <br />
                </td>
            </tr> -->
            <tr>
                <td><textarea cols="500" rows="100" readonly="readonly"
                        style="font-family: Courier New">${BUILD_LOG, maxLines=9999999}</textarea>
                </td>
            </tr>  
               
            </table>  
        </body>  
        </html>  
    View Code

    点击 advanced settings 进入高级设置:

    这里选择了成功和失败的情况下发送:

    现在开始进行搭建job

    点击 新建

    进入下图的界面:

    点击 OK 按钮后 进入一下页面

    到处一个新的 job就新建完成了,下面开始配置job

    点击 源代码管理(tab)--》选中Subversion

    添加登录SVN账号和密码

    最后 源代码管理(tab) 配置为:

    构建触发器(tab)此项是设置间隔多长时间去检查一次SVN的代码有没有变化,如果有变化则重新编译

    构建环境(tab) 未研究此项配置有何作用,使用默认的,不做任何修改

    构建(tab)此项设置编译方式、将站点文件拷贝到iis的站点目录下发布站点

    说明:

    /t:ResolveReferences;Compile /t:_CopyWebApplication /p:Configuration=Release /property:TargetFrameworkVersion=v4.0 /p:WebProjectOutputDir=D:Jenkins_PublishDEV_Metadata /p:OutputPath=D:Jenkins_PublishDEV_Metadatain

    MSBuilder Version 为之前配置的 "MSBuild V4.0"   

    MSBuild Build File 是项目文件或者工程文件的名称    

    /t:Rebuild 表示每次都重建,不使用增量编译   

    /property:Configuration=Release 表示编译Release版本,   

    /p:WebProjectOutputDir=E:Jenkins_PublishDEV_Metadata表示网站发布文件的输出路径

    /p:OutputPath=E:Jenkins_PublishDEV_Metadatain  表示项目Dll输出路径   

    /property:TargetFrameworkVersion=v4.0表示编译的目标是.NET 4.0

    xcopy d:Jenkins_Publish d:JenkinsWeb /s/e/y/exclude:C:UsersjieDesktopexclude.txt    站点的文件拷贝命令

    d:Jenkins_Publish 要拷贝的文件目录

    d:JenkinsWeb 拷贝文件到此目录下

    /s 复制目录和子目录,除了空的。

    /e 复制目录和子目录,包括空的。

    /y 禁止提示以确认改写一个现存目标文件(如果文件存在则覆盖)。

    /exclude:C:UsersjieDesktopexclude.txt  /exclude 指定含有字符串的文件列表。如果有任何字符串与要被复制的文件的绝对路径相符,那个文件将不会得到复制。例如,指定如 obj 或 .obj 的字符串会排除目录 obj 下面的所有文件或带有.obj 扩展名的件。exclude.txt文档是排除文件或者目录,如果有排除多种类型的文件或者目录,则用户换行分割

    排除 .pdb后缀的文件,和web.config 文件

    构建后操作(tab) 此项主要是配置邮件通知 将编译情况发送给开发者

    编译错误时发送通知:

    编译成功时发送邮件通知:

    说明:

    Recipient List :接收邮件的邮箱(如果有多个用英文逗号隔开)

    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>  
                    <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>项目描述:${JOB_DESCRIPTION}</li>  
                            <li>构建编号 : 第${BUILD_NUMBER}次构建</li>  
                            <li>SVN 版本: ${SVN_REVISION}</li>  
                            <li>触发原因: ${CAUSE}</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>  
                    </td>  
                </tr>  
                <tr>  
                    <td><b><font color="#0B610B">变更集</font></b>  
                    <hr size="2" width="100%" align="center" /></td>  
                </tr>  
                  
                <tr>  
                    <td>${JELLY_SCRIPT,template="html"}<br/>  
                    <hr size="2" width="100%" align="center" /></td>  
                </tr>  
                 
               <tr>
                <td>
                    <ul>
                        <li>历史变更记录 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>
                    </ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat="&nbsp;&nbsp;&nbsp;&nbsp;%p"}
                </td>
            </tr>
            <tr>
                <td><b>Failed Test Results</b>
                <hr size="2" width="100%" align="center" /></td>
            </tr>
            <tr>
                <td><pre
                        style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">$FAILED_TESTS</pre>
                    <br /></td>
            </tr>
            <tr>
                <td><b><font color="#0B610B">构建日志 (最后 9999999行):</font></b>
                <hr size="2" width="100%" align="center" /></td>
            </tr>
            <!-- <tr>
                <td>Test Logs (if test has ran): <a
                    href="${PROJECT_URL}ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip">${PROJECT_URL}/ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip</a>
                    <br />
                <br />
                </td>
            </tr> -->
            <tr>
                <td><textarea cols="500" rows="100" readonly="readonly"
                        style="font-family: Courier New">${BUILD_LOG, maxLines=9999999}</textarea>
                </td>
            </tr>  
               
            </table>  
        </body>  
        </html>  
    View Code

    到此已经job配置完成,下面来看看 构建结果

    构建成功

    此次测试安装的插件:

  • 相关阅读:
    Scheduled定时任务的触发规则
    linux设置系统时间为当前网络时间
    idea控制台打印日志出现乱码
    Nginx配置高可用的集群
    Nginx实现负载均衡
    BigDecimal比较大小
    Java调用第三方系统接口获取数据
    sql中主要关键字的执行顺序
    ASP.NET.Core --Jenkins+Docker
    ASP.NET.Core --Swagger+Route
  • 原文地址:https://www.cnblogs.com/linJie1930906722/p/5966581.html
Copyright © 2011-2022 走看看