jenkins在windows上自动化部署.Net(.Net Core)项目

      前言

        什么是持续集成呢?Continuous integrationCI)。持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。

        如果没有持续集成会有哪一些问题呢?模块项目接口部署不及时,接口不通。每次需要手动打包最新的代码进行部署、发布代码、线上部署都是纯手工。容易出错。浪费时间。

        现在加上持续集成解决的问题呢?项目构建自动化、集成的详细信息及历史记录的记录、使用统一的管理、固定规定的部署流程、每天至少集成一次。

      安装

       

        这里我采用的是使用Tomcat配合jenkins一起使用的来达成持续集成的目的。

        一、安装Tomcat

          从官网下载Tomcat。下载地址:http://tomcat.apache.org/

       分享图片

       

       

       

          这里我选择的是32-bit/64-bit Windows Service Installer (pgpsha512)这个版本。然后依次安装就可以了。

      接下来配置环境变量:

      一、修改设置:CLASSPATH:(.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%)。注意是第一个符号点!!

      二、新增设置:CATALINA_HOME:(D:\tool\apache-tomcat-7.0.57)括号内为路径名。

      三、修改设置:path:(;%JAVA_HOME%;%JRE_HOME%\jre\bin)若以前配置java环境时配置过则不要再次配置。

           安装就差不多完成了,我们在浏览器输入http://localhost:8080/来看看是否出现以下页面,出现了的话就说明安装成功了。

       

       分享图片

       

       

       

        二、安装JDK

          安装JDK可以查阅这篇文章——https://www.runoob.com/java/java-environment-setup.html

        三、安装Jenkins

        一切准备就绪之后,就开始安装jenkins了,下载地址:https://jenkins.io/download/前往地址下载jenkins的 war包。然后将war包放置在前面安装的Tomcat的目录之下(C:\Program Files\Apache Software Foundation\Tomcat 8.5\webapps——我的地址是这个)。

      然后在浏览器中输入http://localhost:8080/jenkins/访问,安装成功的话就会出现jenkins的界面

      分享图片

       

       

       

      这里根据提示我们找到目录之下就可以获取密码了。接下来会出现插件安装的一个选择,新手直接选择新手入门推荐安装就好了。

       

       分享图片

       

       

       

       

      这里有时会出现安装失败或者链接失败的情况,多试几次就好了。一般是网络的问题。

        分享图片

       

       

       

       

      创建管理员用户之后就可以正式开始配置jenkins了。

      配置

      一、插件安装

        这里需要安装暂且有三个插件,一个是MSBuild Plugin、一个是 Publish Over SSH、一个是Email Extension Plugin。前者是用来作为编译的插件,后者是用来作为连接服务器的插件、最后一个则是用来配置邮件发送的插件了。

        分享图片

      分享图片

       分享图片

       

      二、邮箱配置

        进入系统设置,正式开始配置邮件发送的配置。

       分享图片

       

       

       

        首先找到Jenkins Location设置系统管理员的邮件地址。

       分享图片

       

       

       

        然后找到Extended E-mail Notification设置,这里就可以开始设置邮件的发送配置了。这里我采用的是qq邮箱的配置。 

      分享图片

       

       

      分享图片

       

       

      分享图片

       

       

       分享图片

       

       

      SMTP server——SMTP 服务器的配置

      Default user E-mail suffix——默认电子邮件的后缀

      User Name——这里设置的是发件人信息([email protected]在这里就输入12345678

      Password——这里不是填写密码,这里输入的是开通SMTP 的授权码

      SMTP port——SMTP 默认端口开启465

      Default Content Type——邮件内容的格式

      Default Recipients——默认收件人

      Default Subject——默认主题

      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>

       

       

      三、 Publish over SSH配置

      接下来我们就开始配置SSH连接服务器配置了。

       分享图片

       分享图片

       

       

       

      按照上面的配置进行设置就可以了。

      Passphrase——密码或密钥

      Name——此连接服务的名称

      Hostname——服务器的地址

      Username——服务器用户名

      Remote Directory——传输的远程目录

      Use password authentication, or use a different key——此选项可另设置其他的密码

      四、 全局工具配置

      进入Global Tool Configuration设置全局工具设置,这里首先我们得设置git,这个不设置后面可能就拉取不到代码了。再然后设置MSBuild这个设置就是用来给项目进行编译的。

       分享图片

       

       

       

      构建

      到这里安装和配置都已经结束了。我们可以正式开始构建项目了。这里我们分为对.Net .Net Core项目进行集成。配合使用则是Git进行代码的提交及拉取。

      这里我们选择开始构建一个自由风格的项目。

       分享图片

       

      然后进行项目描述填写

       分享图片

       

       

       

      这里就开始设置源代码管理了。选择git并输入地址。随后点击高级,设置用户名和密码,然后返回此页面选择刚设置的证书即可

       分享图片

       

       

       

      然后开始构建触发器,这里我设置的触发器的时间是每分钟轮询是否触发。时间大家可以根据情况而定

       分享图片

       

       

       

      这里的构建环境,大家可以视情况而定。

       分享图片

       

       

       

      到这里就正式开始构建配置了。这里我选择的是使用MSBuild构建VS项目。

       分享图片

      分享图片

       

       

      /t:Rebuild /p:Configuration=Release /p:DeployOnBuild=true;PublishProfile=FolderProfile /p:OutputPath=D:\Jenkins_Publish

       

      MSBuild Build File——构建的目录(例如我的就填写的C:\Windows\ServiceProfiles\LocalService\.jenkins\workspace\Test_Net\WebApplication1\WebApplication1.csproj) Command Line Arguments——构建的命令 Rebuild ——重新生成 Configuration=Release——生成Release版本 DeployOnBuild=true;PublishProfile=FolderProfile——设置运行部署生成,并且执行FolderProfile目录下的生产目录(FolderProfile文件在Properties目录中) OutputPath——输出路径

       

      这里我看开始配置构建完成之后的操作的短信配置了。

       分享图片

      分享图片

      分享图片

       

       

       

       

      到这里就已经都配置完成了,我们可以返回主页面开始构建了。

       分享图片

       

       

       

      点击立即构建,不一会我们就收到了邮件

      分享图片

       

       

       

       

      到这里我们使用git加上jenkins搭建的.Net 项目持续集成就完成了。那么我们接下来看对于.Net Core项目如何进行持续集成的呢。因为.Net Core 项目可以部署在Linux上,所以下面我们就以Linux作为服务器。在本地进行集成然后发布到Linux。其他的操作都是一样的,主要在构建操作和构建后操作不同。我们下面主要介绍构建操作和构建后操作。

       分享图片

       

       

       

      dotnet restore dotnet build dotnet publish -c:Release -r centos.7-x64 --self-contained false   -o C:\Windows\ServiceProfiles\LocalService\.jenkins\workspace\Test_Net_Core\WebApplication2\bin\Release\netcoreapp2.2\centos.7-x64 echo 压缩开始 cd C:\Windows\ServiceProfiles\LocalService\.jenkins\workspace\Test_Net_Core\WebApplication2\bin\Release\netcoreapp2.2 7z a -tzip publish.zip C:\Windows\ServiceProfiles\LocalService\.jenkins\workspace\Test_Net_Core\WebApplication2\bin\Release\netcoreapp2.2\centos.7-x64 echo 压缩结束

       

      dotnet restore——还原
      
      dotnet build ——构建
      
      dotnet publish——发布
      
      -c:Release ——Release 版本
      
      -r centos.7-x64 ——linux版本
      
      --self-contained false ——框架依赖
      
      -o D:\Jenkins_CorePublish ——发布文件到此目录下

       

       

      后面增加了一个压缩命令,将发布文件压缩成一个压缩包,这个是方便后续上传到服务器的。SSH上传仅上传文件。不带上传文件夹。所以我们需要进行压缩。后续上传到服务器再进行解压。

      然后开始配置构建后操作,一样的需要配置邮件信息,邮件信息与上面的配置一样即可。这里我们主要配置如何连接SSH

       分享图片

       

       

       

      这里需要注意的是上传的源文件。这里基目录是你的jenkins工作目录,所以需要相对于填写位置

      这里配置上传文件及解压等操作然后重新启动linux服务器上的服务完成发布。

      cd /home/hlz
      
      rm -f publish
      
      unzip publish.zip
      
      rm -f publish.zip
      
      cd /root
      
      systemctl  enable Test.service
      
      systemctl  start Test.service
      
      systemctl  status Test.service

       

      总结

        到这里在windows上使用jenkins持续集成就完成了。中间还有一些细节需要另行配置的都可以自由发挥,主要流程大概就是这么多了。这里的是通过在本地继续集成然后通过Publish over SSH插件传输到linux服务器进行.Net Core项目的部署的。那么我们也可以直接在Linux上部署Jenkins,这样就不需要这一步连接服务器的操作了。可以直接在服务器上一次性解决问题。

       


        逃避不一定躲得过,面对不一定难受.转身不一定最软弱.

       

      欢迎大家扫描下方二维码,和我一起踏上设计模式的闯关之路吧!

       

        分享图片

      相关文章
      相关标签/搜索
      今期管家婆大图 玄机图香港挂牌正版彩图六合彩资料大全香港马会资料白小姐中特玄机香港挂牌之全篇 吉林市| 景泰县| 佛坪县| 敖汉旗| 浦城县| 衡东县| 绵阳市| 高要市| 宜宾市| 瓦房店市| 罗源县| 克东县| 乌鲁木齐县| 盈江县| 莱州市| 攀枝花市| 康定县| 平遥县| 五大连池市| 威远县| 格尔木市| 平阴县| 平邑县| 赫章县| 甘谷县| 青神县| 泗水县| 东海县| 二连浩特市| 上杭县| 内丘县| 蕉岭县| 桐城市| 晋州市| 古蔺县| 偏关县| 汝南县| 陇西县| 介休市| 南澳县| 台中县| 泰宁县| 望城县| 马龙县| 平利县| 田林县| 昭平县| 桐城市| 外汇| 柳林县| 永昌县| 新田县| 长泰县| 金平| 枞阳县| 九龙城区| 平谷区| 沂水县| 剑阁县| 柏乡县| 巴东县| 施甸县| 客服| 广州市| 漾濞| 临桂县| 巴楚县| 陕西省| 黄冈市| 汉川市| 天等县| 安仁县| 建宁县| 恭城| 忻州市| 都江堰市| 澄城县| 金门县| 甘德县| 新沂市| 汶川县| 壶关县| 五河县| 桂阳县| 改则县| 肃宁县| 余干县| 吉安县| 信丰县| 福安市| 通榆县| 朝阳市| 定州市| 宁蒗| 沈阳市| 沙田区| 宁南县| 永新县| 游戏| 耿马| 股票| 阿坝| 东丽区| 衢州市| 全州县| 岗巴县| 东城区| 大庆市| 昌邑市| 遵义县| 山阳县| 灵台县| 乳源| 内黄县| 灵璧县| 大安市| 铁岭县| 正定县| 名山县| 蒙城县| 阿勒泰市| 开化县| 贵德县| 罗田县| 阜城县| 夏津县| 同仁县| 辽宁省| 会东县| 遂溪县| 白河县| 洛南县| 米脂县| 湖北省| 福清市| 威信县| 景东| 广州市| 银川市| 航空| 石门县| 松滋市| 封开县| 新密市| 沙河市| 福海县| 定远县| 泽库县| 锡林浩特市| 玛纳斯县| 安溪县| 天峨县| 三江| 莎车县| 收藏| 万山特区| 江北区| 祥云县| 陕西省| 克东县| 霸州市| 乌拉特中旗| 杨浦区| 呼和浩特市| 云霄县| 淮北市| 成安县| 当雄县| 资溪县| 西城区| 陆川县| 肥西县| 洱源县| 宁武县| 黑河市| 会泽县| 彭州市| 贺兰县| 巍山| 长顺县| 旺苍县| 和静县| 简阳市| 吉安市| 桃江县| 资溪县| 牡丹江市| 赤水市| 洛宁县| 伊春市| 读书| 璧山县| 健康| 阿尔山市| 贵溪市| 北宁市| 阳西县| 台南市| 尚志市| 辰溪县| 宝鸡市| 榆社县| 康平县| 南京市| 巢湖市| 泗洪县| 依兰县| 成安县| 宜宾市| 嵩明县| 梅州市| 浮梁县| 浦城县| 西宁市| 巩留县| 岗巴县| 丰都县| 阿尔山市| 双牌县| 河北区| 沙洋县| 腾冲县| 武夷山市| 耒阳市| 禄丰县| 社会| 阿克| 湄潭县| 乐山市| 类乌齐县| 米易县| 四会市| 应城市| 肥城市| 南靖县| 容城县| 华宁县| 富民县| 灵璧县| 文安县| 布拖县| 友谊县| 祁阳县| 永昌县| 平湖市| 博罗县| 长顺县| 奎屯市| 普洱| 萨迦县| 永寿县| 乌什县| 民乐县| 雷山县| 成安县| 库车县| 双江| 汶上县| 宜兴市| 布尔津县| 五莲县| 张家港市| 盐亭县| 资溪县| 宁晋县| 合山市| 太仆寺旗| 新密市| 普洱| 观塘区| 吉林市| 原阳县| 江门市| 阳朔县| 宁强县| 阿克陶县| 布尔津县| 澎湖县| 保德县| 垣曲县| 平定县| 伊宁市| 防城港市| 本溪市| 谢通门县| 德兴市| 海兴县| 织金县| 西乌珠穆沁旗| 格尔木市| 芜湖县| 祥云县| 双鸭山市| 北流市| 门头沟区| 北宁市| 崇仁县| 苍梧县| 周至县| 巍山| 本溪| 尼玛县| 平凉市| 格尔木市| 石棉县| 通江县| 英德市| 泸州市| 富顺县| 和平县| 修水县| 鹿泉市| 大方县| 阿城市| 陆丰市| 镇沅| 淄博市| 共和县| 永春县| 龙陵县| 商都县| 崇仁县| 余江县| 廉江市| 韩城市| 湘西| 建水县| 西充县| 株洲市| 滕州市| 瓦房店市| 榆社县| 都匀市| 阳朔县| 滨海县| 新和县| 临高县| 靖安县| 清水县| 庆元县| 宜良县| 黄骅市| 马鞍山市| 曲水县| 汾阳市| 正阳县| 永德县| 和政县| 东光县| 营口市| 文登市| 汝州市| 宁津县| 仙游县| 集贤县| 津南区| 丹巴县| 云阳县| 诸暨市| 文水县| 新晃| 新密市| 乌拉特前旗| 巴里| 额尔古纳市| 亚东县| 连云港市| 盐边县| 满城县| 淄博市| 河西区| 丹东市| 社旗县| 灵山县| 海南省| 阿图什市| 阿巴嘎旗| 扎兰屯市| 吐鲁番市| 从江县| 柳江县| 荔浦县| 上饶市| 峡江县| 辽宁省| 曲松县| 开平市| 正镶白旗| 双牌县| 琼中| 金门县| 沙雅县| 通化市| 江陵县| 得荣县| 江孜县| 苗栗市| 开原市| 周宁县| 新邵县| 息烽县| 门源| 固镇县| 滁州市| 五台县| 汽车| 金塔县| 江口县| 平顶山市| 科技| 广丰县| 连南| 通河县| 龙里县| 友谊县| 普宁市| 维西| 扶余县| 剑河县| 台湾省| 江阴市| 大渡口区| 开阳县| 蒲城县| 敦煌市| 清涧县| 玛沁县| 皮山县| 新和县| 喜德县| 田林县| 安仁县| 淮阳县| 松江区| 航空| 桂平市| 嵊州市| 贡觉县| 郯城县| 工布江达县| 德州市| 陵水| 苍南县| 封开县| 尼玛县| 体育| 清水河县| 繁昌县| 云安县| 基隆市| 大洼县| 宿州市| 陈巴尔虎旗| 宁安市| 广灵县| 平泉县| 哈巴河县| 雷波县| 双峰县| 厦门市| 敖汉旗| 凤翔县| 禹州市| 怀仁县| 上林县| 白山市| 沐川县| 大港区| 团风县| 台东县| 洮南市| 新丰县| 清原| 呼图壁县| 乌拉特前旗| 宁陵县| 江北区| 贵南县| 乌什县| 连南| 永胜县| 桑植县| 凤台县| 扎兰屯市| 宝坻区| 岳池县| 临朐县| 龙井市| 出国| 兰考县| 西盟| 黄山市| 大方县| 长海县| 项城市| 定西市| 石台县| 白水县| 扎兰屯市| 宁乡县| 许昌县| 黄冈市| 永福县| 德阳市| 海南省| 洞口县| 泰安市| 农安县| 保亭| 宜宾县| 胶南市| 镶黄旗| 特克斯县| 礼泉县| 建瓯市| 井陉县| 定安县| 荥阳市| 时尚| 双辽市| 营山县| 汪清县| 铜鼓县| 泾阳县| 通辽市| 宿松县| 黎川县| 武冈市| 嘉禾县| 宜章县| 越西县| 天等县| 滕州市| 铅山县| 杭州市| 集贤县| 苏尼特右旗| 新巴尔虎左旗| 五台县| 聂荣县| 拜泉县| 阿坝县| 达拉特旗| 从江县| 睢宁县| 绿春县| 嘉兴市| 拉孜县| 开封县| 青铜峡市| 阳泉市| 大冶市| 临澧县| 镇雄县| 庄浪县| 扎鲁特旗| 汤原县| 安徽省| 亳州市| 呼玛县| 土默特右旗| 永济市| 怀仁县| 高陵县| 辉县市| 巴里| 志丹县| 延津县| 门源| 乌鲁木齐县| 常宁市| 中超| 长乐市| 宾川县| 太原市| 镇平县| 宣威市| 台北县| 汾西县| 嘉善县| 莱州市| 龙门县| 营山县| 锦屏县| 班戈县| 壤塘县| 兴宁市| 淮阳县| 盘锦市| 固原市| 江北区| 富阳市| 务川| 公安县| 襄垣县| 澄江县| 长沙县| 扎鲁特旗| 米脂县| 厦门市| 合作市| 梅河口市| 永顺县| 育儿| 鸡西市| 岳西县| 洛阳市| 博罗县| 高州市| 商丘市| 泰安市| 无为县| 广灵县| 子洲县| 辰溪县| http://m.yaftnx.fit http://wap.vpufvt.fit http://blvzgj.fit http://wap.vkazod.fit http://wap.wqqttw.fit http://m.dgoecb.fit http://www.vjscny.fit http://wlvdyp.fit http://m.gqpzgb.fit http://www.pnqysh.fit http://blndle.fit http://m.ephefn.fit http://m.bm1961xeasurez.fit http://snjqkl.fit http://wap.hlbzcz.fit http://wap.bm1961lowerz.fit http://www.dmhtma.fit http://www.bm1961xousez.fit