之前写过一篇文章是在CentOS上构建.net自动化编译环境, 今天这篇是针对于Windows平台的环境。

       Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,

Jenkins是由Sun的前员工开发的,它的根基是Java,但也可以用在非Java的项目里,比如PHP、Ruby on Rails、.NET。持续集成相关的工具有很多。它提供了Web界面,用户可以在界面

上配置Job,每个Job都包含一系列的构建步骤。Jenkins可以完成开头那个场景中所提到的所有验证工作,它还能更进一步做自动化部署或者一键式部署。

 

我们开始吧, 环境 Windows Server 2012

1. Install Jenkins

http://ftp-nyc.osuosl.org/pub/jenkins/windows/jenkins-1.629.zip

2. Install MsBuild, Git Plugin for Jenkins

GIT client plugin

Shared library plugin for other Git related Jenkins plugins.

GIT plugin

This plugin integrates GIT with Jenkins.

MSBuild Plugin

This plugin makes it possible to build a Visual Studio project (.proj) and solution files (.sln).

SCM API Plugin

This plugin provides a new enhanced API for interacting with SCM systems.

Credentials Plugin

This plugin allows you to store credentials in Jenkins.

插件可以在这儿找到 https://wiki.jenkins-ci.org/display/JENKINS/Plugins

3. Install Git

从官网下载安装 http://www.git-scm.com/downloads

4. Install .net Framework 4.5.2

官网下载安装 http://www.microsoft.com/en-us/download/details.aspx?id=42642

5. Install 微软Build Tools 2013

官网下载安装 http://www.microsoft.com/en-us/download/details.aspx?id=40760

6. 假设本地已安装VS2013, 复制本地 C:\Program Files (x86)\MSBuild\Microsoft 下所有文件到服务器相同位置上

笔者是看到是这些文件

打包放置到服务器上面对应路径。

7. Install Web Deploy v3.0

官网下载安装 http://www.iis.net/downloads/microsoft/web-deploy

8. Install Artifact Deployer Plugin

This artifact allows you to choose which directories you will like to deploy to the target destination

https://wiki.jenkins-ci.org/display/JENKINS/ArtifactDeployer+Plugin

Jenkins的系统配置

Git配置

MsBuild配置

邮件

 

其它问题

1. 编译时转换Web.config文件

例如, 我们需要在Release模式下,替换Web错误显示机制,数据库连接字符串, 日志文件输出级别或目录等配置都可以。

If you add the following xml to the bottom of the .csproj file for your web application, you'll ensure that the config transformation occurs before every build:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />

<Target Name="BeforeBuild">

<TransformXml Source="Web.Base.config" Transform="Web.$(Configuration).config" Destination="Web.config" />

</Target>

Edit: In response to your comment, you should be able to use Web.config as the source parameter in the TransformXml task (see step #2). If you only want to perform the config transform in the build script, follow these instructions:

1) Import WebApplication.targets in your build script like so:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />

2) Execute the TransformXml build task in your build script target:

<Target Name="MyBuildScriptTarget">

<TransformXml Source="Web.config" Transform="Web.$(Configuration).config" Destination="Web.config" />

...other build tasks...

</Target>

转换NLog.config,也可以参考Web.config,实现NLog.Debug.config与Nlog.Release.config, 如下示例的NLog.Release.config文件:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<targets async="true">
<target xdt:Transform="Insert" name="elastic" xsi:type="ElasticSearch" uri="http://10.1.101.54:9200/" index="WebAppInit" documentType="logevent">
<field name="logger" layout="${logger}" layoutType="System.String" />
</target>
</targets>
<rules>
<logger xdt:Transform="Insert" name="*" minlevel="Trace" writeTo="elastic" />
</rules>
</nlog>
上面我们在Release模式下,增加了NLog输出到ElasticSearch的配置节。

2. Microsoft.Build.Tasks.v4.0编译问题Build Failure issue:

could not be loaded from the assembly "C:\Program Files (x86)\MSBuild\12.0\bin\amd64\Microsoft.Build.Tasks.v4.0.dll". Could not load file or assembly 'file:///C:\Program Files (x86)\MSBuild\12.0\bin\amd64\Microsoft.Build.Tasks.v4.0.dll

