占个位,持续补充。
一、使用Jenkins进行自动化部署
一直以来关于xx框架/中间件的技术博客有个奇怪的事情。这类文章特点大而全,重复率高,读者阅读完毕基本从安装到放弃。
作为一个使用者,我只是为了实现一个初步的功能慕名而来,踩得坑多了才希望寻求一些心得,结果搜索到的偏偏是些连作者自己都觉得云里雾里的东西。
这里,从目的出发,只谈我遇到的障碍与解决方式,构成一条完整的线。
【通过Jenkins实现不需要PC、不需要SSH的自动化部署】
1、首先yum安装。
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
这里提一点,如果服务器连接国外站点的速度慢,考虑
(1)yum install jenkins --downloadonly,这样你的rpm包会在/var/cache/yum/x86_64/7/jenkins/packages下,复制到那台要安装的服务器上,yum localinstall jenkins-2.150.1-1.1.noarch.rpm即可。
(2)使用镜像下载,在http://mirrors.jenkins-ci.org/status.html查询。
2、参数配置
(1)Java位置
vi /etc/rc.d/init.d/jenkins
candidates="
************
************
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/bin/java
"
(2)Jenkins 端口号修改
a. web界面端口号
vi /etc/sysconfig/jenkins
JENKINS_PORT="8080" ---→ xxxx
除了:6666-6669端口是IRC协议使用的缺省端口,存在安全风险,容易被木马等程序利用,应该是出于安全考虑,谷歌,火狐浏览器给屏蔽了。
b. Jenkins运行脚本的用户
JENKINS_USER默认值为Jenkins,注意你之前部署项目的脚本有没有给这个用户分配权限,为方便可考虑改为root。
3、启动和停止
service jenkins start
service jenkins stop
service jenkins restart
chkconfig jenkins on
如果启动失败,查看日志/var/log/jenkins/jenkins.log
4、引导页
引导页可以直接点右上角X跳过,这样登录时直接输入admin/初始密码(/var/lib/jenkins/secrets/initialAdminPassword)即可。
如果不想跳过,suggested的插件一个都不要装,以后按需来,除非你确信自己网络状况很好。
如果启动后兴奋乱改导致配置失败不好挽回,yum remove jenkins,删除/var/lib/jenkins,重新install,这样才会完全重置。
5、安全设置
左上系统管理-系统设置-全局安全配置,启用安全,Security Realm选Jenkins专有用户数据库,Authorization选登录用户可以做任何事。
CSRF Protection中Prevent Cross Site Request Forgery exploits前面的√去掉。
如果修改失败Jenkins会报错(不安分的管家啊),在/var/lib/jenkins/config.xml中true改为false就可以设置了。
6、新建一个任务(构建),支持带token的url调用
(1)我们的目的在于摆脱SSH登录服务器,通过远程url调用,这里假设你已经有了一个部署脚本,完成了git拉取代码并编译打包(maven)的工作,否则需要下载Jenkins的git、maven插件并配置。
在Build这里选择执行shell,输入之前的部署脚本,并在开头添加
#!/bin/bash -ilex (允许使用系统环境变量)参考https://blog.csdn.net/zzusimon/article/details/57080337
#!/bin/sh -e (每条指令之后,都可以用$?去判断它的返回值,零就是正确执行,非零就是执行有误)
最后,在你之前的部署脚本中加入export BUILD_ID=dontkillme,或者在Jenkins的节点管理中添加,以免Jenkins默认kill构建脚本中所启动的子进程。
(2)Build Triggers
Trigger builds remotely (e.g., from scripts)这里选中,填上一个token,这样就可以通过
JENKINS_URL/job/构建名/build?token=
TOKEN_NAME调用了(get方法即可)。
注意,如果这里没有启用安全设置,所有人都可以通过/build随时构建你的项目。
7、查看构建结果和历史
通过左上角 Build History查看每一次构建状态信息,最右侧按钮查看console打印信息。
-------------------
待补充。