如题:本文将介绍如何在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持续集成环境的更多相关文章

  1. Windows系统的Jenkins持续集成环境

    Windows系统的Jenkins持续集成环境 如题:本文将介绍如何在Windows环境下运用Jenkins部署持续集成环境.之所以写本文,是因为在最近工作当中,学习使用Jenkins时,确实遇到了一 ...

  2. windows系统下Jenkins 持续集成安装使用

    先要下载安装Tomcat,基于Java的web项目可以通过Tomcat运行.下载Jenkins,注意要安装在Tomcat的webapps目录下.安装完Jenkins会自动通过浏览器打开http://l ...

  3. 基于Kubernetes/K8S构建Jenkins持续集成平台(上)-2

    基于Kubernetes/K8S构建Jenkins持续集成平台(上)-2 Kubernetes实现Master-Slave分布式构建方案 传统Jenkins的Master-Slave方案的缺陷 Mas ...

  4. 基于Kubernetes/K8S构建Jenkins持续集成平台(下)

    基于Kubernetes/K8S构建Jenkins持续集成平台(下) Jenkins-Master-Slave架构图回顾: 安装和配置NFS NFS简介 NFS(Network File System ...

  5. 基于Kubernetes/K8S构建Jenkins持续集成平台(上)-1

    基于Kubernetes/K8S构建Jenkins持续集成平台(上)-1 Jenkins的Master-Slave分布式构建 什么是Master-Slave分布式构建 Jenkins的Master-S ...

  6. Docker+Jenkins持续集成环境(4):使用etcd+confd实现容器服务注册与发现

    前面我们已经通过jenkins+docker搭建了基本的持续集成环境,实现了服务的自动构建和部署,但是,我们遇到一个问题,jenkins构建出来的镜像部署后,需要通过ip:port去访问,有什么更好的 ...

  7. Docker+Jenkins持续集成环境(5): android构建与apk发布

    项目组除了常规的java项目,还有不少android项目,如何使用jenkins来实现自动构建呢?本文会介绍安卓项目通过jenkins构建的方法,并设计开发一个类似蒲公英的app托管平台. andro ...

  8. Jenkins持续集成环境, 如何自定义 maven repositories

    假设自定义的仓库路径为“/opt/repository”,那么在“系统管理-系统设置”中,修改“全局MAVEN_OPTS”的值为如下的内容: -Dmaven.repo.local=/opt/repos ...

  9. Jekens 配置多项目SCM GitLab+Jenkins持续集成环境

    参考: 搭建GitLab+Jenkins持续集成环境图文教程 https://blog.csdn.net/ruangong1203/article/details/73065410 Jenkins中配 ...

随机推荐

  1. collections --Counter

    collections 模块--Counter 目的是用来跟踪值出现的次数.是一个无序的容器类型,以字典的键值对形式存储,其中元素为 key,其计数作为 value.计数值可以是任意的 Integer ...

  2. LeetCode题目总结(一)

    我的代码在github上,https://github.com/WINTERFELLS/LeetCode-Answers 这里只提供个人的解题思路,不一定是最好的. Problems1-20 寻找两个 ...

  3. python 发信实例

    转自:http://www.cnblogs.com/lonelycatcher/archive/2012/02/09/2343463.html 文件形式邮件   #!/usr/bin/env pyth ...

  4. Nginx集群之WCF分布式身份验证(支持Soap)

    目录 1       大概思路... 1 2       Nginx集群之WCF分布式身份验证... 1 3       BasicHttpBinding.ws2007HttpBinding. 2 4 ...

  5. MyBatis单个多个参数传递

    一.传入单个参数: public List<XXBean> getXXBeanList(String xxCode); <select id="getXXXBeanList ...

  6. MicroPython+北斗+GPS+GPRS:TPYBoardv702短信功能使用说明

    转载请以链接形式注明文章来源(MicroPythonQQ技术交流群:157816561,公众号:MicroPython玩家汇) TPYBoardv702是目前市面上唯一支持通信定位功能的MicroPy ...

  7. HTML 中有用的字符实体

    HTML 中有用的字符实体

  8. slave延迟很大优化方法

    一般而言,slave相对master延迟较大,其根本原因就是slave上的复制线程没办法真正做到并发.简单说,在master上是并发模式(以InnoDB引擎为主)完成事务提交的,而在slave上,复制 ...

  9. 【转载】Linux cgroup资源隔离各个击破之 - io隔离

    Linux Cgroup blkio子系统的用法.   blkio子系统支持的两种IO隔离策略 .1. (Completely Fair Queuing 完全公平队列)cfq io调度策略,支持按权重 ...

  10. 使用Three.js 基本组件以及流程

    1. 创建场景 var scene = new THREE.Scene(); 2. 创建相机,设置可视范围 var camera = new THREE.PerspectiveCamera(45,  ...