关于Jenkins
现代项目研发大部分都是敏捷开发,会经常进行产品的迭代发布,在一些前后端分离的团队里会经常发生前端研发人员与服务端研发人员同步不统一,服务端提交完代码忘记更新文档、重启服务器等,导致产出一些不必要的工作,降低了交付效率。
Jenkins 是一套基于Java功能强大的应用程序,支持我们持续集成和持续交付项目,而不管我们使用什么平台,都可以很方便的进行监控持续重复的工作。
环境
- Ubuntu 10.06 64位服务器
- Java SDK
安装
Jenkins是一套开源的自动化服务,我们可以通过Ubuntu的软件包进行安装,也可以通过下载应用程序WAR文件进行安装。在接下来的文章中我们通过apt-get命令获取软件包进行安装:
sudo apt-get install openjdk-8-jdk
sudo apt-get update
sudo apt-get install jenkins
安装过程中会提示Jenkins会安装哪些依赖,输入Y回车傻瓜式安装即可, 安装完成时终端会展示给我们一个初始化密码串,接下来我们在浏览器进行Jenkins服务设置的时候会用到。
启动
sudo systemctl start jenkins # 启动服务
sudo systemctl restart jenkins # 重启服务
sudo systemctl stop jenkins # 停止服务
由于systemctl不显示输出内容,我们可以通过其status命令来看Jenkins是否启动成功:
sudo systemctl status jenkins
配置与插件安装
我们已经成功启动了Jenkins服务,由于Jenkins服务默认使用的是8080端口,所以打开浏览器输入IP:8080
就可以打开我们的Jenkins管理设置控制面板了,如果8080端口被占用了可以更改端口
在输入框中填入我们刚才安装时给出的初始化密码,如果忘记了可以使用命令cat /var/lib/jenkins/secrets/initialAdminPassword
查看初始化密码将其copy到输入框中,点击continue
接下来是进行插件安装,我们可以根据其建议的插件安装,也可以自定义插件安装,在这里我们安装其建议的插件
插件安装需要一段时间,这段时间我们可以做一些其他的工作,等安装成功后接下来就是初始化Admin用户
我们可以在表单里填入我们需要设置的管理员用户的信息,然后点击右侧的按钮Save and Finish
;我们也可以点击左侧的按钮Continue as admin
使用我们安装时初始化的用户(登录的时候采用admin/**)
这样我们基本的初始化设置就已经完成了,点击Start using Jenkins
应该可以看到首页的面板了
集成Github
所有的准备工作已经就绪,接下来就是要集成Github进行项目的自动化构建了。首先我们先创建一个项目
点击列表里的项目进入其简介
点击左侧的Configure进行项目的配置
在这里我是通过执行Shell脚本进行项目自动化构建的,其中export PATH=******
,导出系统变量到脚本(主要是npm,否则会error npm is not command...)
因为我们的项目是基于Github进行托管的,在guthub项目里输入要集成的项目git url; Build Triggers
中选择通过web hook进行触发,webhook的地址我们通过系统管理->系统设置#GitHub
点击Advanced...
勾选覆盖 Hook URL
,点击Save
最后将Hook URL设置到github项目的webhook中
然后就可以提交代码进行自动构建了,Jenkins通过Webhook触发构建
点击Build History下Build Item
可以看到其构建时控制台的输出信息
至此,我们利用Jenkins+Github实现项目的自动化构建已经初步的完成了,后续我会继续研究Jenkins pipeline分步执行构建计划。
Warning
如果构建的过程中遇到error: cannot open .git/FETCH_HEAD: Permission denied
,那是因为我们在安装Jenkins服务的时候,其默认为我们的服务器创建了一个Jenkins
的用户,在执行Shell脚本构建的过程中,使用的就是这个Jenkins用户而非我们的系统用户root
,我们可以将Jenkins设置为默认的用户root
1. 首先查看在线安装jenkins的目录, 然后将这些目录设置成root用户访问
- 修改Jenkins系统配置文件
/etc/default/jenkins
,将JENKINS_USER 和 JENKINS_GROUP 修改为root
- 重启Jenkins服务
sudo systemctl restart jenkins
如有不当之处,还望大神指点,谢谢。