一、前言
宁波公司要求我们把项目发布迁移到Jenkins平台上,Jenkins这个工具5年前杭州公司刚成立时就有打算自己搭建,但后来发布脚本直接用几行Shell代码就搞定了,觉得实在没有必要去搭个Jenkins,不过持续集成工具总归是高大尚一点。那我们就来了解一下自己怎么搭建一套Jenkins吧。
Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目。
二、Jenkins安装
使用Docker安装比较简单,执行几条命令就可以。
docker pull jenkins/jenkins
docker run -d -p 8080:8080
-p 50000:50000
-v /mnt/data/jenkins:/var/jenkins_home
--name "jenkins" jenkins/jenkins
启动后在控制台界面会输出管理员密码,你需要复制下来(或者安装好后在/mnt/data/jenkins/secrets/initialAdminPassword找密码)。
打开控制台界面,输入admin的密码后选择安装默认插件开始初始化。
三、配置一个Maven项目
先安装Maven插件
插件安装好后,创建任务时会多一个 【构建Maven项目】
下一步,勾选上丢弃旧的构建,不然每次构建后都存在那里太占磁盘
然后配置源代码路径
其中认证方式支持用户密码,也支持SSH private key。这里如果配置错误访问不了会报错。
然后输入要发布的分支,生产环境是master不用改,测试环境每次不同版本需要在这里修改一下分支(也可以引用全局变量的版本号)。
构建环境,这里勾选上。
然后可以配置Pre Step,比如可以配置在构建前执行远程脚本把运行中的Jar文件备份。这里我们先不管它。
然后可以看到Maven这里报错,这个时候需要到全局工具配置里把maven配置好。
(记得保存,不然刚才配置都会丢失)。
这里选择自动安装即可,保存后重新回到任务配置页面,发现Build->Maven Version没有报红色错误就可以了。上面配置好就可以打包编译了,但我们打包编译好后,肯定是要把这个包发送到远程测试服务器或生产服务器,然后启动应用,如果连这个都不支持也不配叫什么集成环境了。。
点开 Add post-build step看一个有没有发送文件到远程主机的,如果没有就需要安装一个插件.
然后在系统配置里配置好SSH Server和Publish over SSH的私钥
注意这里copy的时候不要少COPY了内容,我用cat查看文件开始就把-----END RSA PRIVATE KEY----- 这一行没COPY过去,如果有问题的话,文件是发送不过去的。
切回任务配置页面的post step,选择Send files or execute commands over SSH
选择远程服务器,配置要发送的文件,这里用通配符即可(他只会把这个工作空间的jar包发送过去),Remote directory远程目录,然后在Exec command里配置远程shell脚本的路径,这个shell脚本主要完成kill原有进程,使用新的jar包启动进程完成发布,简单的代码如下
这里要注意一下,因为是Jenkins远程执行Shell脚本的,会发生找不到命令的情况,可以加一行代码 source /etc/profile即可解决。默认远程脚本的执行日志不会输出在Jenkins控制台,把下面这个勾上,可以方便排查远程脚本执行情况。
最后,每次要打包发布进入任务后,点击【立即构建】,也可以配置每隔一段时间自动构建,功能还是比较强大的。
四、配置一个Gradle项目
直接选择自由风格构建项目。
在全局工具管理中安装Gradle
然后任务配置中配置如下
其它配置与Maven任务没有什么区别。
五、配置一个Vue项目
安装Nodejs插件
在全局配置工具中安装NodeJs相应的版本
创建任务选择自由风格项目
注:一定要记得勾选上Provide Node & npm bin/folder to PATH,否则执行时会报找不到npm命令。
build steps选择执行shell
配置发布文件及远程脚本
远程脚本如下:
这样就完成了集成打包环境的搭建与配置。