jenkins使用git+gradle+webhook实现自动部署

1、下载jenkins

网址:http://mirrors.jenkins-ci.org/,可以按照操作系统来选择相应的安装方式。RC是候选发布版,我们选择LTS长期稳定版即可。

我采用的war包的部署方式,选择war-stable,找到最新的jenkins为2.121.2,进入目录下载,或者可以直接wget链接。

wget mirrors.jenkins-ci.org/war-stable/2.121.2/jenkins.war

war包的安装方式非常简单,直接扔进tomcat目录下,只要tomcat处于运行状态,就会自动解压。

2、配置jenkins

访问jenkins目录 http://你的域名或者ip:8080/jenkins,jenkins就会启动。

未分类

稍等片刻,等jenkins启动完毕后,为了验证身份,jenkins会要求你去本地目录下读取初始密码并填入。

未分类

然后就是jenkins的配置页面的首页,会让你选择安装插件的方式,这里我选则右边自定义插件的安装方式。

未分类

选择上方的无,然后选择git,gradle,由于这里未显示完整的插件列表,webhook需要在插件管理器中配置

未分类

未分类

点击安装,等待安装成功,创建管理员账户后,设置jenkins的访问路径,开始使用jenkins

未分类

进入插件管理器,点击左侧系统管理,选择管理插件

未分类

未分类

点击可选插件,由于我使用的仓库是coding,搜索coding webhook,直接安装,其他仓库同理,若没有集成好的插件,可以搜索webhook,使用Generic Webhook Trigger(webhook通用触发器)

未分类

3、新建任务

单击开始创建一个新任务,输入任务名称test,选择构建一个自由风格的软件项目

未分类

选择丢弃旧的构建,点击右下方高级,四个参数按照自己机器的磁盘空间来填写,因为jenkins每次构建结束后(无论成功还是失败)都会记录构建,长期会占用大量的空间

$JENKINS_HOME/jobs/[JOB_NAME]/builds 目录存储了该Jenkins job的全部构建记录(目录名为构建序号)

$JENKINS_HOME/jobs/[JOB_NAME]/builds/BUILD_NUMBER/artifacts 目录存储了该次构建的artifact

未分类

之后设置源码管理,设置仓库地址,选择用户凭据

未分类

设置webhook触发器,图中的都必须选中,webhook令牌可以不填

未分类

接着去仓库中配置webhook

未分类

若触发成功就会在$JENKINS_HOME的workspace目录下生成项目文件,包括项目文件夹test,和临时文件夹test@tmp

未分类

设置gradle自动打包,使用gradle wrapper,要求项目里必须有gradle wrapper的相关文件,否则要设置wrapper的路径。

未分类

若使用gradle,可以去系统管理的全局工具配置安装指定版本的gradle

未分类

若构建成功,就会在项目的build目录下生成war包,在我实际上线的项目中,由于用到了tomcat,还需要再增加构建步骤,将生成的war包拷贝到tomcat的webapps目录下

未分类

至此,项目自动部署配置完毕,只要我在本地修改完代码push到仓库中,服务器便会自动pull代码然后打成war包部署到tomcat下。

Gitlab利用Webhook实现Push代码后的jenkins自动构建

之前部署了Gitlab的代码托管平台和Jenkins的代码发布平台。通常是开发后的代码先推到Gitlab上管理,然后在Jenkins里通过脚本构建代码发布。这种方式每次在发版的时候,需要人工去执行jenkins上的构建动作,有时显得过于繁琐。于是就想到了Gitlab的Webhook功能,通过Webhook的相关设置,可以实现代码Push后,自动去触发jenkins上的构建动作,这样就不需要人工干预去执行发版操作了。设置如下:

1)Jenkins上的操作

通常,jenkins在项目配置时是可以配置远程构建触发器,设置好jenkins的回调url后就可以让jenkins进行自动构建。这就需要先下载Gitlab Hook Plugin 插件。登陆Jenkins,分别点击”系统管理”->”插件管理”->”可选插件”,选择Gitlab Hook Plugin

未分类

然后构建相应的项目工程,比如下面的test-wx(下面最关键的是第2步中查看url,然后用这个url回调地址去Gitlab的webhook上添加)
a)先设置代码的git下载路径,这里通过ssh方式(需要提前将Jenkins本机的key添加到Gitlab上)

未分类

b)查看jenkin生成回调地址。在任务重构建触发器下获取回调URL。下面的URL那一行只有Gitlab Hook Plugin插件下载成功后才能显示。

未分类

c)然后设置代码发布的推送脚本

未分类

2)Gitlab上的操作

登陆Gitlab上的testwx3项目中,添加webhook(用上面Jenkins中生成的回调url)

未分类

然后点击这个项目的”Settings”

未分类

未分类

添加成功后,点击此webhook后面的test进行测试

未分类

如果返回Hook successfully executed.表示配置成功。
这样,下次push代码后,就会自动触发jenkins上相关的构建工程进行自动发布了!无需人工干预~

未分类


如上设置后,比如在gitlab的testwx3项目代码库中push一个test.txt文件,然后测试下是否自动发布了

未分类

然后去Jenkins上查看,如下发现已经自动发布了!

未分类

最后去目标机器192.168.1.19的/tmp/testwx目录下发现test.txt文件已经发布过来了~

未分类

Gitlab通过Webhook实现Push代码后Jenkins自动构建

1. 生成Gitlab的Access Token

点击用户下面的Settings, 如下图

未分类

再点击Access Tokens, 填写Name, 点击Create personal access token 生成Access Token

未分类

2. Jenkins安装插件

需要安装GitLab Plugin, Gitlab Hook Plugin

3. 在Jenkins中配置Gitlab API token

点击系统设置

未分类

填写Connection name, 如gitlab.abc.com
填写Gitlab host URL, 如 http://gitlab.abc.com

未分类

点击Add按钮,在弹出框中填写步骤1生成的Access Token

未分类

4. 配置源码管理

Repository URL示例: [email protected]:gopher/demo.git

未分类

点击Add按钮,在弹出框中按下图填写。注意:jenkins所在的机器上要先生成公钥、私钥,且在用户目录下。

未分类

5. 生成回调地址和Secret Token

在构建触发器中选中Build when a change is pushed to GitLab,GitLab webhook URL即是回调地址,如下图中红线处,例如: http://jenkins.abc.com/project/demo

未分类

再点击上图中的高级按钮,这时会出现高级选项, 如下图,点击Generate按钮生成Secret Token

未分类

6. 配置Gitlab的webhook

假如GItlab中有一个项目demo,那么先进入这个项目,然后,再点击Settings >> Integrations

未分类

填写步骤5中生成的回调地址,和Secret Token, 再点击Add Webhook创建Webhook, 最后点击test测试下是否配置成功.

未分类