一、前言
有人问,为什么要用Jenkins?我说下我以前开发的痛点,在一些中小型企业,每次开发一个项目完成后,需要打包部署,可能没有专门的运维人员,只能开发人员去把项目打成一个war包,可能这个项目已经上线了,需要把服务关,在部署到服务器上,将项目启动起来,这个时候可能某个用户正在操作某些功能上的东西,如果你隔三差五的部署一下,这样的话对用户的体验也不好,自己也是烦的很,总是打包拖到服务器上。希望小型企业工作人员学习一下,配置可能复杂,但是你配置好了之后,你只需要把代码提交到Git或者Svn上,自动构建部署,非常方便
。
二、Jenkins简介
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能
。
三、jenkins基本工作原理
以上为基本工作原理,只是为了开发人员更好的理解画的(个人理解),详情可查看官方文档:https://www.jenkins.io/zh/
四、docker安装jenkins
- 启动docker,下载Jenkins镜像文件
docker pull jenkins/jenkins
- 创建Jenkins挂载目录并授权权限
在服务器上先创建一个jenkins工作目录 /data/jenkins,赋予相应权限,稍后我们将jenkins容器目录挂载到这个目录上
,这样我们就可以很方便地对容器内的配置文件进行修改。 如果我们不这样做,那么如果需要修改容器配置文件,将会有点麻烦,因为虽然我们可以使用docker exec -it --user root 容器id /bin/bash 命令进入容器目录,但是连简单的 vi命令都不能使用
mkdir -p /data/jenkins
chmod 777 /data/jenkins
- 创建并启动Jenkins容器
docker run -d -p 10240:8080 -p 10241:50000 -v /data/jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins jenkins/jenkins
- 获取初始密码
docker logs jenkins
- 修改jenkins插件镜像源
- hudson.model.UpdateCenter.xml里的内容
将 url 修改为 清华大学官方镜像:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
这里有些进入jenkins下载插件会报错:java.net.UnknownHostException: updates.jenkins.io
所以这里还要再修改另一个文件/data/jenkins/updates/default.json
.
执行以下:
sed -i 's/https:\/\/updates.jenkins.io\/download/http:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' /data/jenkins/updates/default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' /data/jenkins/updates/default.json
然后重新启动jenkins,至此jenkins安装完毕
五、Centos安装Jenkins并设置自启动
- 下载jenkins.war
https://www.jenkins.io/doc/book/installing/war-file/
-
准备java环境,最好11及以上
-
编写自启动脚本
#!/bin/bash
###主要目的用于开机启动服务,不然 启动jenkins.war包没有java -jar的权限
JAVA_HOME=/data/jdk17
pid=`ps -ef | grep jenkins.war | grep -v 'grep'| awk '{print $2}'| wc -l`
if [ "$1" = "start" ];then
if [ $pid -gt 0 ];then
echo 'jenkins is running...'
else
### java启动服务 配置java安装根路径,和启动war包存的根路径,这两个路径根据自己实际放的位置更改
nohup $JAVA_HOME/bin/java -jar /data/jenkins/jenkins.war --httpPort=10240 > system.log 2>&1 &
fi
elif [ "$1" = "stop" ];then
exec ps -ef | grep jenkins | grep -v grep | awk '{print $2}'| xargs kill -9
echo 'jenkins is stop..'
else
echo "Please input like this:"./jenkins.sh start" or "./jenkins stop""
fi
- 配置开机启动服务,到 /lib/systemd/system 服务注册目录下创建 jenkins.service,内容如下
[Unit]
Description=Jenkins
After=network.target
[Service]
Type=forking
### jenkins.sh的路径
ExecStart=/data/jenkins/jenkins.sh start
ExecReload=
ExecStop=/data/jenkins/jenkins.sh stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
- 创建好服务后,执行一下命令刷新配置
systemctl daemon-reload
- 启动脚本
systemctl start jenkins.service
- 查看启动脚本状态是否启用成功(失败的话,看错误日志进行修改)
systemctl status jenkins.service
- 设置开机启动
systemctl enable jenkins.service
- 查看设置开机启动的服务列表
systemctl list-units --type=service |grep jenkins
- 停止服务命令
systemctl stop jenkins.service
这些搞完了就可以重启服务器试试看了
- 这种方式的jenkins的目录路径位于
/root/.jenkins
在这里配置国内源,解决上面的 java.net.UnknownHostException: updates.jenkins.io
问题
不推荐docker的安装方式,因为jenkins需要的jdk,git,maven环境配置起来很麻烦
六、jenkins汉化
- 安装Locale plugin和Localization: Chinese (Simplified)这两个插件
- 配置语言
Manage Jenkins=>System Configuration=>Configuration System
Locale ,设置Default Language为:zh_CN
一定要勾选:"Ignore browser preference and force this language to all users" 并保存
。
然后重启,汉化成功