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

        之前写过一篇文章是在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

时间: 2024-10-14 21:31:14

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

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

导读 研发协同平台有两个核心目标,一是提高研发效率 ,二是提高研发质量,要实现这两个核心目标,实现持续集成是关键之一. 什么是持续集成 在<持续集成>一书中,对持续集成的定义如下:持续集成是一种软件开发实践.在持续集成中,团队成员频繁集成他们的工作成果,一般每人每天至少集成一次,也可以多次.每次集成会经过自动构建(包括自动测试)的检验,以尽快发现集成错误.自从在团队中引入这样的实践之后,Martin Fowler发现这种方法可以显著减少集成引起的问题,并可以加快团队合作软件开发的速度. 1.集

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

原文:基于Jenkins Pipeline的ASP.NET Core持续集成实践 最近在公司实践持续集成,使用到了Jenkins的Pipeline来提高团队基于ASP.NET Core API服务的集成与部署,因此这里总结一下. 一.关于持续集成与Jenkins Pipeline 1.1 持续集成相关概念 互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuous integration,简称 CI) . 持续集成指的是,频繁地 (一天多次) 将代码集成到

明晚九点|发布系统演进与持续集成

主题:发布系统演进与持续集成 内容: 背景介绍 手动发布的阶段 自动化阶段---脚本 puppet 自主研发支持 支持容器化 持续集成 主讲师:萝卜 多年 go 语言开发经验 从事自动化运维和基础架构相关工作 背景 管理什么? 用户 权限 配置文件 软件包 服务 机器 cron 特色 支持异构系统,linux.windows 支持多种语言,java.php.c++.web 大规模部署 跨 IDC 与其它运维工具无缝集成 支持全量与增量发布 支持健康检查 支持各种并发控制 支持各种数据统计 实时性

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

今年一直在公司实践CI,本文将近半年来的一些实践总结一下,可能不太完善或优美,但的确初步解决了我目前所在项目组的一些痛点.当然这仅是一家之言也不够完整,后续还会深入实践和引入Kubernetes进行容器编排,以及通过阿里云K8S服务进行高效的云上托管,希望对各位童鞋有一点用. 一.持续集成全流程介绍 今年一直在开发我司的一个核心业务系统,一个还未上线的产品开发阶段,其中后端采用ASP.NET Core + 一系列开源组件开发微服务并且部署在Linux Docker中,前端采用React + Fl

Linux、windows系统监控平台Nagios的安装与部分错误整理

Nagios作为一款强大的跨平台监控软件,其专业性已经得到了广大系统运维人员的一致认可,友好的Web界面与数量庞大的扩展插件也为其增色不少,但其配置略微复杂,有必要予以记录: 网上有前辈已经整理了一份超级详细的配置流程,在此: Linux下Nagios的安装与配置 其中已经罗列了Linux和Windows服务器加装Nagios软件的详细步骤,只不过其中有几点需要注意: 1.在Nagios配置文件中注释是以英文分号 ';' 来表示的,不要直接复制教程中的 '#': 2.在添加和创建配置文件时,注意

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

上一篇使用jenkins配置.net mvc网站进行持续集成一只是简单介绍了jenkins构建站点到本地服务器,这一篇,就来讲解如何部署站点到指定的服务器上面. 1.IIS远程发布配置 1.在服务器管理器中安装“管理服务”(若已存在则无须再安装) 1.1 服务器管理----->角色----->web 服务器IIS 1.2 点击右下角 “添加角色服务”,弹出选择“选择角色服务”对话框. 1.3 选中“管理服务” 点击“下一步”----->点击“安装”.安装完成后,重新打开“服务器管理器”在

jenkins+svn+android studio自动化构建(持续集成)

先到Jenkins官网的Meet Jekins中看一下Installation部分,原文如下 You have several options for downloading and installing Jenkins: *Use one of the platform-specific package/installer links on the Jenkins site to install Jenkins on your system. *You can download jenkins

gitlab+jenkins+maven+docker持续集成(六)——.Jenkins获取git tags代码进行持续集成

GitFlow的工作流 如上图所示,在开发工作中,不同的代码分支对应着项目或产品的不同形态,围绕特定形态的人力投入也不相同.随着时间的推进, 我们在 开发分支 中合并产品的功能实现,产品的功能逐步完善. 当产品功能完善到一定阶段,可以交付给测试团队进行内部测试时,产品代码可以合并到 测试分支(注意,上图未体现测试分支,实际中是否需要测试分支需要具体而定),编译打包测试. 经过若干迭代测试,功能稳定成熟,产品可以发布,此时,代码合并到主干(master)分支,用于发布(TAG标记). 所以这里用T

搭建Jenkins从gitlab获取maven项目持续集成

环境 : centos7 安装Jenkins,这里选择使用service方式安装Jenkins,也可以下载Jenkins.war自己部署到tomcat下. #添加Jenkins源: $ sudo wget -O /etc/yum.repos.d/jenkins.repo http://jenkins-ci.org/redhat/jenkins.repo $ sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key