资讯专栏INFORMATION COLUMN

Jenkins 实现自动构建与持续集成

Baoyuan / 841人阅读

摘要:本文通过钩子实现了,本地代码,会自动响应并拉取码云上最新的代码值服务器上,使得本地提交代码时,线上能够同步的更新代码,省去了手动更新服务器上代码的重复工作。思考下我的需求本地代码到码云,自动拉取最新的代码。

* 写在前面的一段话:
          根据目前的工作需要,以及为了接下来新产品前后端间更高效的协同,我决定爬一下Jenkins的坑。本文通过git钩子+Jenkins实现了,本地git push代码,Jenkins会自动响应并拉取码云上最新的代码值服务器上,使得本地提交代码时,线上能够同步的更新代码,省去了手动更新服务器上代码的重复工作。

所需工具

服务器本文用的是 CentOS 7.2 64位)

Jenkins

码云(也可以是github、gitlab等)

Jenkins 是什么?能做什么?
Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:
1、持续的软件版本发布/测试项目。
2、监控外部调用执行的工作。
一、安装JDK

1、在安装Jenkins之前,需要先安装JDK及配置系统环境变量,因为Jenkins是基于JAVA的。

下载JDK8安装包并上传至服务器,在安装之前建议先检查下是否安装过JDK,因为Jenkins最新的2.x版本是基于JDK8的,通过下面命令可以查询

# rpm -qa | grep java

如果有,会出现已安装的JDK列表。执行下面命令依次卸载即可

# rpm -e --nodeps <列表里各项>

2、安装JDK8

# rpm -ivh <下载的安装包名称>

3、检查JAVA版本

# java -version

4、配置环境变量

打开配置文件

# vim /etc/profile  

按i键可以进入编辑模式,按pagedown翻到最后,添加上如下配置

export JAVA_HOME=
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

按Esc退出编辑模式,并输入下面命令保存并强制退出

:wq!

重新应用修改后的配置文件

# source /etc/profile

PS:可以打印出$PATH变量,查看是否配置成功

# echo $PATH

如果输出了相对应的路径则说明配置成功,可以进行下一步了!

二、安装Jenkins

1、如同安装JDK,先下载Jenkins的.war安装包并上传至服务器(也可以将Jenkins存储库添加到yum repos,并从这里安装Jenkins.详情可见 Jenkins文档 ),进入Jenkins包所在文件夹执行下面命令启动Jenkins

# java -jar jenkins.war --httpPort=8090

启动后用浏览器打开http://:8090,密码复制粘贴即可,然后按照提示登录,并安装推荐的插件...
OK,至此,基础准备工作已经完成,我们在服务器上安装了Jenkins并启动,然后进行了初始化配置。接下来我们就需要建立了一个新任务,开始配置我们需要的功能了。

思考下我的需求:本地push代码到码云,Jenkins自动拉取最新的代码。所以需要将本地、服务器与码云三者间关联起来

三、实现git钩子功能

1、在Jenkins插件管理里找到已安装插件,如图

检查一下三个插件是否安装,如果没有,请安装

Git plugin

Publish Over SSH

Generic Webhook Trigger Plugin

2、安装好后重启Jenkins,接下来便是新建一个任务:

PS: 如果你的项目在拉取代码后需要其它操作,诸如:安装依赖、打包等,可在构建、构建后操作里配置,本文不再演示

3、配置码云的webhooks

添加 url格式为 http://:@:端口/generic-webhook-trigger/invoke

其中 userid 和 api token 在jenkins的系统管理-管理用户-admin-设置里

密码就是jenkins登陆的密码,填写完成保存,点击测试如图


出现图示结果,并且Jenkins里显示构建成功

那么说明git钩子已经生效。你也可以本地push代码来测试一下!

来看看jenkins拉取的代码吧,在jenkins workspace里可以找到

四、最终目的

那么问题来了,我以为这样就Everything has been done,打开后居然是这个样子

想想我最初的目的,自动化的流程是实现了,但是实时同步线上预览挂掉了,这可真的是不行不能够不可以的,我决定出去看看外面的世界找找灵感(答案),果然被我找到了

方法一:在jenkins命令行脚本输入

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")

方法二:在启动时指定参数

# java -Dhudson.model.DirectoryBrowserSupport.CSP= -jar jenkins.war --httpPorrt=8090

运行,如果还是报错 记得清下浏览器缓存

至此,done!

五、总结下

Jenkins 功能十分强大,在现在前端项目工程化的背景下,可以替开发和测试人员做很多重复性的工作,本次基于Jenkins做的只是一个销应用场景下的demo,在公司新产品开发时也可以基于此进行更多功能的完善!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/96761.html

相关文章

  • Jenkins 实现自动构建持续集成

    摘要:本文通过钩子实现了,本地代码,会自动响应并拉取码云上最新的代码值服务器上,使得本地提交代码时,线上能够同步的更新代码,省去了手动更新服务器上代码的重复工作。思考下我的需求本地代码到码云,自动拉取最新的代码。 * 写在前面的一段话:          根据目前的工作需要,以及为了接下来新产品前后端间更高效的协同,我决定爬一下Jenkins的坑。本文通过git钩子+Jenkins实现了,...

    peixn 评论0 收藏0
  • Docker在开发、测试中的应用

    摘要:对测试的影响让单元测试运行的更顺畅单元测试驱动开发是一个很好的应用程序开发方式,单元测试往往也是和代码一起被提交到代码仓库中。但是很多单元测试通常依赖于很多其他服务,而这些服务的标准化配置往往是一个难点,如数据库的搭建防火墙的配置等。 传统的软件开发、测试、运维需要三个团队在三个不同的环境中进行,而三个环境的不同引发了很多的问题。如:工作内容的重复;开发环境中可运行的程序在测试和运维环...

    mating 评论0 收藏0
  • JenkinsRainbond对接部署应用

    摘要:支持应用持续部署,下面我们来分别说明一下与对接如何把源码和镜像格式应用部署到云帮。构建自己的持续部署流程在云帮的应用市场中有丰富的应用可以安装使用,您可以使用这些应用构建自己的工作流。 对接Jenkins基于Git仓库与镜像构建的服务进行自动CI、CD实践 概述 如果您现在已经有了自己的CI工作流程,并且想在云帮中持续部署您的应用,那么本文将引导您将自己的应用部署到云帮并设置持续部署。...

    ZoomQuiet 评论0 收藏0
  • fir.im weekly - 「 持续集成 」实践教程合集

    摘要:来这里看看的工程师如何进行持续集成与持续部署。主要介绍了豆瓣移动持续集成和测试相关实践,用工具化自动化社会化测试来解决遇到的问题,将打包发布环节自动化。这期的持续集成实践分享就到这里。 我们常看到许多团队和开发者分享他们的持续集成实践经验,本期 fir.im Weekly 收集了 iOS,Android,PHP ,NodeJS 等项目搭建持续集成的实践,以及一些国内外公司的内部持续集成...

    A Loity 评论0 收藏0

发表评论

0条评论

Baoyuan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<