设为首页 收藏本站
查看: 1264|回复: 0

[经验分享] Jenkins在Windows系统dotnet平台持续集成

[复制链接]

尚未签到

发表于 2018-1-7 12:37:32 | 显示全部楼层 |阅读模式
  之前写过一篇文章是在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>  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=&quot;$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets&quot; />  

  
<Target Name=&quot;BeforeBuild&quot;>
  

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

  
</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=&quot;$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets&quot; />  

  

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

  

<Target Name=&quot;MyBuildScriptTarget&quot;>  

  
<TransformXml Source=&quot;Web.config&quot; Transform=&quot;Web.$(Configuration).config&quot; Destination=&quot;Web.config&quot; />
  

  
...other build tasks...
  

  
</Target>
  

  

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

  

<?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?>  
<nlog xmlns=&quot;http://www.nlog-project.org/schemas/NLog.xsd&quot;  xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:xdt=&quot;http://schemas.microsoft.com/XML-Document-Transform&quot;>
  
<targets async=&quot;true&quot;>
  
<target xdt:Transform=&quot;Insert&quot;  name=&quot;elastic&quot; xsi:type=&quot;ElasticSearch&quot; uri=&quot;http://10.1.101.54:9200/&quot;  index=&quot;WebAppInit&quot; documentType=&quot;logevent&quot;>
  
<field name=&quot;logger&quot; layout=&quot;${logger}&quot; layoutType=&quot;System.String&quot; />
  
</target>
  
</targets>
  
<rules>
  
<logger xdt:Transform=&quot;Insert&quot; name=&quot;*&quot; minlevel=&quot;Trace&quot; writeTo=&quot;elastic&quot; />
  
</rules>
  
</nlog>
  

  

上面我们在Release模式下,增加了NLog输出到ElasticSearch的配置节。

2. Microsoft.Build.Tasks.v4.0编译问题Build Failure issue:
  could not be loaded from the assembly &quot;C:\Program Files (x86)\MSBuild\12.0\bin\amd64\Microsoft.Build.Tasks.v4.0.dll&quot;. 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)>
  <UsingTask AssemblyFile=&quot;$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll&quot; TaskFactory=&quot;CodeTaskFactory&quot; >

  ...
  3) Then future proof it like so:

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

  ...

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。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-432551-1-1.html 上篇帖子: Jenkins的安装与配置 下篇帖子: jenkins+git+maven搭建自动化部署项目环境
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表