Windows Server配置Jenkins,实现监测SVN提交自动构建.net4.5的项目
1,持续集成
概念:http://baike.baidu.com/view/5253255.htm,对于大多数人而言,自动构建/自动测试/自动部署,已经很发挥它的价值了。选择上:
- 推荐jenkins,一是它比较常见,二是它能跑在windows服务器上
- CruiseControl有.net的版本,一进其官网看见醒目的文档过期提示,我就没有尝试的欲望了
- gitlab ci的web界面清爽(比jenkins好看),但是只能跑在linux上,感兴趣的同学去试验吧,所以本文是讲的jenkins。
2,msbuild
- 了解msbuild
- msdn上的一点一滴的起步
- 或者这篇文章也是个不错的入门
- 当然,你也可以走点歪门邪道,直接用sln文件生成msbuild文件
set MSBuildEmitSolution=1
msbuild <<your project>>.sln
注意: 此种情况下生成的msbuild文件只适用于本机,也就是说,它定义了一堆路径,全是你开发机器上的,同时解决方案里所有项目的属性都是一个一个配置的,不是用的变量,如果要修改的话只有批量替换。
其次,如果需要输出到其它目录,或是别的定制的需求,想绕过msbuild的学习应该是不行的
3,jenkins
- 下载jenkins,执行安装包里的install.exe,安装好后目标服务器的8080端口即可访问,而且已经添加到防火墙例外,远程亦可访问
- 配置Jenkins
- 导航到“系统管理/管理插件/可选插件”,从filter里面输入msbuild,把msbuild插件安装好,记得勾选装好后重启jenkins
- 把msbuild的目录加到环境变量里去,如果不这么做,也可以在jenkins里面配置:
- 导航到“系统管理/系统设置/msbuild”,(jenkins插件安装后并成功重启后会出现)
- 点击“新增msbuild安装”,填入名称(如msbuild4)和带文件名的路径(如C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe)
- 保存
- 新建一个job
- 新建的时候选择自由风格软件即可
- 配置好名称,选择一个源码管理,我选择SVN(subversion),该插件系统自带了,配置说明:
- Repository URL:代码仓库地址(当文本框失焦,会出现一个警告,提示没有权限,点击警告文字中的授权链接即可打开一个弹窗录入用户名密码)
- Local module directory (optional):签出代码保存的位置
- Repository depth option:选择infinity
- 如果要从多个位置签出,add more location即可
- “构建”一栏填写内容:
- msbuild version:如果你没有设置过,那么就是默认的default(前提是前面说的环境变量加了),否则你可以从下拉里选出你上一步配置过的msbuild4
- msbuild build file: 你编写的msbuild文件名
- Command Line Arguments:暂时留空
- 保存后,一个job就建成了
- 点击左侧的“立即构建”,即可开始构建,当然,99.99%的情况下你会构建失败的。
4,错误解决
如果你选择安装visual studio到服务器上,那就万事大吉了
如果嫌麻烦不安装visual studio,那么就得针对出现的问题来逐个解决了
- 错误1: 先别看错误代码,你装了.net framework没有,既然我以4.5为例,从4.0到4.5都分别装一下吧
- 错误2: 'msbuild.exe' 不是内部或外部命令,也不是可运行的程序或批处理文件。 Build step 'Build a Visual Studio project or solution using MSBuild' marked build as failure
解决:一般是你没有把msbuild路径加到环境变量里,如果加了还报这个问题,重启机器测试;如果你是在jenkins里面配置的路径还出这个问题,是不是配错了,这不属于知识性错误,不阐述。
- 错误3: error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
解决:错误已经很明确的,既然没有装vs,就把开发机器上的C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\整个目录都拷到CI服务器上,几百M,如果还嫌这个太大,那么你只需要拷贝其中的v10.0或v11.0(看你装的vs版本)这个文件夹即可。
- 错误4: C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(983,5): warning MSB3644: The reference assemblies for framework ".NETFramework,Version=v4.5" were not found. To resolve this, install the SDK or Targeting Pack for this framework version or retarget your application to a version of the framework for which you have the SDK or Targeting Pack installed. Note that assemblies will be resolved from the Global Assembly Cache (GAC) and will be used in place of reference assemblies. Therefore your assembly may not be correctly targeted for the framework you intend. [C:\Program Files (x86)\Jenkins\jobs\test\workspace\net_zkx_zkkaweb\Zkx.Jkka.Application\Zkx.Jkka.Application.csproj]
解决:你没装vs的话,windows sdk也就是缺失的,其实错误信息已经把解决方案告诉你了:
- install the SDK
- Targeting Pack for this framework version
- retarget your application to a version of the framework for which you have the SDK
- Targeting Pack installed.
既然选择不装vs了,那么也放弃安装sdk的方法吧,所以只需要指出正确的framework路径就可以了: - 我把C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5拷到任意目录,如d:\fmsdk\v4.5
- 还记得在添加Job的时候配置“构建”一节的时候,我说“Command Line Arguments”暂时不配置吧,此时你就要配置了:-p:FrameworkPathOverride="d:\fmsdk\v4.5",具体路径看你怎么复制的。
- 这篇文章就是讲的这个问题
- 有关msbuild的问题就这么些,还出现问题的话只能拿着错误号放狗搜索了,要知道,你现在除了安装了jenkins和必要的.net framework库,没有额外安装windows sdk或vs,已经省了很大功夫了。
5,svn hooks
要想在svn成功接收到代码后自动构建,就得用到svn hooks。在源码仓库目录下有一个hooks文件夹,里面列出来的就是可用的钩子“模板”,我们需要post-commit,所以你就建一个post-commit.bat即可,所以,重要的是文件名。
因为我们只做一件事,就是访问一下那个“立即构建”的超链接,链接地址右键复制出来,所以我们也没必要学习模板里的语法,只需要知道如何用一个命令来访问网址即可。 因为批处理语句本身不支持发起http请求,所以你可以选择调用IE来访问一个目标网址。我用powershell写了一个调用IE访问的脚本,本机测试成功,但是通过svn触发的过程中,完全没任何反应,如果有兴趣的,可以自己试试原生的start iexplore “构建网址”,我就不多说了,跳到下一节
6,powershell
我的这篇文章是参考我同事的同样一篇文章写的,目的是什么呢? 就是我要看能不能用最少的安装,最少的知识量做到jenkins自动构建.net framework4.5的程序。
最少安装前面做到了,除了非装不可的.net framework和jenkins本身,再无安装过程
最少知识量呢?
- 1,不去学习msbuild的语法(实测用sln生成的msbuild可用性不高,失败)
- 2,我同事用的vb来发起http请求,即使代码已经很简单了,作为一个C#的coder,既然powershell都能调用.net framework了,我自然考虑用既有知识干这件事,哪怕语法格式不熟,至少一看就懂
这就是我生成的ps1文件:
#post-commit-hook-jenkins.ps1 [Net.HttpWebRequest] $req = [Net.WebRequest]::create($args)
$req.Method = "GET"
[Net.HttpWebResponse] $result = $req.GetResponse()
一个webrequest即可,只管请求不管响应。
那么我的post-commit.bat这个脚本就这么写就行了:
# post-commit.bat powershell E:\Repositories\post-commit-hook-jenkins.ps1 网址
就是ps1文件的绝对路径,加上”网址“参数即可,这个”网址“就是上述脚本里的$args
测试一次svn commit,如愿看到jenkins的web控制台排了个任务进行构建。
Windows Server配置Jenkins,实现监测SVN提交自动构建.net4.5的项目的更多相关文章
- jenkins的 git多分支自动构建
一.先做好jenkins和gitlab的webhook自动构建 二.选择哪个分支(我这是test分支) 三.选择build Triggers 四.过滤test分支 五.保存即可
- Windows下配置Jenkins 实现自动发布maven项目至tomcat(svn+maven+tomcat)
Jenkins安装完成之后,需要我们对其配置,然后才可以实现自动部署项目. 前提 防火墙开放tomcat的8080端口 Linux(CentOS):firewall-cmd --zone=public ...
- windows server 服务器安装jenkins 并通过git拉取代码实现自动发布到IIS
Jenkins是一个开源软件,可以通过一定的配置进行自动构建,测试,部署等功能. 首先,服务器应安装好 .NET Core环境和JDK, 下载Jenkins安装包 https://www.jenkin ...
- 解决Windows Server 2012 在VMware ESXi中经常自动断网问题
最近一些开发人员反映他们使用的 Windows server2012 R2 虚拟机过段时间就远程连接不上了,ping也不通(已关闭防火墙),我们登录ESXi发现,Windows Server 的网络图 ...
- svn提交自动同步到web目录
环境:CentOS6.5 测试线 svn和web服务器在同一台机器上 SVN版本1.6 情景:在测试环境下,开发部提出希望提交到SVN的代码能自动同步到WEB站点目录下,解决每次都要传双份这 ...
- CentOS6.8下Jenkins+maven+tomcat+git+shell自动构建、部署web应用环境的搭建
参考资料:http://www.cnblogs.com/cheng95/p/6542036.html http://www.cnblogs.com/software-test/p/7068278.ht ...
- jenkins+maven+git+tomcat+salt自动构建
jenkins 安装步骤 环境: centos7,jdk1.8.0,jenkins2.165,maven3.5.2 一. 安装配置java环境 JDK1.8下载地址:http://www.orac ...
- windows server配置ftp服务器以及外网访问
在Server2012打开 服务器管理器,选择 添加角色与功能,添加Web服务下的FTP服务器 安装后. 我们现在C盘创建一个名字为FTP的文件夹,里面创建一个ftp的文件,做测试用,如图 打开服务器 ...
- Jenkins+maven+Tomcat+SVN一键自动打包部署应用到服务器
今天请教了大神,终于把jenkins给搞明白了 现在做下笔记,防止自己老年痴呆又忘了怎么配置 (截图可能不够清晰,有不清楚的随时评论打call) 机器配置: 安装配置规划 机器 192.168.169 ...
随机推荐
- xcodebuild编译ipa
#!/bin/sh # autoBuild.sh # CTest # # Created by Ethan on 14-11-3. # Copyright (c) 2014年 Ethan. All r ...
- 基于腾讯手Q样式规范Frozen UI
Frozen UI是一个开源的简单易用,轻量快捷的移动端UI框架.基于手Q样式规范,选取最常用的组件,做成公用离线包减少请求,升级方式友好,文档完善,目前全面应用在腾讯手Q增值业务中. css组件包括 ...
- 使用jQuery.form插件,实现完美的表单异步提交
传送门:异步编程系列目录…… 时间真快,转眼一个月快结束了,一个月没写博客了!手开始生了,怎么开始呢…… 示例下载:使用jQuery.form插件,实现完美的表单异步提交.rar 月份的尾巴,今天的主 ...
- MyBatis(跨表查询)
1.建立数据库表如下: DROP TABLE IF EXISTS t_demo_user; CREATE TABLE IF NOT EXISTS t_demo_user( userid ), user ...
- 如何在没有域的环境中搭建AlwaysOn(一)
对DBA而言,不需要域就可以搭建SQL Server AlwaysOn是Windows Server 2016中最令人兴奋的功能了,它不仅可以降低搭建的成本,而且还减少了部署和运维的工作量. 该特性可 ...
- 人生苦短,我用python——当我在玩python的时候我玩些什么
文章背景 家里的第一台电脑是在2006年夏天买的,10年上大学之后基本上就没人用,过没两年就当二手卖给一个熟人. 弟弟小我10岁,今年刚上初一.他在我毕业前半年就整天用妈妈的手机发短信给我,问我什么时 ...
- sublime3 插件
Sublime Text 3能用支持的插件推荐 从二月份用测试版本build 3012开始用sublime text 3,虽然很多插件在sublime text 3不工作了,因为sublime tex ...
- <dependency>
<dependency> <groupId>org.hibernate</groupId> ...
- 基于1.3.3版本tooltip的datagrid单元格tip实现
基于1.3.3版本tooltip的datagrid单元格tip实现 2013年05月25日 ⁄ datagrid ⁄ 共 6122字 ⁄ 评论数 26 ⁄ 被围观 7,033 views+ 文章目录 ...
- Design7:数据删除设计
在设计一个新系统的Table Schema的时候,不仅需要满足业务逻辑的复杂需求,而且需要考虑如何设计schema才能更快的更新和查询数据,减少维护成本. 模拟一个场景,有如下Table Schema ...