【Jenkins简单配置自动化部署发版流程】
背景
操作文档:https://www.jenkins.io/zh/doc/
此处使用war包方式安装 ,jdk版本 8, Jenkins v2.346.3(注意:2.357版本后开始需要依赖jdk11了 )
个人:因为环境网络限制,每次都要手动上传jar包到dev环境部署,有时网速会影响测试效率,所以想要了解 jenkins自动化部署
安装所需前置环境
需要配置java环境,此略
下载安装
## 创建自己的jenkins目录
mkdir -p /alice/jenkins cd /alice/jenkins ## 关于安装: ## 方式一:这个应该是默认下载当前最新的稳定版 sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.reposudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
# 中间可能会提示你安装java环境,如果依旧安装了就跳过吧,不要用jenkins自带的jdk
yum install jenkins ## 方式二:下载指定版本可以去官网下载(推荐) https://get.jenkins.io/war-stable/
启动与停止
## 找不到war包位置可以用find 检索下 [root@iZbp1hwh629hd4xz80i1z0Z /]# find / -iname jenkins.war /usr/share/java/jenkins.war /usr/lib/jenkins/jenkins.war /zoe/jenkins/jenkins.war # 启动 nohup java -jar jenkins.war --httpPort=8800 > nohup.out 2>&1 &
war运行后发现有个提示:
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
xxxxxxxxxxxxxxxx
## 这个是admin密码,先保存一下,等下要浏览器验证时输入
输入 ip+ port 访问图形界面。
关于停止卸载
## 停止服务 systemctl stop jenkins ## 移除jenkins rm -rf /etc/sysconfig/jenkins.rpmsave rm -rf /var/cache/jenkins/ rm -rf /var/lib/jenkins/ rm -rf /var/log/jenkins rm -rf /usr/lib/jenkins rm -rf /usr/share/java/
可以访问图形界面后第一步就完成了,接下来就是配置git,maven等插件及对应环境变量
安装插件
自己自定义实例配置:例如 Jenkins URL http://ip:8800/,相当于浏览器访问路径。
一开始安装失败也不要紧,后续可以自己安装插件
这里列一下自动化部署发版需要的插件:
-
Maven Integration
-
git,gitee等,看你用的对应代码库所在
-
Publish Over SSH 编译后部署要用到
安装插件时提示加载失败解决办法
例如:java.io.IOException: Failed to load: Gitee Plugin (1.2.7)
此时下载显示正常,但是重启jenkins时加载报错:
Failed to load: Maven Integration plugin (3.16)
- Failed to load: Javadoc Plugin (226.v71211feb_e7e9)
关于报错提示:
Failed to load: Credentials Binding Plugin (credentials-binding 1.27.1)
- Required plugin is disabled: SSH Credentials Plugin (ssh-credentials)
其余报错一般根据页面警告提示去找对应插件下载就好了
对安装的插件进行环境配置
配置变量前我们需要在jenkins所在服务器安装maven,以maven3.8.1为例,还要安装git
1.先去官网下载压缩包 https://archive.apache.org/dist/maven/binaries/ 2.上传zip文件到服务器路径下 3.直接解压 unzip apache-maven-3.8.1-bin.zip 4.和咱们的开发环境一样,也是配置setting.xml文件 改两个地方:本地仓库localRepository位置和镜像url <localRepository>/zoe/maven-3.8.1/apache-maven-3.8.1/repo</localRepository> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> 5.配置环境变量 新增maven访问变量 export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$MAVEN_HOME/bin:$PATH export MAVEN_HOME=/zoe/maven-3.8.1/apache-maven-3.8.1 6.刷新配置变量 source /etc/profile 7.安装git yum install git -y 查看git版本 git --version 7.安好后可以去jenkins界面配置变量啦
先配置JDK
选择新增JDK,不自动安装
然后配置maven
设置【系统配置】
找到全局属性- > 勾选环境变量 - > 点击新增
值参考 etc/profile里的就好
创建job任务
选择maven项目:
在之前配置了全局凭证的Credentials后,这里应该可以直接选到默认的Jenkins了:
然后是构建环境:
都没什么问题后,下一步是实现自动化的部署,也就是把jar包上传到指定位置并启动
配置跨服务器上传jar包
在上面选择插件时 有提到 Publish Over SSH 这个插件,我们安装这个插件后重启,
然后再系统配置里 刚刚配置环境变量的下面 ,找一下,有一个SSH server,配置一下名称,host和用户名,然后点击Test Configurationc 测试一下,如果失败,看一下服务器秘钥是否生成,第一次配置需要秘钥同步的,多台服务器需要把公钥内容同步到目标多台服务器authorized_keys中:
使用指令生成: ,会在目录/root/.ssh生成id_rsa私钥、id_rsa.pub公钥,将公钥的内容写入到同目录下的authorized_keys文件(jenkins连接多台服务器,将公钥写入到相应服务器的authorized_keys文件即可)) ssh-keygen -t rsa ## 根据提示选择即可,可以直接回车 ## 生成后这个文件是在隐藏文件夹ssh里的 [root@iZbp1hwh629hd4xz80i1z0Z ~]# ls -al ~/.ssh total 16 drwx------ 2 root root 4096 Nov 6 17:01 . dr-xr-x---. 12 root root 4096 Nov 6 16:35 .. -rw------- 1 root root 0 May 24 21:54 authorized_keys -rw------- 1 root root 1675 Nov 6 17:01 id_rsa -rw-r--r-- 1 root root 410 Nov 6 17:01 id_rsa.pub [root@iZbp1hwh629hd4xz80i1z0Z ~]# cd .ssh [root@iZbp1hwh629hd4xz80i1z0Z .ssh]# ls authorized_keys id_rsa id_rsa.pub ## 复制id_rsa.pub 内容到 authorized_keys 中 ## 重启ssh服务 service sshd restart
然后可以发现Job构建里可以选到:
Send files or execute commands over SSH这一项,点击进行配置
进入【系统配置】-> 【系统配置】,需要测试ssh连接是否成功:连接不成功需要检查公有秘钥是否配置完成,如果依然出错可以手动输密码,如下,但很明显不如秘钥安全,这里是测试用倒是还好:
点击change Password ,手动输入ssh对应账户的密码
然后再进行测试,Succes
回到Job的创建步骤里来,发现可以选到自己定义Name为 【dev-aliyun】的连接:
配置jar文件目录和目标目录,以及前缀移除:
配置source file 和 remote directory:
1.source files:Jenkins打包后生成文件地址,一般jar包会在项目目录下/root/.jenkins/workspace/zoey-alpha-dev/target,在target里面,所以填写路径如下: tatget/xxx.jar 2.remove prefix:去除前缀,传到远程服务器上去掉此路径,建议填写(此处作为例子,也可以不填): target 这样的话可以把jar包直接复制到指定路径下: 3.remote directory: 远程服务器 包存放位置,我用的是 /zoe/jar,在这个路径下可以直接覆盖之前的jar包
最后一步:在Exec commond 中配置下启动指令:
现在可以回到Job首页点击构建了
按照刚刚的配置,会把jar包编译生成并移动到 /zoe/jar 路径下,如果有则进行替换,并启动jar包
关于构建信息查看
构建后如果没有报错,一般可以在此路径下看到生成的target文件夹:
cd /root/.jenkins/workspace/你的job名称
点击项目后可以看到编译记录,点击编译记录可以看到对应的工作台信息输出
点击后可以选择工作台日志:
构建过程信息可以在这里查看。
最后可以看到启动成功了,进程创建时间是今天,文件的最后更新时间也正确,自动化部署成功
[root@iZbp1hwh629hd4xz80i1z0Z jar]# ps -ef | grep zoey-alpha.jar root 4064 29207 0 21:28 pts/1 00:00:00 grep --color=auto zoey-alpha.jar root 10227 1 0 Nov06 ? 00:01:34 java -Xms128M -Xmx128M -jar /zoe/jar/zoey-alpha.jar --server.port=8087