centos7使用jenkins自动化部署Spring boot项目(全)
背景:之前写过一篇关于jenkins的,但是那个是自用玩玩,这篇比较偏向于配置说明。最近项目使用了Springcloud的微服务架构,急需一套自动化部署的工具,便选择了简单易用的jenkins, 本次安装基于阿里云的Centos7.一.安装前确认环境1.安装环境首先确认已安装了 java, maven,git并配置了环境变量分别 执行...
背景:之前写过一篇关于jenkins的,但是那个是自用玩玩,这篇比较偏向于配置说明。最近项目使用了Springcloud的微服务架构,急需一套自动化部署的工具,便选择了简单易用的jenkins, 本次安装基于阿里云的Centos7.
一.安装前确认环境
1.安装环境
首先确认已安装了 java, maven,git并配置了环境变量
分别 执行以下命令,查看是否安装,若没有请自行百度安装。
java -version
mvn -v
git --version
二.安装过程
1.下载rpm包,最好下载最新的,这样不用再升级使用时用到的插件,我使用的是最新的
最好下载到你的常用安装目录,我这里是 根目录下的自建的目录 /software_data
wget https://pkg.jenkins.io/redhat/jenkins-2.189-1.1.noarch.rpm
2.安装
rpm -ivh jenkins-2.189-1.1.noarch.rpm
3.启动jenkins服务默认使用8080端口,启动前如果想修改端口号,可在/etc/sysconfig/jenkins中修改jenkins端口号
4.然后启动/重启/停止jenkins服务命令:
service start/restart/stop jenkins
如果遇到下面错误或者是其他类似的错误
Starting Jenkins bash: /usr/bin/java: No such file or directory
可以通过修改 /etc/init.d/jenkins 里的配置信息,在canditates里配置本地Java路径
5.修改正确以后启动jenkins
三.配置Jenkins(难点****)
1.访问localhost:8070页面,会告诉你初始密码所在位置,一般是 /var/lib/jenkins/secrets/initialAdminPassword
输入密码,进入系统页面,会提示创建用户,可以自行创建用户,输入用户名和密码
2.先看是否插件配置齐全,然后配置全局变量信息,比如maven,git,jdk路径信息,具体操作步骤如下:
构建maven项目,使用gitlab仓库,必备的几个插件有maven-intergration, publish-over-ssh等
系统管理 ---> 插件管理
publish over ssh同上找到安装插件
然后,系统管理--》全局工具配置:此处配置jdk,maven,git
注意:此处下面还有一个maven安装不要忘记(否则会打包失败,而且界面会提示找不到pom.xml)
以上配置完成以后,就点击应用,保存按钮。
3.新建一个任务,重点来了~~~~
General基础配置:可选,勾选旧的构建,
git仓库配置:必选,此处配置gitlab或者github仓库,还有可以clone项目的用户和密码,
构建触发器:可选,你可以选择当有代码更新时就构建打包,(一般都是手动点击启动构建,所以此处一个不勾选)
构建环境:可选,加个时间戳的配置勾选好了
Pre-steps:可选,可以配置一些前置的操作命令或者环境设置
Build: 必选,配置你所要打包的模块的根目录pom.xml文件,此处可以是相对路径;还有打包命令clean install -DskipTests
Post-steps:必选,此处一般为执行的shell脚本(linux系统)或者其他系统的执行脚本
此处脚本仅供参考:
#!/bin/bash
#export BUILD_ID=dontKillMe这一句很重要,这样指定了,项目启动之后才不会被Jenkins杀掉。
export BUILD_ID=dontKillMe
#Jenkins中编译好的jar位置
jar_path=/var/lib/jenkins/workspace/eureka-dev/eureka/target
#Jenkins中编译好的jar名称
jar_name=eureka.jar
#获取并杀掉以前的进程
ps aux|grep "eureka"|grep -v grep|awk '{print $2}'|xargs kill -9
#进入指定的编译好的jar的位置
cd ${jar_path}
#启动jar,后台启动
nohup java -jar ${jar_name} &
构建设置:可选
构建后设置:可选
==============================
pre-steps可选项,不配置
==============================
保存,点击构建,第一次编译时间会有点久哦!耐心等等。SUCCESS!!!
注意:如上配置是针对本机的发布,就是jenkins服务器和应用服务器在同一台机器上,而我们微服务大多数是在别的服务器上,此时就需要用到publish over ssh了,在全局系统配置的地方进行配置。
jenkins服务器发布服务和拷贝jar包到远程应用服务器发布服务的区别在于:Post-steps选择的类型
a.当应用服务器和jenkins服务器在同一台centos上,就选择shell类型
b.当应用服务器和jenkins服务器不在同一台上,就选Send files or execute commands over ssh
配置publish over ssh操作如下:
Jenkins配置ssh 远程发布,需要在远程服务器上新建jenkins用户,并给与授权
然后创建jenkins用户的私钥公钥
#创建用户 sudo useradd jenkins
#修改密码 sudo passwd jenkins
#变更账户为jenkins并进入用户的home目录 su - jenkins
#查看是否在/home/jenkins目录下 pwd
#生成jenkins用户的私钥公钥,一路enter键完成,不用键入密码 ssh-keygen -t rsa
#验证是否成功 ls -l /home/jenkins/.ssh/ 后然后看是否有id_rsa和id_rsa.pub
#进入.ssh目录下,将公钥拷贝到authorized_keys文件 cat id_rsa.pub >> authorized_keys
#authorized_keys需要600的权限 chmod 600 authorized_keys
然后将jenkins用户的私钥配置到 -系统设置- 配置,如下图
Passphrase:在远程应用服务器新建jenkins用户时的键入的密码,而我密码为空,所以此处不填,
Path to key :应用服务器上,jenkins用户私钥的地址路径,可为空
Key:应用服务器上,jenkins用户的私钥,不能为空
此时如果构建还有报错如下提示:
可能是脚本有问题,也有可能是jenkins用户无权限,这个时候就要在远程服务器上进行给jenkins用户root的操作权限,这个后续待改进。
在远程执行cp 没有权限的时候,可以登录root账号对修改文件夹的权限 chmod 777 dir
如果想给某个用户root权限,需要修改 /etc/passwd 文件中的用户的第三个列值改为0
ok,以上为我使用jenkins自动化部署jenkins所踩过的坑,如果觉得有帮助,还请给点个赞!!!
有问题可以加我QQ1024936497交流。
更多推荐
所有评论(0)