前言

  什么是持续集成呢?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. Nacos(一):Nacos介绍

    前言 6月份阿里开源的Nacos出了1.0.1版本,从去年7月份第一个release版本到现在一直在默默关注 官方的版本规划为:Nacos从0.8.0开始支持生产可用,1.0版本可大规模生产可用,2. ...

  2. Appium+Python+Genymotion ------环境配置

    前言 之前总是在找方向,也研究了很多的工具,终于找到了适合自己的一套,打算把学习的过程做一个记录,给自己加深印象,也希望能给其他人一些帮助. 一.工具准备 1.Appium  //  http://a ...

  3. Code signing is required for product type 'Unit Test Bundle' in SDK 'iOS 11.0.1'

    Code signing is required for product type 'Unit Test Bundle' in SDK 'iOS 11.0.1' 进入 projects and lis ...

  4. Spring-Boot:拦截器注解范例

    package com.example.aop; import java.lang.annotation.Documented; import java.lang.annotation.Element ...

  5. Unity 自定义Inspector面板时的数据持久化问题

    自定义Inspector面板的步骤: Unity内创建自定义的Inspector需要在Asset的任意文件夹下创建一个名字是Editor的文件夹,随后这个文件夹内的cs文件就会被放在vstu生成的Ed ...

  6. 基于 Vue+Mint-ui 的 Mobile-h5 的项目说明

    Vue作为前端三大框架之一,其已经悄然成为主流,学会用vue相关技术来开发项目会相当轻松. 对于还没学习或者还没用过vue的初学者,基础知识这里不作详解,推荐先去相关官网,学习一下vue相关的基础知识 ...

  7. Kafka集群环境配置

    Kafka集群环境配置 1 环境准备 1.1 集群规划 Node02 Node03 Node04 zk zk zk kafka kafka kafka 1.2 jar包下载 安装包:kafka_2.1 ...

  8. Redis学习总结(一)--Redis入门

    Redis 概念 1.Redis 是什么 Redis 是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理. 2.Redis 能干什么 Redis 支持字符串.哈希 ...

  9. Spring学习之旅(十五)--SpringBoot

    在使用 Spring 的过程中,有时候会出现一些 ClassNotFoundException 异常,这是因为 JAR 依赖之间的版本不匹配所导致的.而 Spring Boot 就能避免绝大多数依赖版 ...

  10. Python数据类型详解——字典

    Python数据类型详解--字典 引子 已经学习了列表,现在有个需求--把公司每个员工的姓名.年龄.职务.工资存到列表里,你怎么存? staff_list = [ ["Kwan", ...