去年年底,得益于公司引入 Jenkins,让我们在持续集成方面迈出了第一步,本文不赘述如何安装 Jenkins,主要关注点在于配置 .Net 环境。另外本文是在 Windows 环境下安装的 Jenkins 进行操作。 一、安装环境 首先我们需要先准备几个安装包,将它们安装到 Windows 上: .NET Framework 4.6.1 https://www.microsoft.com/zh-cn/download/details.aspx?id=49982 Microsoft Build Tools 2015 https://www.microsoft.com/zh-CN/download/details.aspx?id=48159 .NET Framework 4.6.1 Developer Pack https://www.microsoft.com/zh-CN/download/details.aspx?id=49978 NuGet x86 Commandline https://dist.nuget.org/index.html 第一个当然是大家熟悉的 .NET Framework 运行环境了; 第二是 MSBuild,虽然平时我们使用 Visual Studio 都是图形界面编译、发布程序,但实际上 Visual Studio 是去调用 MSBuild 来进行各种操作的,所以我们要想让 Jenkins 也能自动编译代码,也要为它准备一套 MSBuild。 第三个包为 .NET Framework 4.6.1 开发人员包(Developer Pack),在过去称为 Targeting Pack,里面包含了一堆程序集。像是早期版本的 Visual Studio 2013,发布之时并没有 .NET Framework 4.6.1,要想让它支持就需要安装这个开发人员包。如果不安装的话,后期编译 4.6.1 的程序时会提示找不到 System.Object、System.Attribute 程序集的错误。4.6.1 的开发人员包包含了 4.0、4.5、4.6 Targeting Pack 的内容,安装 4.6.1 的包就不需要安装 4.0 其他版本的包了。另外如果需要中文支持,需要先安装英文版,再安装中文语言包。 最后一项为 NuGet 的控制台程序,在编译程序之前,先需要使用 NuGet 进行包还原。这个软件不需要安装,放在一个固定的位置就行,例如放在 D:\Tools\CI 下。 二、安装 Jenkins 插件 进入 […]
View Details博主的博客Head很有意思,截图下来,分享给大家: Jenkins是一个持续集成的环境,它是java开发的,大叔认为它的工作流程是 从源代码拉一个项目下来到它本地(可以配置定时机制) 恢复相关程序包nuget 编译程序 发布程序 现在说一下在配置jenkins里要注意的几个地方: jenkins的构建工作目录和job目录说明 构建目录:C:\Program Files (x86)\Jenkins\workspace 工作目录:构建目录\任务job名称 nuget插件安装 插件管理-添加nuget 因为在工作时,你的目录为程序的sln所在目录,所以直接添加构建脚本nuget restore即可,因为当前目录就是你需要的项目目录! msbuild插件的安装 系统插件-msbuild 全局配置-配置你电脑上msbuild.exe的路径 在你的nuget构建下面,添加这个msbuild块
1 |
/t:ResolveReferences;Compile /t:_CopyWebApplication /p:Configuration=Release /p:WebProjectOutputDir=C:\Jenkins_Publish /p:OutputPath=C:\Jenkins_Publish\bin |
这两部完成后,你就可以“立即构建”你的项目了,它会从源代码服务器上拉最新代码,然后到工作目录,去nuget恢复包,build编译包包! 这个资料希望可以帮到刚学jenkins的学生! from:https://www.cnblogs.com/lori/archive/2017/07/06/7126895.html
View Details在引入自动化部署工具的时候,我们对比了jenkins和gitlab CI,jenkins有非常丰富的插件,配置起来方便。gitlab CI更倾向于脚本配置,当然jenkins也可以使用pipeline实现全脚本化配置(everything is code,哈哈)。我们这里主要讲述jenkins的自动化部署。 基本组合是jenkins+git+msbuild+python,实现从代码仓库拉取、编译、打包、部署、自动化测试。(.net core和framework4.6.1可以不依赖msbuild构建,将在下一篇文章中讲述) 一、安装环境 1.jenkins是java生态圈的产品,需要安装jdk 2..net项目依赖.net framework,安装需要的framework版本(如framework4.5.1) 3.安装构建工具msbuild 4.安装nuget 5.安装jenkins 二、配置jenkins 1.安装好jenkins后,进入“系统管理”->“插件管理”,安装git和msbuild这两款插件。 2.安装好插件后,新建一个项目,选择“构建一个自由风格的软件项目”,然后点确定。 3.源码管理选择git。 4.添加构建步骤,构建一个项目 5.项目需要nuget获取程序包的,可以使用批处理来实现,继续添加构建步骤: 6.nuget restore 命令获取项目需要程序包 Rebulid:构建 Configuratiom = Release:按release打包 DeployOnBuild = true/false:是否打包 PublishProfile=pub100:pub100是VS打包的配置文件 注意:这里的Msbuild Version选择了vs2017里的,jenkins插件库中的msbuild版本太低,编译经常出错,最简单的做法就是安装VS,然后在“系统管理”->“全局工具配置”中配置VS工具中的msbuild路径 7.构建触发器,jenkins提供定时构建及轮询机制。轮询是设置一段时间间隔,去代码仓库检测是否有更新,有更新触发构建。 8.保存,选择“立即构建” 9.构建成功 10.控制台日志 部署服务器和自动化测试都由python实现,感兴趣的可以看我另外一篇文章。 from:https://www.cnblogs.com/shenh/p/8946404.html
View Details非真实项目,就是熟悉使用jenkins 一、要做什么 入门教程,所以啰嗦点,基础点。 如上图: 有一台公网的linux服务器,一台家里的pc(develop1)和一台家里的笔记本电脑(develop2)。还有工程是存储在开源中国上。 要实现的功能就是: 通过jenkins启动一个job,这个job会被分配到从机slave(develop1)上 然后develop1会从git上下载项目,并且使用msbuild编译项目,利用winrar打包项目 将上一步打包好的项目发送到develp2上 在develop2上解压项目,调用脚本进行部署服务 二、把jenkins跑起来 这里使用docker来部署jenkins,docker最厉害的地方就是部署方便,当然jenkins在windows上的部署也很方便容易,主要就是为了学习docker。.Net程序的编译最好还是在开发机上,因为开发机上的编译环境最全,基本上装了vs就都有了。如果想单独弄一台服务器专门用于编译.Net项目,并且不想装vs,那可能要费点功夫在编译环境的搭建上了。使用jenkins有一个重要的思想就是jenkins扮演的是调度者的身份,把一些零碎的工作串联起来。 当初第一次把jenkins跑起来,我居然天真的以为可以用jenkins编译.Net项目,因为jenkins上会装一个MSBuild的插件。然而并不是这样滴,因为jenkins仅仅是一个调度者的身份,具体干事的还是这些从机,或者本机的一些编译命令。 在Ubuntu上安装Docker照着教程弄,还是很容易。 下载jenkins镜像,并且在Docker上运行起来,这里怎么下载怎么用都有详细说明,仔细看看 访问jenkins页面,设置一个账户,一些基本的插件安装,之后就能看到这个页面了 三、配置节点(从机) 先配置开发机,也是编译用的机器develop1。 看到jenkins左边的菜单项:系统管理->管理节点->新建节点 输入一个节点名称,选中Permanent Agent,点击ok进入节点的详细配置页面 远程工作目录:就是从机的一个文件夹,这里要写绝对路径,我的就配置成:E:\jenkins_node 标签:相当于一个分组,多个从机可以分配到同一个标签下,我们这里用得少,就一个从机一个标签了,配置成node1 用法:因为只有这台机子可以编译.Net项目,所以配置成只允许运行绑定到这台机器的job 启动方法:这个后面有个帮助文档,点开可以看一下,选Launch agent via Java Web Start,这个的话就是要在从机上运行一个java的文件,这个东西就是一个代理,他会和jenkins服务器建立一条TCP通道,各种命令的传输,文件的拷贝就是通过这个代理和服务器建立的通道完成的。 Availability:选择keep this agent online as much as possible 然后保存,看到节点列表如下: 点击develop1,看到如下: 点击Launch这个按钮,会下载一个文件下来,slave-agent.jnlp,这个东西需要从机安装Java才能运行。安装好java之后,双击这个文件,就能运行起来,但是在网页节点列表上还是显示链接失败。这个时候看上图,还有一个方法Run from agent command line:,下面有个slave.jar包,下载下来,运行整个java命令,注意路径问题。之后就会显示连接上了。再用刚才我们的那个slave-agent.jnlp文件运行,发现也能链接上了。这个时候去看一下E:\jenkins_node,发现里面已经多了一些东西了。一个从机节点的配置就是如此,另外一台用于部署的机器也是如此,这里就略过了。 三、工程:一个毫无用处的服务 这里就是为了演示服务的部署,所以具体做什么不重要。但有个东西很好用,需要说一下,就是这个Topshelf。这个东西最厉害的地方就是能很容易地把一个控制台应用程序包装成服务运行起来,调试的时候使用控制台输出观察,具体要部署的时候,只需要在控制台应用程序.exe后加参数,就能运行为服务。可以看下教程,很简短,因为使用很简单。所以这里直接贴代码了。 DoServie.cs
1 2 3 4 5 6 7 8 9 10 11 12 |
public class DoService { public void Start() { } public void Stop() { } } |
Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
class Program { static void Main(string[] args) { HostFactory.Run(config => { config.Service<DoService>((setting) => { setting.ConstructUsing(x => new DoService()); setting.WhenStarted(x => x.Start()); setting.WhenStopped(x => x.Stop()); }); config.StartAutomatically(); config.EnableServiceRecovery(recoveryConfig => { recoveryConfig.RestartService(0); }); config.SetDescription("test Jenkins"); config.SetDisplayName("testJenkins"); config.SetServiceName("testJenkins"); }); } } |
安装服务的脚本install.bat,先卸载以前的服务,再安装服务,再启动,这个%~dp0就是dos下的一些变量吧,意思是bat文件所在路径
1 2 3 4 5 |
%~dp0DoNothingService.exe uninstall %~dp0DoNothingService.exe install %~dp0DoNothingService.exe start |
卸载服务的脚本uninstall.bat
1 |
%~dp0DoNothingService.exe uninstall |
好,把这个东西上传到开源中国上。 四、在jenkins上配置一个编译.Net项目的job 回到主界面 菜单列表:新建,如下: 选择第一项,构建一个自由风格的软件项目,ok确定,进入到详细配置页面 这个页面先用到基本的3个模块==Genera,源码管理,构建== General 基本信息里要注意红框中的部分,它的意思就是指定这个Job在哪个节点上运行,还记得我们上面创建的从机node1么,这里就是指定这个Job会交到node1上来执行。 源码管理 我这个项目是公开的,所以不需要身份验证信息,如果你的是私有项目,把账号密码填写一下就可以了。再有一个就是注意分支。源码管理就配置完了。 构建 再说构建之前,需要安装一个插件。先保存一下这个工程的配置。然后回到主菜单:系统管理->管理插件->可选插件,找到MSBuild Plugin,安装,稍等片刻,回到刚才工程的配置。 在构建下选择Build a Visual Studio project or solution using MSBuild,填写Command Line Arguments就行了,这里要注意一个路径问题,解决方案文件所在的路径,这里可以保存后,在项目页面点击立即构建,在里面看输出日志,哪里不对,慢慢调试。此时,node1下的路径为*E:\jenkins_node\workspace\NetServer*,这个节点代理从开源中国上把项目下载到了工作目录下,所以,编译参数的路径是以NetServer开始的。试几次之后,基本就能编译通过了。 注意: 从机需要安装git。 编译成功之后,我们得到了一堆.exe和dll,显然不利于传输,我们就用WinRar打个包,开发机要装winrar哦,并且添加到系统路径中。打包肯定是在编译成功之后执行的步骤,所以我们再增加一个构建步骤,并选择Execute Windows batch command,把我们的打包命令添加到当中 进入到输出文件目录,把Release文件夹打包为release.rar,注意-ibck参数是让winrar在后台运行。 […]
View Details