jenkins配置有用摘抄笔记

vaelailai vaelailai     2022-10-04     446

关键词:

使用jenkins配置.net mvc5网站自动构建全过程记录

 转自:http://www.cnblogs.com/baiyunchen/p/4724350.html

持续集成是个简单重复劳动,人来操作费时费力,使用自动化构建工具完成是最好不过的了。最终可以实现的一个效果是,svn提交代码,服务器端自动编译并发布。

所使用的版本:windows server 2008 r2,并使用它自带的iis服务器。

1.机器上安装好.net framework 4.5及.net framework 4.5 sdk(下载地址:https://msdn.microsoft.com/zh-cn/windows/hardware/hh852363),如果你的机器上已经安装好了vs,并能够编译.net 项目,那可以跳过这一步。

2.下载jenkins到服务器,并安装。

  地址:http://jenkins-ci.org/ 

你可以看到这样的界面:

3.点击左边的系统管理,选择插件管理,安装一个新的插件叫MSBuild Plugin

如下图,打勾之后点击直接安装即可。

4.安装完成后重启Jenkins,然后点击左侧的系统管理,进入系统设置中。

5.找到下面的MSBuild节点,并点击新增MSBuild,然后填写名称和MSBuild的路径,我的配置如下:

6.在系统管理中找到Subversion节点(注:我使用的是svn代码管理工具,如果你使用其他的,请配置其他节点),选择为目前使用的版本。

这时候,最基本的环境就配置起来了,不过这时候的Jenkins随便谁都能进来改配置,自己百度一下,把身份验证启用了吧,相信作为高级攻城狮的你,这个不在话下。

环境好了之后,我们来新增一个项目进去。let's go

1.点击页面上面的创建一个新任务,选择构建一个自由风格的软件项目,并填写好名称。

 2.告诉Jenkins你的svn账号,以便它来获取你当前svn上面的程序。Repository中,填写好你要自动构建的项目的svn地址,在Credentials这一项中,你需要先点击add,填写好您的用户名和密码(本文中未说明的项均保持默认即可)。

3.构建触发器中勾选Poll SCM,日程表中填写* * * * *,表示每一分钟它去svn服务器看一次有没有最新的版本。

4.在构建下面点击增加构建步骤,并选择Build a Visual Studio project or solution using MSBuild,在Command Line Arguments这一项中,填写我下面的这段代码

/m trunk/xxx.sln /t:Rebuild  /p:Configuration=Release /p:DeployOnBuild=true;PublishProfile=xxx  /p:TargetFrameworkVersion=v4.5

/m 后面写你要编译的sln文件,/p:后面是一个个的参数,Configuration=Release表示release方式的编译,PublishProfile=xxx指的是你的发布的文件名称,TargetFrameworkVersion表示你的目标.net framework版本,我用的是4.5,所以就写4.5就行了。

我的配置如下(网上有人说把/m参数写到MSBuild Build File那里也行,我尝试了一下没有成功):

在此过程中,还遇到了很多的问题,但是有时候真的是稀里糊涂的解决的,大概我给大家说说我遇到的问题:

1.开发机上的MSBuild文件夹需要copy到服务器.Microsoft ASP.NET也需要copy到服务器。

2.服务器上需要安装.net framework的sdk,你需要编译哪个版本的项目就装哪个版本的sdk

从下面额链接找到对应的SDK下载:

http://msdn.microsoft.com/en-us/library/windows/desktop/ff851942.aspx

Win8.1 对应 .NET Framework V4.5.1

Win8   对应 V4.5

2.编译mvc项目废了很大的劲,过程中走了很多的弯路,最后我发现,服务器上还是少一些SDK(我目前还没有搞明白这些SDK要从哪里下载)

我把开发机器上C:\Program Files (x86)\Microsoft SDKs\Windows复制到服务器上,并且要把对应的注册表的项备份了恢复到服务器,最后编译还是报错了,说是找不到aspnet_merge这个东西,找了许久,找到了http://stackoverflow.com/questions/16070886/vs-2012-publish-cant-find-the-valid-aspnetmergepath这篇参考文章,然后把C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Transform文件夹下面的Microsoft.Web.Publishing.AspNetCompileMerge文件中其中的一个<PropertyGroup>下面新增了下面的代码(注:我用的是4.5的FrameWork,所以是v8.0A这个文件夹,4.5.1应该是v8.1A这个文件夹下面)

 <TargetFrameworkSDKToolsDirectory>C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\</TargetFrameworkSDKToolsDirectory>

它前后的内容如下,大家去找AspnetMergeName去区分就差不多了,服务器上只有记事本,所以无法提供行号。

 <PropertyGroup>
    <GetAspNetMergePathDependsOn>
      GetFrameworkPaths;
    </GetAspNetMergePathDependsOn>
  </PropertyGroup>
  <Target
      Name="GetAspNetMergePath"
      DependsOnTargets="$(GetAspNetMergePathDependsOn)"
      Condition ="'$(GetAspNetMergePath)' != 'false'">
    <PropertyGroup>
      <TargetFrameworkSDKToolsDirectory>C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\</TargetFrameworkSDKToolsDirectory>
      <AspnetMergeName>aspnet_merge.exe</AspnetMergeName>
      <AspnetMergePath Condition="Exists('$(TargetFrameworkSDKToolsDirectory)$(AspnetMergeName)')">$(TargetFrameworkSDKToolsDirectory)</AspnetMergePath>
    </PropertyGroup>
    <Error Condition="'$(AspnetMergePath)' == '' Or !Exists($(AspnetMergePath))"
           Text="Can't find the valid AspnetMergePath" />
  </Target>

3.如果失败原因是缺少某个系统的程序集(比如:system.web.mvc),那么你一定要在本地项目中,检查一下这个程序集的属性中的复制到本地这一项是否为True,不为True,改为True即可。

4.其实中间还有很多的错误,都是慢慢解决掉的,如果你不介意,可以给服务器上安装一个vs 2012 express for web,也不大,安装包600M左右,能为你省不少事儿。

5.过程中我遇到一个非常蛋疼的问题,一直提示我找不到system.web.http这个dll,但是我确定我有这个dll,而且是复制到本地=True,但是死活就是编译不过,提示我没有这个dll,少命名空间,到现在都没有搞明白,最后是我安装了vs 2012 express好像就没有了,如果哪位大牛知道为啥,请告诉我,万分感谢。

念大学有用么摘抄

如果你觉得《论语》很烂、VB也很烂,而且你很想在某种公开或私人的场合中鄙视它,那最好先将它研究一遍,也好让那些企图反驳你的人在最大程度上无言以对。其实只有认真做完了一件事,了解了它,才有资格去评价它。哲... 查看详情

jenkins部署笔记

Jenkins部署部署环境可复制下载链接使用迅雷下载1.2Java环境部署1.2.1解压二进制包返回如下结果表示配置成功:1.3启动Jenkins1.3.1下载JenkinsJenkins的下载地址选择好要下载的版本后,可以复制下载链接,使用wget下载到部署路径,我... 查看详情

jenkins自动部署笔记(二)全局工具配置

参考技术A前提条件:1.已安装并启动Jenkins。2.已安装下列插件。(1)Gitplugin可能默认已经安装(2)Gitclientplugin可能默认已经安装(3)MavenIntegrationplugin(4)PublishOverSSH用于远程部署(5)GitlabHookPlugin用于gitlab提交触发自动部署以... 查看详情

飞机上上网摘抄笔记

读51CTO文章,摘抄笔记:根据中国民航总局关于飞机上便携式电子设备(PED)的声明,从2018年1月18日零时开始,中国用户在乘坐飞机时再也不需要关机了。飞机上网得卫星模式和地面基站模式(ATG)两大模式。目前飞机上网采用的波... 查看详情

一些关于three.js的摘抄笔记

加载多个geometry的方式:(可以利用three.js自带convert_obj_three.py文件将obj文件转换成json文件)functionloadModel(){loader=newTHREE.JSONLoader();loader.load("js/your_model.js",function(geometry){box=[];group=newTHREE.Object3D() 查看详情

jenkinsjenkins自动化部署笔记(代码片段)

Jenkins安装dnfDNF(DandifiedYum)是新一代的RPM软件包管理器。安装java环境,Jenkins依赖java环境安装Jenkinsdnf安装Jenkins访问IP地址8080端口Jenkins配置nginx配置vscode安装安插Remote-SSH配置github管理项目构建触发器:遇到的一些问题和解... 查看详情

摘抄笔记

我正在学李老师的第二季,第一季看了一点点,直接就看第二季了,因为第二季是oop嘛,要是先看第一集又需要用很长时间,为了省时间我迫不及待的直接从项目看的,前面粗略的看了看,在之前我通过其他书籍和视频学的php,但是看到李... 查看详情

habse入门级别的笔记(摘抄)

最最常用的指令:1.查看hbase有什么表list2.创建一个表:create‘表名‘,‘字段1’,‘字段二’,。。。3.往表中插入一条数据:put‘表名‘,‘rowkey’,‘字段一:’,‘字段一栏目一名称’,‘字段一栏目一’,.....4.查看整... 查看详情

《产品经理》读书笔记

...不错的读物!下面是摘抄的部分主要内容,个人认为比较有用的就记录下来。-------------------------- 查看详情

jenkins搭建笔记总结(代码片段)

...ff09;4.1搭建Docker环境4.2docker容器安装gitlab5.GitLab提交代码6.Jenkins配置Maven+Git自动构建jar包(第一步)7.Jenkins将 查看详情

devops学习笔记-jenkins实现基础ci/cd操作

在之前的devops工具链中完成了jenkins以及gitlab配置之后,可以实现基础的CI/CD操作。操作流程整体的操作的流程如下所示:在开发环境配置好代码之后,将代码上传到gitlab,jenkins拉取gitlab的代码,由maven插件build,打包好后,构建docke... 查看详情

读书笔记----10日摘抄整理(10)

阿兰·德波顿说,“人类不快乐的唯一原因是他不知道如何安静地呆在他的房间里。”2017/10/2木心曾说:“天堂无趣,有趣的是人间,唯有平常的事物才有深意。我追索人心的深度 却看到了人心的浅薄--木心《云雀叫了一整... 查看详情

jenkins学习笔记:很简单的发布一次

...取一些文件,然后推送到Targetserver的某个目录. 准备1.Jenkins需要安装的插件:『PublishoverSSH』 2.全局配置:系统管理-->系统设置-->PublishoverSSH 创建项目1. 新建-->EnterItemName-->构建一个自由风格的自由风格的... 查看详情

读书笔记----10日摘抄整理(11)

心思细腻思维缜密为人处世几乎没有什么纰漏要么谋生,要么谋爱万宝全书缺个角不怕慢就怕站结绳记事倾囊相授别再职场上对人推心置腹泪目略过不谈读的囫囵吞枣一知半解怦然心动杂沓脚步声闻声不见形影阳光很旺树影婆娑... 查看详情

markdown有用的jenkins链接和解决方法(代码片段)

查看详情

读书笔记----10日摘抄整理(08)

扣人心玄没有目标的闲晃籍籍无名默默无闻覆巢之下焉有完卵主动请缨含沙射影人生没有如果,只有结果和如果呢喃细语端倪耳聋齿落风足残年 时间场合的漫长涤荡中苦行僧搬的生活若教的小狮子废寝忘食鸡毛蒜皮棋逢对手... 查看详情

redis学习基础概念摘抄(代码片段)

...edis个人笔记学习redis学习redis是什么Redis简介redis的下载和配置redis的数据类型redis学习redis是什么REmoteDIctionaryServer(Redis)是一个由SalvatoreSanfilippo写的key-value存储系统,是跨平台的非关系型数据库。Redis是一个开源的使用ANSIC语言... 查看详情

jenkins和gitlab集成自动构建

Jenkins安装插件Jenkins上需要安装如下插件GitlabHookPlugin,GitLabPluginJob配置在需要自动触发的Job中选择BuildTriggers进行如下操作,生成的token和webhook地址稍后有用Gitlab上配置Webhook返回值200表示正常与jenkins连接了,这样下次push代码后就... 查看详情