码迷,mamicode.com
首页 > Windows程序 > 详细

Jenkins在Windows系统dotnet平台持续集成

时间:2015-09-19 16:29:27      阅读:456      评论:0      收藏:0      [点我收藏+]

标签:

        之前写过一篇文章是在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平台持续集成

标签:

原文地址:http://www.cnblogs.com/wintersun/p/4821606.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!