一步步部署基于Windows系统的Jenkins持续集成环境
如题:本文将介绍如何在Windows环境下运用Jenkins部署持续集成环境。之所以写本文,是因为在最近工作当中,学习使用Jenkins时,确实遇到了一些问题,而大多数教程文档都是基于Mac或是Linux平台。为此很是头疼,经过一番摸索,终于走通了Windows平台下的一条路。
本CI系统流程:Dev提交代码,并merge到master分支-->Jenkns获取最新代码,开始构建(解析git触发响应,build solution,run automation,get result都在此步内完成)-->构建完成发送邮件。
首先,下载安装Jenkins:https://jenkins.io/
安装完成之后可以通过访问 http://hostname:8080 进入管理页面。选择:Manage Jenkins"。

在右侧列表中选中"Configure Global Secuity",选中"Allow user to sign up",然后就可以提前注册好要赋权限的账户。若以后不允许新管理账户的注册,在取消此选中项。

接下来,在代理项下,展开代理协议,并全部选中。此处选中之后,会启用"Java Web Start Agent",否则其在创建slave时处于不可见状态。(使用此代理,还需提前安装Java,到Java官网下载一个安装即可)

再回到"Manage Jenkins"界面,选择"Manage Node",点击"New Node"创建一个新的slave,这里我们选择"Permanent Agent",也可以选择从已有的slave复制出新的节点。填写名称,远程根目录和标签,启动方法选择如图。这里的远程目录用于存储Jenkins客户端运行文件。其他设置默认值就可以了:

好了,到这里一个node就创建好了。我们可以回到Node管理界面,此时新建的node是未连接状态,可以在你的另外一台server,或本机上访问你的Jenkins页面,并点击"Launch"连接node,并将之安装为本地service。如果你是Win10系统,会出现安装错误,这时别急,先将你的IE或这Edge以管理员的方式重新启动,再次访问Jenkins尝试连接和安装。当你觉得要启用这个安装的service时,先停止服务,然后再cmd命令窗口输入“sc delete servicename"就可以删除此服务了。servicename可以再service的右键属性中查看。

创建好了node,我们就和某一台server连接上了,接下来我们需要去创建job,去完成我们需要做的工作。
回到Jenkins主页面,点击"New Item",这里我选择使用"Freestyle Project"。编辑好项目名称,描述之后,我们可以定义清楚过时的build。这里我定义为保留7天以内的build,并规定最多只保留10个build。

前面介绍过,本CI系统响应git返回的触发条件,因此需要设置一个参数接收返回的响应,并在此设置在哪个node上执行此次构建任务,即填写创建node时设置的Label:

除了在创建node时的默认设置,我们也可以在此处设置自定义的workspace,获取的代码将存储在此处:

在源代码管理项中,我们选用Git,设置好相应的git项目url和访问的用户名和密码,分支选默认的master:

获取了代码之后,选择触发方式,如果时定时轮询的方式,选择"Poll SCM",设置间隔时间即可。需要每次提交都响应,这里我选择远程触发"Trigger builds remotely",设置一个token值待用。

这时,我们需要到Git网站代码管理设置页面,添加一个"Hooks & services",并启用"Pull request"。Payload URL的格式按照上面设置的token下提示的格式设置:

完成以上步骤之后,Job的运行环境基本上就已经设置成功了,接下来就是构建自动化运行脚本了。
回到刚才的Job编辑页面,继续往下走,点击"Add build step",在下拉框中可以看到,Jenkins支持的脚本语言十分丰富。这里我们会用到Window batch和Widows PowerShell。在这里写入你的业务处理脚本,保存一下。比如输出"Jenkins CI",在Windows batch框中输入"echo Jenkins CI",保存,就可以了。
最后,需要在脚本完成之后自动发送邮件。来看看是如何配置的:
配置邮件通知之前,我们需要到"Configure System"中设置一下邮件系统的基本配置。
首先,填写好Jenkins访问地址和发件人邮箱地址。

接下来,设置SMTP邮件服务器和一些默认值,包括接收对象,主题,内容等等。如此,最简单的邮件发送配置就完成了。后面来设置具体的邮件通知。

还是回到Job编辑页面,找到"Post-build Actions"并选择"Editable Email Notification"。设置实际的接收人,内容格式和默认主题。并设置默认内容,可以配合环境变量(此处不做详解)参数化、格式化内容文体。
需要发送附件的,还可以对附件的路径、名称进行设置。最后设置好邮件发送触发条件就OK了。

