使用jenkins进行项目的自动构建部署

jenkins 简介 Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:持续的软件版本发布/测试项目和监控外部调用执行的工作。 官网地址地址: https://jenkins.io 下载安装启动 CentOS 下用yum进行安装启动

下载war包放到tomcat中启动 服务器 yum 安装速度太慢了,最终我选择了这种方式,本地下载好war包传到服务器上的tomcat容器下,然后启动 下载地址:http://mirrors.jenkins.io/war-stable/latest/jenkins.war 初始化 在浏览器中输入url打开jenkins的后台控制页面 初始化界面 初始化成功后会自动生成一个管理员密码放到指定位置,根据页面提示复制密码粘贴到输入框就可以登录了 初始登录界面 登录成功后回让你选择插件的安装,可以选择建议的安装也可以自己进行选择,不清楚的话可以使用建议的安装 初始登录界面 由于建议安装的插件比较多,安装的过程有点慢,多等待一会 初始登录界面 安装的过程也可能因为网络等一些原因安装会失败,现在可以无视它,点击Continue,后面再进行手动的安装 安装完成 安装完成后最好新创建一个管理员账户代替之前的临时自动生成的密码账户 创建新的管理员账户 初始化完成,进入后台管理界面 初始化完成 后台管理界面 安装插件 之前初始化的时候,有些插件安装失败,可以在用到的时候来手动修复它,没用到的话就可以暂且不理它,不影响jenkins的使用 点击左侧边栏的“系统管理”,就可以看了插件安装的一些错误信息 插件错误信息 在“系统管理”中往下拉,找到“管理插件”点击进去就可以查看和管理所有的插件,点击“可选插件”显示所有jenkins支持的插件,在右上角的“过滤”输入框中,输入需要安装的插件名就可以筛选查找到想要的插件 查找插件 选中要安装的插件输入框,点击安装就可以在线安装需要的插件,当然由于网络的原因也可能再次安装错误,或者安装的比较慢。我们可以点击插件名进入插件的主页,里面有该插件的详细信息并能下载hpi文件进行手动安装 插件详情 在“管理插件”的页面中点击高级选项,我们可以在下面找到“上传插件”,上传下载好的插件,点击“上传”,系统就会自动上传安装该插件。 上传插件 gitlab的配置 集成gitlab,让jenkins能够直接读取修改gitlab中的代码,方便项目的构建 安装gitlab-plugin 在“系统管理” -> “系统设置“ -> “Gitlab” 中配置对应的gitlab信息 点击“Test Connection”测试下配置是否成功 Gitlab配置 Add Gitlab Credentials Gitlab API token Publish Over SSH 通过ssh连接远程服务器,并能执行脚本部署项目 安装publish-over-ssh 在“系统管理” -> “系统设置“ -> “Publish over SSH” 中配置对应的ssh信息 Key中填登录远程服务器的密码(ssh免密码登录) 点击"SSH Servers"后的“增加”按钮,新增一个远程服务器 点开“高级…”按钮,能进一步的配置端口等信息。 配置为Server信息后,点击"Test Configuration"按钮测试是否能够连接成功。 ssh配置 监测代码变动自动部署 点击左侧边栏的“新建”按钮,新建一个任务。 填写项目的名称,并选择一种构建的方式,此时我们选择第一个,构建一个自由风格的软件项目,然后点击“OK”按钮创建任务,并进行详细的配置 新建任务 默认设置里填写项目名和描述,并选择之前配置好的要连接的gitlab 默认配置 配置源码,填写要构建项目的源码仓库地址,并指定要构建的分支 配置源码 配置触发器,选择触发构建的方式,可以通过hook,根据jenkins提供的地址,放到gitlab中的hook配置中,就会自动触发构建。此时我们选择的是定时检测项目变动,如果检测到分支有新的变动就触发构建,如果感觉一分钟时间太频繁的话,可以自己设置时间频率。 构建触发器 […]

龙生   08 Aug 2018
View Details

批处理设置b等于一个变量数字%a%+1的数字咋写?

@echo off set a=10 set/a b=a+1 echo %b% pause :: 批处理运算的时候是使用 set/a 参数 :: 在set/a运算的时候,变量可不用使用%%括起来 :: 如: set/a b=a+1 等价于 set/a b=%a%+1 :: 中国批处理脚本联盟 from:https://zhidao.baidu.com/question/1433860877199267859.html

龙生   08 Aug 2018
View Details

为 Jenkins 配置 .NET 持续集成环境

去年年底,得益于公司引入 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 插件 进入 […]

龙生   07 Aug 2018
View Details

持续集成~Jenkins里的NuGet和MSBuild插件

博主的博客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块

这两部完成后,你就可以“立即构建”你的项目了,它会从源代码服务器上拉最新代码,然后到工作目录,去nuget恢复包,build编译包包! 这个资料希望可以帮到刚学jenkins的学生!   from:https://www.cnblogs.com/lori/archive/2017/07/06/7126895.html

龙生   07 Aug 2018
View Details

[2]jenkins部署.net平台自动化构建

在引入自动化部署工具的时候,我们对比了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

龙生   07 Aug 2018
View Details

[1]jenkins 持续部署 .net 服务

