最近尝试自己搭建jenkins自动部署环境,将整个过程及遇到的问题记下来,希望能够帮助到一些朋友!
本文使用的环境是:Cent os7.2,maven3.5.3,JDK8,jenkins2.136
首先需要在你的服务器上配好相关的JDK与maven,还要在系统上安装好git。
这些就不讲怎么配置了,CSDN上有许多相关文章,大家可以参考!
现在开始正式配置jenkins。
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
yum install -y jenkins
执行上面的命令,安装jenkins。
jenkins的配置文件在 /etc/sysconfig/jenkins 这里,其中可以修改端口与其他信息。
vi /etc/sysconfig/jenkins
我们需要的是端口与jenkins的用户权限,因为不修改权限的话我们后面执行shell脚本的时候会出现没有操作权限。
jenkins的默认用户是jenkins,但事部分操作权限没有,我们后面需要执行的kill -9 XXX就没有权限,这里最快捷的我将jenkins 的设置位root权限。
首先修改JENKINS_USER="root"
jenkins的默认端口是8080,你可以修改没有被占用的端口,我这里修改为9090,根据你们本地的实际情况进行配置。
设置完成之后,保存文件。
暂时不要先启动jenkins,还需要设置jenkins的用户分组,执行命令
gpasswd -a root jenkins
service jenkins start
这时候启动完成之后,就可以在浏览器中访问你的jenkins了。
首次进入会让你输入jenkins的初始密码,密码在/var/lib/jenkins/secrets/initialAdminPassword 这个文件里可以看到,找到这个文件复制其中的密码过来即可。
然后让你选择插件,第一次先选择默认的安装推荐的插件即可。
稍微等待一会儿,即可安装完成!
配置好自己的用户名与密码即可!
我这里使用的码云的管理仓库,所以借鉴的是:https://gitee.com/oschina/Gitee-Jenkins-Plugin
我在其中也踩了很多坑,更多的原因是我自己知识面的短浅,但是我相信我自己能够完成,一步步去找原因并解决。
进入系统管理,系统设置:
填入链接名,自己取一个就行,域名URL填:https://gitee.com
令牌证书,点击Add,Jenkins
Gitee APIV5 私人令牌,需要你到:https://gitee.com/profile/personal_access_tokens获取
ID和描述自己填写即可,然后点击添加!
继续,下面找到Pipeline Model Definition
一样点击Add,Jenkins。
填写你的gitee的用户名与密码即可!ID和描述一样,随便填写!
然后到系统管理 》全局工具配置
配置好自己的maven与jdk目录即可。
在上面有个maven的全局配置文件,你可以配置自己的其他settings.xml的文件。
然后应用保存即可。
回到系统设置,找到插件管理,需要安装几个插件。
第一个插件的作用是我们在构建完成之后可以执行一些shell脚本,后面两个插件一个是maven一个是gitee的。
安装完成之后,重启一下jenkins。可以在安装的时候选择重启,也可以在服务器上执行
service jenkins restart
重新进入之后,选择创建一个新的任务。
我们选择构建一个maven项目。
按照前面码云的链接里面的配置文件,这里就会出现一个gitee链接,选择自己刚刚配置的即可。
远吗管理选择git,填入你的项目仓库地址,再选择到我们上面配置的gitee的用户名与密码!
如果你的用户名与密码填错了会显示错误:
Failed to connect to repository : Command "git ls-remote -h https://gitee.com/xxxxxx.git HEAD" returned status code 128:
stdout:
stderr: remote: [31mIncorrect username or password ( access token )[0m
fatal: Authentication failed for 'https://gitee.com/xxxxxx.git/'
执行maven的编译命令:install -Dmaven.test.skip=true
选择post build task,构建完成之后我们需要执行的shell脚本。
Log text表示构建到与你填写的内容一致时,就执行shell脚本。
// 获取正在运行的项目pid
pid=`ps -ef|grep uxiango-api-0.0.1-SNAPSHOT.jar|grep -v grep|awk '{print $2}'`
// 结束该进程
kill -9 $pid
// 进入我们的文件编译目录,具体的需要看你的项目路径
cd /var/lib/jenkins/workspace/uxiango-api/uxiango-api/target/
// 运行jar文件
nohup java -jar uxiango-api-0.0.1-SNAPSHOT.jar &
还遇到一个问题就是:
当我的脚本第一段写成:pid=`ps -ef |grep uxiango-api-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}'`的时候,执行的结果就是:
命令会出现问题,我去掉命令中 “ | ” 两边的空格之后就没有问题,希望有知道的老哥能告诉我原因!