这样,一个完整的Windows平台下的CI系统就建立起来了。
一步步部署基于Windows系统的Jenkins持续集成环境的更多相关文章
- Windows系统的Jenkins持续集成环境
Windows系统的Jenkins持续集成环境 如题:本文将介绍如何在Windows环境下运用Jenkins部署持续集成环境.之所以写本文,是因为在最近工作当中,学习使用Jenkins时,确实遇到了一 ...
- windows系统下Jenkins 持续集成安装使用
先要下载安装Tomcat,基于Java的web项目可以通过Tomcat运行.下载Jenkins,注意要安装在Tomcat的webapps目录下.安装完Jenkins会自动通过浏览器打开http://l ...
- 基于Kubernetes/K8S构建Jenkins持续集成平台(上)-2
基于Kubernetes/K8S构建Jenkins持续集成平台(上)-2 Kubernetes实现Master-Slave分布式构建方案 传统Jenkins的Master-Slave方案的缺陷 Mas ...
- 基于Kubernetes/K8S构建Jenkins持续集成平台(下)
基于Kubernetes/K8S构建Jenkins持续集成平台(下) Jenkins-Master-Slave架构图回顾: 安装和配置NFS NFS简介 NFS(Network File System ...
- 基于Kubernetes/K8S构建Jenkins持续集成平台(上)-1
基于Kubernetes/K8S构建Jenkins持续集成平台(上)-1 Jenkins的Master-Slave分布式构建 什么是Master-Slave分布式构建 Jenkins的Master-S ...
- Docker+Jenkins持续集成环境(4):使用etcd+confd实现容器服务注册与发现
前面我们已经通过jenkins+docker搭建了基本的持续集成环境,实现了服务的自动构建和部署,但是,我们遇到一个问题,jenkins构建出来的镜像部署后,需要通过ip:port去访问,有什么更好的 ...
- Docker+Jenkins持续集成环境(5): android构建与apk发布
项目组除了常规的java项目,还有不少android项目,如何使用jenkins来实现自动构建呢?本文会介绍安卓项目通过jenkins构建的方法,并设计开发一个类似蒲公英的app托管平台. andro ...
- Jenkins持续集成环境, 如何自定义 maven repositories
假设自定义的仓库路径为“/opt/repository”,那么在“系统管理-系统设置”中,修改“全局MAVEN_OPTS”的值为如下的内容: -Dmaven.repo.local=/opt/repos ...
- Jekens 配置多项目SCM GitLab+Jenkins持续集成环境
参考: 搭建GitLab+Jenkins持续集成环境图文教程 https://blog.csdn.net/ruangong1203/article/details/73065410 Jenkins中配 ...
随机推荐
- JavaScript的DOM编程--04--获取元素节点的子节点
获取元素节点的子节点(**只有元素节点才有子节点!!) 1). childNodes 属性获取全部的子节点, 但该方法不实用. 因为如果要获取指定的节点 的指定子节点的集合, 可以直接调用元素节点的 ...
- asp.net mvc ajax提交模型到控制器
http://blog.csdn.net/loongsking/article/details/53224473 function btn_submit() { var data = n ...
- C#用DataTable实现Group by数据统计
http://www.cnblogs.com/sydeveloper/archive/2013/03/29/2988669.html 1.用两层循环计算,前提条件是数据已经按分组的列排好序的. Dat ...
- MySQL查询相关(初级)(全文重点)
where 是约束条件 先找到表 from t1 where 条件 : 指的是把表里的数据,一条一条的记录取出来 然后 group by 分组, having 是过滤条件 指记录已经出来 聚合 cou ...
- SegmentFault错误汇总
在三个月的工作中,经常碰到SegmentFault的错误,有时候是因为计算集群问题导致,更多的时候是程序本身的问题,我计划将之后碰到的SegmentFault整合起来,一来方便日后查看,二来如果能帮助 ...
- Android与javascript中事件分发机制的简单比较
在前面两篇博客中,我们讨论了Android中的事件分发的相关内容,那么在本篇博客当中,我们就简单探讨一下html或javascript中的事件分发机制,并进行简单的对比. 在前端中,对事件进行绑定有三 ...
- Python装饰器的解包装(unwrap)
在Python 3.4 中,新增一个方法unwrap,用于将被装饰的函数,逐层进行解包装. inspect.unwrap(func, *, stop=None) unwrap方法接受两个参数:func ...
- SpringMVC 如何在页面中获取到ModelAndView绑定的值
springMVC中通过ModelAndView进行后台与页面的数据交互,那么如何在页面中获取ModelAndView绑定的值呢? 1.在JSP中通过EL表达式进行获取(比较常用) 后台:ModelA ...
- ubuntu16编译安装mysql5.7
安装环境: linux版本: ubuntu-16.04.3-desktop-amd64 mysql版本:mysql-boost-5.7.20.tar.gz 下载地址:https://dev.mysql ...
- JavaScript Html页面加载完成
//一.Html页面加载完成的JS写法 //1. $(function () { alert("窗体Html页面加载完成方法一"); }); //2. $(document ...