Ideally you should be doing the following:

1) Open your NuGet.targets file: C:\Builds\1\xxxx\FTP Processor (New)\src.nuget\nuget.targets

2) Identify the task referencing the old DLL.

<UsingTask AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll" TaskFactory="CodeTaskFactory" >

...

3) Then future proof it like so:

<UsingTask AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v$(MSBuildToolsVersion).dll" TaskFactory="CodeTaskFactory" >

...

3. Git中文乱码问题

进入git安装目录,改一下配置就可以基本解决:

etc\gitconfig:

[gui]
encoding = utf-8
[i18n]
commitencoding = gbk
[svn]
pathnameencoding = gbk

说明:打开 Git 环境中的中文支持。pathnameencoding设置了文件路径的中文支持。

 

4.  资料

官网: http://jenkins-ci.org/

源代码: https://github.com/kohsuke/hudson

 

总结

        持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。集成软件的过程不是新问题,如果项目开发的规模比较小,比如一个人的项目,如果它对外部系统的依赖很小,那么软件集成不是问题,但是随着软件项目复杂度的增加(即使增加一个人),就会对集成和确保软件组件能够在一起工作提出了更多的要求-要早集成,常集成。早集成,频繁的集成帮助项目在早期发现项目风险和质量问题,如果到后期才发现这些问题,解决问题代价很大,很有可能导致项目延期或者项目失败。

        本文简单介绍了持续集成的概念并着重介绍了如何基于 Jenkins 快速构建持续集成环境。通过具体实例的描述,相信读者对 Jenkins 的基本功能和实现方法有个更清楚地认识和理解。其实,Jenkins 的功能远不至文中所述的这些,Jenkins 还有详尽的日志处理和持续集成构建状态的分析等功能。希望在进一步的学习和应用中与大家分享。


希望对您企业应用开发与企业信息化有帮助。 其它您可能感兴趣的文章:

在CentOS上构建.net自动化编译环境

Jenkins知识地图

软件开发的专业化

IT基础架构规划方案一(网络系统规划)

IT基础架构规划方案二(计算机系统与机房规划规划) 
IT基础架构规划方案三(IT基础软件和系统规划)

企业应用之性能实时度量系统演变

云计算参考架构几例

智能移动导游解决方案简介

人力资源管理系统的演化

如有想了解更多软件研发 , 系统 IT集成 , 企业信息化 等资讯,请关注我的微信订阅号:

作者:Petter Liu

出处:http://www.cnblogs.com/wintersun/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

该文章也同时发布在我的独立博客中-Petter Liu Blog

Jenkins在Windows系统dotnet平台持续集成的更多相关文章

  1. 研发协同平台持续集成之Jenkins实践

    导读 研发协同平台有两个核心目标,一是提高研发效率 ,二是提高研发质量,要实现这两个核心目标,实现持续集成是关键之一. 什么是持续集成 在<持续集成>一书中,对持续集成的定义如下:持续集成 ...

  2. jenkins在windows系统及linux环境安装

    一.下载 jenkins是当前持续集成(Continuous integration,简称 CI)的主流工具,在项目中得到了广泛的推广和应用. 下载地址: https://jenkins.io/dow ...

  3. Jenkins +Maven+Tomcat+SVN +Apache项目持续集成构建

    详解Jenkins +Maven+Tomcat+SVN +Apache项目持续集成 一:前言 1. Jenkins jenkins版本大全http://mirrors.jenkins-ci.org/ ...

  4. 基于Jenkins的开发测试全流程持续集成实践

    今年一直在公司实践CI,本文将近半年来的一些实践总结一下,可能不太完善或优美,但的确初步解决了我目前所在项目组的一些痛点.当然这仅是一家之言也不够完整,后续还会深入实践和引入Kubernetes进行容 ...

  5. 使用jenkins配置.net mvc网站进行持续集成二

    上一篇使用jenkins配置.net mvc网站进行持续集成一只是简单介绍了jenkins构建站点到本地服务器,这一篇,就来讲解如何部署站点到指定的服务器上面. 1.IIS远程发布配置 1.在服务器管 ...

  6. 基于Jenkins Pipeline的ASP.NET Core持续集成实践

    最近在公司实践持续集成,使用到了Jenkins的Pipeline来提高团队基于ASP.NET Core API服务的集成与部署效率,因此这里总结一下. 一.关于持续集成与Jenkins Pipelin ...

  7. Jenkins学习总结(4)——持续集成,持续交付,持续部署之间的区别

    经常会听到持续集成,持续交付,持续部署,三者究竟是什么,有何联系和区别呢? 假如把开发工作流程分为以下几个阶段: 编码 -> 构建 -> 集成 -> 测试 -> 交付 -> ...

  8. jenkins集群(四) -- 持续集成

    一.jenkins配置git 1.安装源码管理器  git:http://updates.jenkins-ci.org/download/plugins/git/ 去上面的网址中把离线插件下载下来,然 ...

  9. 使用jenkins配置.net mvc网站进行持续集成

    最近好久没有更新文章了,因为好久没有写代码了,以至于我不知道同大家分享些什么,刚好,今天突然叫我学习下jenkins每日构建,我就把今天的学习笔记记录下来,这其中很多东西都是公司同事之前调研总结的,我 ...

