简介
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
主要用于:
1.持续、自动地构建/测试软件项目,如CruiseControl与DamageControl。
2.监控一些定时执行的任务。
安装和启动
- Jenkins for Windows安装
- Tomcat+Jenkins.war
- Cmd : Java -Jar Jenkins.war
其中第三种方法在各种操作系统平台上都可以使用,启动命令java -jar jenkins.war --httpPort=8082//表示使用8082端口启动Jenkins (默认端口是8080)
,
如果是windows 则安装后,在浏览器中打开localhost:8080
即可启动,如果有端口冲突,则需要修改默认端口,参考 # jenkins 修改端口号
第一次启动jenkins时,处于安全考虑,jenkins会自动生成一个随机的口令,注意控制台输出的口令,复制下来,然后再浏览器中输入:http://localhost:8080/
粘贴口令,进入安装界面,如果执行默认的安装,Jenkins就自动配置好了Maven git等常用插件.最后创建一个admin用户,然后需要输入初始化密码,会提示在用户根目录已经生成,一般都是jenkins安装目录下的.jenkins/secrets/initialAdminPassword
,输入密码后即可进入jenkins
配置jenkins
首次进入会提示安装插件,建议安装推荐的,如果是高级用户则可以选择第二个选择自己需要的插件即可,待插件安装完毕即可正常使用,在需要用到第三方插件是还可从 系统管理->管理插件->可选插件 选择过滤查找自己需要的插件
jenkins 修改端口号
1.先停止jenkins服务
2.打开"C:\Program Files (x86)\Jenkins\jenkins.xml"
修改该段<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080 --webroot="%BASE%\war"</arguments>
中的
--httpPort=8080
=> --httpPort=8081
3.重新启动jenkins服务
jenkins 基本操作
- 关闭jenkins服务
http://localhost:8080/exit
- 重新启动jenkins服务器
http://localhost:8080/restart
- 重载jenkins服务
http://localhost:8080/reload
jenkins 自定义项目路径和jenkins根目录
1.自定义项目路径:
进入没有my views - job -配置 - General -高级项目选项-选择使用“自定义的工作空间”,配置后项目不用放到jenkins默认的workspace里了。
2.更改整个jenkins的项目空间
- 先设置环境变量,变量名为JENKINS_HOME, 值为你想设置的目录 (一般情况下这样就够了,如果还是不行,就进行第二步)
- jenkins.war -> WEB-INF -> web.xml,修改此文件 (大概会在165行):
<!-- if specified, this value is used as the Hudson home directory -->
<env-entry>
<env-entry-name>HUDSON_HOME</env-entry-name>;
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value></env-entry-value>
</env-entry>
在标签<env-entry-value></env-entry-value>中添加你的路径
配置私有仓库方法 参考
Jenkins支持自动从Git服务器下载构建程序,有助于团队开发部署,如果是私有项目则需要用户名密码登录,也可直接用ssh-key方式登录.此处用oschina做演示.
- 配置ssh-key
生成SSH密钥打开终端命令工具,输入命令:ssh-keygen -t rsa -C "example@mail.com"
,
公钥内容在 ~/.ssh/id_rsa.pub
私有内容在 ~/.ssh/id_rsa -
把公钥的内容加入git@osc 的SSH密钥中
将公钥贴在osc@git用户设置的 SSH公钥
3.在Jenkins配置git ssh
在Jenkins ->Credentials->System--> Add credentials
选择 SSH Username with private key.private key选择Enter Directly,粘贴私钥key
4.Jenkins Job中配置git
取得私有git的仓库配置并安装了git插件,在源码管理选项中会出现Git选项,
配置webhook钩子使用Generic Webhook Trigger插件实现Jenkins+WebHooks(码云)持续集成
准备工作
“码云 Git@OSC”项目托管地址,这里假设我自己的项目:https://git.oschina.net/xuliugen/dlt-server.git(私有项目)
安装Generic Webhook Trigger插件
在“系统设置–插件管理–可选插件”界面搜索:Generic Webhook Trigger,可以看到,点击安装,然后重启。
插件地址:https://wiki.jenkins-ci.org/display/JENKINS/Generic+Webhook+Trigger+Plugin
搭建工作
一、创建Job
这里我的是Maven项目,所以直接使用下图中红色步骤1和2
二、配置Job
下边依次配置是:General–>源码管理–>构建触发器–>Optional filter–>构建环境–>Pre Steps–>Build–>Post Steps–>构建设置–>构建后操作 的配置。
(1)General
(2)源码管理
注意:这里指定 Build的分支为develop,只是为了在开发的时候部署开发的代码,如果没有直接就是master
关于账户密码的设置,如有问题请参考:
使用Jenkins配置Git+Maven的自动化构建:http://blog.csdn.net/xlgen157387/article/details/50353317
(3)构建触发器
直接勾选使用插件即可!
(4)Optional filter、构建环境、Pre Steps这三个部分没有进行配置,如下:
(5)Build、Post Steps、E-mail Notification
a、指定根pom文件;
b、这里由于我的项目是多环境的,如下:
我需要编译的是dev环境并且跳过测试,所以填入命令:
clean install -Pdev -Dmaven.test.skip=true -e
如果没有环境配置的话,直接忽略就可以!
c、选中:Run only if build succeeds
(6)构建后操作
我这里是部署到Tomcat容器中,关于过程不再多说,可以参考:
使用Jenkins配置Git+Maven的自动化构建:http://blog.csdn.net/xlgen157387/article/details/50353317
(7)点击Apply 保存,到此Job配置完成!
三、配置用户和Security
(1)在“系统管理–管理用户–用户列表–admin处点击进去–左边侧边栏–设置”设置用户API Token!找到等会会用!
可以进行Change!
四、配置码云WebHooks
找到WebHooks配置界面,在POST地址框中输入如下格式内容:
http://<User ID>:<API Token>@<Jenkins IP地址>:端口/generic-webhook-trigger/invoke
具体如下:
a、User ID:既是“三(1)”中的User ID,我的是admin;
b、API Token:既是“三(1)”中的API Token,例如我的是8c1d11114ab111111111fdf21111a6a97;
c、Jenkins IP地址:就是你的Jenkins的服务器IP地址,这个必须是公网IP地址,例如我的是210.41.223.54;
d、端口:就是Jenkins服务器的端口;
e、后边的内容就是Generic Webhook Trigger
插件的地址,无需改变;
例如我的配置为:
http://admin:8c1d11114ab111111111fdf21111a6a97@210.41.223.54:8010/generic-webhook-trigger/invoke
点击提交之后,界面如下:
URL后边的密码是,是jenkins用户admin的账户密码。
然后点击“测试” 看一下Jenkins是否开始运行!
到此为止就结束了?然并没有...
上面如果是多个项目,会发现,用到的url是相同的!!!导致只要有一个webhook触发,所有的钩子都被触发,这是不可以的!
参考:使用Generic Webhook Trigger插件实现Jenkins+WebHooks(码云)持续集成--指定具体项目和分支进行集成
主要参数参考:
ref
$.ref
project.git_ssh_url
$.project.git_ssh_url
^(refs/heads/develop)|(git@gitee.com:tj/web.git)$
$ref|$project.git_ssh_url
npm install && npm run build && xcopy D:\web\source\dist D:\Project\web /E /C /Q /Y
http://admin:af73f4b19389e52e59d9cebdaf366dc2@121.121.121.121:8080/generic-webhook-trigger/invoke
af73f4b19389e52e59d9cebdaf366dc2
9674d38e69494768be5ea2994a07e438
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe
/t:ResolveReferences;Compile
/t:_CopyWebApplication
/t:Rebuild
/property:Configuration=Release
/property:TargetFrameworkVersion=v4.5
/p:WebProjectOutputDir=D:\web\source\handan_road_api_publish
/p:OutputPath=D:\web\source\handan_road_api_publish\bin
构建.NET自动编译测试与发布环境
- 在插件管理里面添加MSBuild Plugin
-
在系统管理=>全局工具配置中选择MSBuild选项:配置如下
其中Path to MSBuild选项为msbuild.exe文件夹路径
-
在需要构建的项目的配置的构建中选择如下:
-
配置参数如下:
构建.net程序流程(参考:https://www.cnblogs.com/linJie1930906722/p/5966581.html)
完成!
欢迎讨论!