本文写Jenkins和GitHub的结合使用。至于为什么用这个叫Jenkins的东西。因为部署自动化,省去了代码打包编译部署发布到服务器上的操作。只需你把代码提交到代码仓库,这一切都由Jenkins帮你做了。
关于Jenkins,maven在Linux环境安装可以看我的这篇文章:https://blog.csdn.net/finalheart/article/details/89001665
关于git配置密钥可以看我的这篇文章:https://blog.csdn.net/finalheart/article/details/89048883
假设你已经做完准备工作了。即安装好了Jenkins,maven,git那么继续。
首先说一下,你可以不配置你的Jenkins工作目录。默认为 /var/lib/jenkins 如果想配置就在 /etc/profile中加入
JENKINS_HOME=....就可以了。 注意这个工作目录在开启Jenkins的时候会加载。如果你一开始没设置。以后设置会重置你Jenkins的所有配置!!!
1.然后安装一个maven插件。
去系统管理>>插件管理>>可选插件 搜索 Maven Integration plugin 搜索完直接安装就行。你可能还会搜索到一个pipelineMaven Integration plugin 这个我也装上了。但是出现可以新建maven项目是 Maven Integration plugin 插件。
2.配置一下github的token。
下面那一长串复制下来那个是连接GitHub的token 需要在Jenkins里面配置。这个更新所有引用地方也需要更新。存起来。
3.然后进入你的github想做自动化部署的项目添加webhooks
>>settings>>webhooks 指定的是push事件。即push代码进行构建。
4.然后回到我们的Jenkins中。配置GitHub.
jenkins 中的系统设置里面
5.然后我们需要在全局设置里面配置maven home
就是你Jenkins服务器中按的maven home. 不然你配置build的时候goals那栏会报错。
6.搭建新任务
创建一个maven项目。
然后继续,注意这个Local subdir... 这个要配置成和项目名称一样。
然后到现在可以把git代码拉到Jenkins工作目录下,并执行maven命令打包好了。接下来就是构建后的操作了。比如你想运行起来还是怎么地。加shell就行。如下。我把命令都写在我服务器的一个sh脚本里面了。
我是用的springboot玩的。别的也有别的玩法,大同小异而已。 注:一定要声明 "大哥别杀我" BUILD_ID=dontkillme
经过以上的搭建后,就可以进行部署了。
我刚往GitHub提交了测试代码。构建成功。nice
tips : Jenkins有很多内置变量。很好用。比如 ${JOB_HOME} 等等。
7遇到的错误
1.下面这个报错是你的Jenkins没有maven执行权限。 failed to transfer
我的Jenkins配置文件在vim /etc/default/jenkins 去你的Jenkins配置文件中配置JENKINS_USER="root"就行了
2.下面的报错是你配置build的时候没有指定pom.xml为工作空间即项目根目录下。前面加上下面这个时候配置的项目名称就行 errorTest/pom.xml 这样就行了。
3.下面这个错误是源码管理中的Additional Behaviours 中的 check out to ...配置的名称不是项目名称导致的。
4.下面是构建后想执行一个命令,然后执行失败了。发现不加sudo 就好用了。。对于这种command not found 网上查到两种解决方法,当然我都没用上。一种是 #!/bin/sh -l 加在shell第一行 第二种是配置Jenkins全局配置里面的PATH全局变量。
这两种我都没用上,我的去掉sudo就好用了。
5.在最后我build成功后,我又遇到一个问题,已经显示全部都success。但是我访问我的服务发现不好用。然后去服务器上查,发现没有启动。于是我就很纳闷。寻找到如下解决方法。就是执行shell的时候要声明 "大哥别杀我"
Jenkins会在构建完成后使用processTreeKiller杀掉了所有子进程,而且这是Jenkins的默认行为。其实回头来看这个问题,就发现Jenkins的做法非常合理。当一次build异常结束,或被人终止时,必然需要结束所有这次build启动的子进程。下面的link提供了更多细节,以及解决方法。https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller。
觉得有用点个赞吧。有问题欢迎交流。
参考:https://blog.csdn.net/weixin_39483907/article/details/80840948
https://github.com/muyinchen/woker