非真实项目,就是熟悉使用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

  Program.cs

  安装服务的脚本install.bat,先卸载以前的服务,再安装服务,再启动,这个%~dp0就是dos下的一些变量吧,意思是bat文件所在路径

  卸载服务的脚本uninstall.bat

  好,把这个东西上传到开源中国上。 四、在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在后台运行。 […]

龙生   07 Aug 2018
View Details

win10 2016 长期服务版激活

win10 2016 长期服务版的ISO文件中本身就带有KMS激活KEY,不用输入任何KEY,连接网络进入CMD,只要输入: slmgr /skms kms.digiboy.ir slmgr /ato 这两条命令,就可以KMS激活。 来源:https://blog.csdn.net/chaoyu168/article/details/79241506,版权归原作者所有。   from:https://blog.csdn.net/realdenny/article/details/79860701

龙生   06 Aug 2018
View Details

Docker与CI持续集成/CD

背景 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 持续集成(Continuous integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。 持续部署(continuous deployment)是通过自动化的构建、测试和部署循环来快速交付高质量的产品。某种程度上代表了一个开发团队工程化的程度,毕竟快速运转的互联网公司人力成本会高于机器,投资机器优化开发流程化相对也提高了人的效率,让 engineering productivity 最大化。 OpenShift是红帽的云开发平台即服务(PaaS)。自由和开放源码的云计算平台使开发人员能够创建、测试和运行他们的应用程序,并且可以把它们部署到云中。Openshift广泛支持多种编程语言和框架,如Java,Ruby和PHP等。另外它还提供了多种集成开发工具如Eclipse integration,JBoss Developer Studio和 Jenkins等。OpenShift 基于一个开源生态系统为移动应用,数据库服务等,提供支持。 Cloud Foundry是VMware推出的业界第一个开源PaaS云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。同时,它本身是一个基于Ruby on Rails的由多个相对独立的子系统通过消息机制组成的分布式系统,使平台在各层级都可水平扩展,既能在大型数据中心里运行,也能运行在一台桌面电脑中,二者使用相同的代码库。 Heroku作为最开始的云平台之一,从2007年6月起开发,当时它仅支持Ruby,但后来增加了对Java、Node.js、Scala、Clojure、Python以及(未记录在正式文件上)PHP和Perl的支持。基础操作系统是Debian,在最新的堆栈则是基于Debian的Ubuntu。 Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。 Cloudify 是一个云应用的编排系统,可让你的应用自动化的在各种不同的云上方便的部署。 正题 —————————————————————————————————————————————————————————————————————————— 希望对您系统架构,软件项目开发,运维管理,系统架构与研发管理体系, 信息安全, 企业信息化等有帮助。 其它您可能感兴趣的文章: 容器化实践金融业案例一 云计算参考架构几例 微服务与Docker介绍 互联网直播平台架构案例一 高可用架构案例一 某互联网公司广告平台技术架构 某大型电商云平台实践 云计算参考架构几例 移动应用App测试与质量管理一 全面的软件测试 著名ERP厂商的SSO单点登录解决方案介绍一 软件项目风险管理介绍 企业项目化管理介绍 智能企业与信息化之一 由企业家基本素质想到的 敏捷软件质量保证的方法与实践 构建高效的研发与自动化运维 IT运维监控解决方案介绍 IT持续集成之质量管理 人才公司环境与企业文化 企业绩效管理系统之平衡记分卡 企业文化、团队文化与知识共享 高效能的团队建设 餐饮连锁公司IT信息化解决方案一   from:https://www.cnblogs.com/wintersun/p/6258900.html

龙生   06 Aug 2018
View Details

C#中将字符串通过GZipStream进行压缩时的注意事项

背景, 今天在写代码时要用到GZipStream来压缩需要Web传输的数据块。原本以为GZipStream Write ->Flush ->读取对应MemoryStream数据就Okay的事情,却总是得不到正确的结果。 研究, 经过查询MSDN,原来只有在GZipStream被Dispose后,对应的MemoryStream中才会有真正的压缩数据被写入。 以下是我用来测试的代码片段(红色部分为原来的错误调用,橙色部分是正确的调用方式) string data = "<Root><PIGContent>test</PIGContent><RemoteUrl>http://www.a.com</RemoteUrl></Root>"; byte[] buffer = System.Text.UTF8Encoding.UTF8.GetBytes(data); byte[] compressedbuffer = null; //Compress buffer MemoryStream ms = new MemoryStream(); using(GZipStream zs = new GZipStream(ms, CompressionMode.Compress,true)) { zs.Write(buffer, 0, buffer.Length); //下面两句被注释掉的代码有问题, 对应的compressedbuffer的长度只有10--该10字节应该只是压缩buffer的header //zs.Flush(); //compressedbuffer = ms.ToArray(); } //只有GZipStream在Dispose后调应对应MemoryStream.ToArray()所得到的Buffer才是我们需要的结果 compressedbuffer = ms.ToArray(); 总结, 相信大家都会对GZipstream这种别扭的操作方式表示不满,微软对此也表示过歉意,但是由于其考虑到要兼容就的代码,因此即使在.Net 4.5中你还是得忍受这种不和谐的代码。 本篇小结如有不妥之处,烦请指正。   from: https://blog.csdn.net/missautumn/article/details/8351296

龙生   03 Aug 2018
View Details
1 175 176 177 432