如题:本文将介绍如何在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. Web框架django[Form]组件

    新手上路 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 小试牛刀 1.创建Form类 # 创 ...

  2. 解决adb push时出现的"Read-only file system"问题

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  3. NET控件Designer架构设计

    总体结构 Designer总体上由三大部分组成:View,ViewModel和Model,这个结构借鉴了流行的MVVM模式.这三部分的职责分工是: View 负责把ViewModel以图形的方式展现出 ...

  4. 浅析Python解释器的设计

    从现代编译器的角度看,解释器和编译器的边界已经相当的模糊.我们后面的讨论说到的编译器就是Python的解释器,没有特别说明的指的是CPython的实现. 内存管理(Memory Management) ...

  5. [js高手之路]原型式继承与寄生式继承

    一.原型式继承本质其实就是个浅拷贝,以一个对象为模板复制出新的对象 function object( o ){ var G = function(){}; G.prototype = o; retur ...

  6. Android Ptrace Inject

    之前介绍了Android平台上3种常见的hook方法,而hook的前提是进程注入,通过进程注入我们可以将模块或代码注入到目标进程中以便对其空间内的数据进行操作,本篇文章介绍基于ptrace函数的注入技 ...

  7. Linux上leveldb的安装和使用

    1.首先从官网上下载leveldb进行编译 git clone https://github.com/google/leveldb.git cd leveldb make 2.将头文件和动态链接库拷到 ...

  8. Mac新手使用指南:brew安装的nginx常用命令

    安装:brew install nginx/sudo brew install nginx 启动:brew services start nginx/sudo brew services start ...

  9. 【NOIP2012】疫情传递

    题解 这题是真的烦... 越来越心疼2012年的dalao们了[不过好像dalao们都不需要本蒟蒻的心疼2333] 其实这题还有点半懂不懂... 所以把洛谷上一个比较好的题解粘过来记忆一下233 1. ...

  10. Undefined symbols for architecture arm64(其cpu架构)

    "_OBJC_CLASS_$_XXX",referenced from: 之类的问题,很多人看到这些很头疼,不知道从何下手去修改.以下是我总结的相关修改办法.如下图 这是一个很明显 ...