随机推荐

  1. 如何在 ASP.NET MVC 中集成 AngularJS(2)

    在如何在 ASP.NET MVC 中集成 AngularJS(1)中,我们介绍了 ASP.NET MVC 捆绑和压缩.应用程序版本自动刷新和工程构建等内容. 下面介绍如何在 ASP.NET MVC 中 ...

  2. 设置 iOS 应用的图标和名称

    Xcode 8.1 设置 iOS 应用的图标和名称的方法: 设置应用图标: 1.在 Resources 中添加图片: 2.在 Icon file 的属性值填写图标文件的名称. 设置应用名: 1.修改 ...

  3. MVC遇上bootstrap后的ajax表单模型验证

    MVC遇上bootstrap后的ajax表单验证 使用bootstrap后他由他自带的样式has-error,想要使用它就会比较麻烦,往常使用jqueyr.validate的话只有使用他自己的样式了, ...

  4. python第一天 - dict

    dict key-value集合. d = { ': 'a', ': 'b', ': 'c' } (一).获取集合长度:len(d) = 3(二).获取值: 方式一:d[key];例:d['1'] = ...

  5. 白话贝叶斯理论及在足球比赛结果预测中的应用和C#实现

    离去年“马尔可夫链进行彩票预测”已经一年了,同时我也计划了一个彩票数据框架的搭建,分析和预测的框架,会在今年逐步发表,拟定了一个目录,大家有什么样的意见和和问题,可以看看,留言我会在后面的文章中逐步改 ...

  6. PHP中AJAX的使用(完整实例【大牛可飘过】)

    有一段时间不写关于AJAX的东西了,最近和同学参加个比赛,要做一个类似博客的东西,用到了AJAX的东西,在写东西之前为了再熟悉一下AJAX,自己做了个关于AJAX的小事例与大家分享一下. AJAX在j ...

  7. vc下打印透明背景图片

    一.前言 刚接到个任务,要把带有透明背景的章子图片打印出来,开始觉得不是很简单吗,直接用vc自动生成的打印功能不就ok了.不过问题却不是想像的那么简单! 二.窗口中显示透明图片 在窗口中显示图片,可以 ...

  8. c# 实现简单的socket通信

    服务端 using System.Net.Sockets; using System.Net; using System.Threading; namespace SocketServer { cla ...

  9. 一张H5游戏页引起的思考

    最近开发了一个移动端的端午活动页面,做完后就想写点东西总结一下,感受最深的就是打草稿. 刚开始并没有打草稿,直接开干,越做到后面就越觉得代码很乱很杂,非常不舒服,做到哪个页面写这个页面的CSS,没有大 ...

  10. 千呼万唤始出来:Apache Spark2.0正式发布

    我们很荣幸地宣布,自7月26日起Databricks开始提供Apache Spark 2.0的下载,这个版本是基于社区在过去两年的经验总结而成,不但加入了用户喜爱的功能,也修复了之前的痛点. 本文总结 ...