前言

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

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

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

安装

  这里我采用的是使用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——这里设置的是发件人信息(12345678@qq.com-在这里就输入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="" marginwidth="" topmargin="" marginheight=""    

    offset="">    

    <table width="95%" cellpadding="" cellspacing=""  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="" 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="" width="100%" />

$FAILED_TESTS<br/>

<h4><font color="#0B610B">最近提交(#$SVN_REVISION)</font></h4>

<hr size="" 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.-x64 --self-contained false   -o C:\Windows\ServiceProfiles\LocalService\.jenkins\workspace\Test_Net_Core\WebApplication2\bin\Release\netcoreapp2.\centos.-x64

echo 压缩开始

 cd  C:\Windows\ServiceProfiles\LocalService\.jenkins\workspace\Test_Net_Core\WebApplication2\bin\Release\netcoreapp2.

 7z a -tzip publish.zip C:\Windows\ServiceProfiles\LocalService\.jenkins\workspace\Test_Net_Core\WebApplication2\bin\Release\netcoreapp2.\centos.-x64

echo 压缩结束

 

dotnet restore——还原

dotnet build ——构建

dotnet publish——发布

-c:Release ——Release 版本

-r centos.-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,这样就不需要这一步连接服务器的操作了。可以直接在服务器上一次性解决问题。


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

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

  

jenkins在windows上自动化部署.Net(.Net Core)项目的更多相关文章

  1. .NET持续集成与自动化部署之路第一篇——半天搭建你的Jenkins持续集成与自动化部署系统

    .NET持续集成与自动化部署之路第一篇(半天搭建你的Jenkins持续集成与自动化部署系统) 前言     相信每一位程序员都经历过深夜加班上线的痛苦!而作为一个加班上线如家常便饭的码农,更是深感其痛 ...

  2. 基于Jenkins,docker实现自动化部署(持续交互)

      前言 随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致.基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化.因此 ...

  3. 基于Jenkins,docker实现自动化部署(持续交互)【转】

      前言 随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致.基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化.因此 ...

  4. 利用Powershell在IIS上自动化部署网站

    本文主要讲如何通过Powershell在IIS上自动化部署ASP.NET网站,而不涉及Powershell的基本语法,如果没有Powershell基础的同学也可以把本文作为学习Powershell的基 ...

  5. Jenkins+SVN+Maven+shell 自动化部署实践

      JAVA环境中利用Jenkins+svn+maven进行自动化部署实践   一. 前言2 1.介绍jenkins2 1.本地项目打包2 2.通过secureCRT工具,手动传输到服务器2 3.然后 ...

  6. jenkins+git+maven搭建自动化部署项目环境

    简介    折腾了两个晚上,趁着今晚比较有空,把jenkins+git+maven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.co ...

  7. Zabbix agent 在windows上安装部署

    Zabbix agent 在windows上安装部署 1.下载与解压 地址: http://www.zabbix.com/downloads/2.4.4/zabbix_agents_2.4.4.win ...

  8. 在windows 上编译部署Rap2

    在windows 上编译部署Rap2 引言 安装需要的环境 安装后端站点 创建数据库 在全局安装pm2 和 typescript 配置mysql,redis 数据库链接配置 初始化 编译 初始化数据库 ...

  9. Primecoin在windows上的部署和启动服务

     Primecoin在windows上的部署和启动服务: 一.从官方获得Primecoin的windows版安装包: 二.一路像安装客户端一样的安装: 三.安装成功后它会自动弹出客户端运行,同步数据, ...

随机推荐

  1. 前端面试题集锦(一)之HTML部分

    前端的发展日新月异,前端开发也早已从原来的切图套页面,变成了现在的非常复杂的技术体系,近期由于找工作,面试了很多家单位,也总结了一部分前端面试中经常会遇到的面试类型,并一一解答.主要分为HTML.CS ...

  2. intellij idea 2019 安装使用教程

    一.安装 idea   2019.2   链接:https://pan.baidu.com/s/1acx_P23W463it9PGAYUIBw 提取码:4bky 双击运行idea.exe 点击Next ...

  3. java算法(4)---静态内部类实现雪花算法

    静态内部类单例模式实现雪花算法 在生成表主键ID时,我们可以考虑主键自增 或者 UUID,但它们都有很明显的缺点 主键自增:1.自增ID容易被爬虫遍历数据.2.分表分库会有ID冲突. UUID: 1. ...

  4. java io读取性能对比

    背景 从最早bio的只支持阻塞的bio(同步阻塞) 到默认阻塞支持非阻塞nio(同步非阻塞+同步阻塞)(此时加入mmap类) 再到aio(异步非阻塞) 虽然这些api改变了调用模式,但真正执行效率上是 ...

  5. 使用flash2print 代替 printflash 将office文档 转为flash 在页面中播放

    前一些日子公司需求把用户上传的一些word等 文档 能像百度文库那样 显示给用户, 但是如果是直接显示office文档的话就需要  些控件的支持 .非常的不友好,所以 一开始我就想能不能转成pdf 来 ...

  6. (四十二)c#Winform自定义控件-进度条扩展

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...

  7. Java函数式编程原理以及应用

    一. 函数式编程 Java8所有的新特性基本基于函数式编程的思想,函数式编程的带来,给Java注入了新鲜的活力. 下面来近距离观察一下函数式编程的几个特点: 函数可以作为变量.参数.返回值和数据类型. ...

  8. 使用base64编码把背景添加到CSS文件中

    最近博客背景图片的外链挂了,没办法,只好另找办法. 在博客园后台,有一个“文件”菜单,可以上传自己的文件,我就打算把图片传到里面.但却发现了一个很反人性的设置:不允许上传jpg,png文件,允许上传的 ...

  9. Freemarker提供了3种加载模板目录的方法

    Freemarker提供了3种加载模板目录的方法 原创 2016年08月24日 14:50:13 标签: freemarker / Configuration 8197 Freemarker提供了3种 ...

  10. 2013-2014 ACM-ICPC Pacific Northwest Regional Contest L.Languages

    题意略. 思路: 这种字符串的模拟题,应该熟练使用stringstream. 详见代码: #include<bits/stdc++.h> using namespace std; map& ...