文章摘要:
Linux - [CentOS7.6-x86系统] 使用Docker容器化安装配置Jenkins:
Jenkins安装
,Jenkins国内镜像源配置
,Git设置
,Maven设置
,Shell自启动脚本
这可能是你看过最全的 Jenkins 安装配置总结!尤其是 Git 设置 部分,替大家踩了很多坑!
欢迎大家留言学习交流~
本文共分为六章,码字不易,记得点赞收藏!
文章目录
一、依赖环境
服务器需要 jdk环境
若服务器没有 jdk环境,可以执行如下命令安装:
yum install -y java-1.8.0-openjdk.x86_64
二、Docker 安装启动 Jenkins
——本章默认已经安装Docker,若需要Docker安装步骤的小伙伴可以留言,我将再起文章进行总结
1、docker 搜索 jenkins:
docker search jenkins
本应一如既往选择 STARTS(标星)数量最多的,但很多时候拉下来的是旧版本,
!!!注意,如果jenkins版本过旧,会出现初始化下载插件大规模爆红无法正常下载,很麻烦!!!
所以在拉取的时候直接指定版本,我用的是较新版本2.456
,后文配置也是基于此版本
2、拉取指定版本的 jenkins:
(如果需要其他版本可以到官网选择对应版本然后拉取)
docker pull jenkins/jenkins:2.456
3、配置启动 jenkins:
docker run -d -u root -p 18080:8080 -p 58888:50000 -v /var/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins jenkins/jenkins:2.456
- Docker启动命令
-p
端口映射(宿主机端口在前,容器内部端口在后)
- 将容器内8080端口映射到服务器18080端口,将容器内50000端口映射到服务器58888端口
此处基于安全性考虑,会映射其他端口而不使用默认端口,如果你的机器还处于裸机状态,经常被黑客光临,可以看我的另一篇文章:
Linux服务器CentSO7.6初始化网络安全防火墙及用户组配置 - Docker启动命令
-v
挂载物理存储地址(宿主机路径在前,容器内部路径在后)
- -v /etc/localtime:/etc/localtime 同步服务器时间
4、启动 jenkins:
docker start jenkins
5、查看docker容器状态:
docker ps -a
可以看到 STATUS
为 UP
,表示启动成功。
6、网页打开 jenkins:
我们根据 CONTAINER_ID
来进入日志,看一下初始密码:
docker logs 811a56759eee
浏览器打开,输入 ip地址:端口号
,例如:192.168.xxx.xxx:18080
将日志中的初始化密码拷贝出来,输入进行下一步。
7、点击继续后,选择 按照推荐安装插件
这里等待安装完成就好了,如果有个别爆红的也没关系,可以在初始化完成后,更换镜像源后重新下载 (如果大面积爆红,可能是版本较低导致,可以在插件自动安装完成后,直接在控制台页面选择在线升级jenkins版本,升级后会自动再次进行初始化)
三、配置 Jenkins 国内镜像源
1、Dashboard --> 系统管理 --> 插件管理 --> Advanced settings,根据路径进入设置
2、在升级站点区域,将默认的更新中心 URL
地址更改为国内镜像源地址。
(常用的Jenkins国内镜像有华为云镜像、清华大学开源镜像站等)例如清华大学开源镜像站的地址:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
3、将地址填写到文本框中,点击 提交(Submit)
按钮保存更改。
4、返回到插件管理页面,点击 立即检查(Check now)
按钮强制更新当前插件列表。
四、全局工具配置 Maven
1、配置Maven:Dashboard --> 系统管理 --> 全局工具配置
注意:要将Maven放到Jenkins的本地数据挂载目录内,容器才可以读取到配置文件!
可以下载后将Maven包通过FTP上传到服务器。
输入服务器jenkins挂载目录下,Maven包中setting.xml的文件路径地址,保存,配置完成。
2、setting.xml配置(可选操作):
如果想对Maven仓库进行更好的管理,可以自定义本地仓库地址,在完成第一步后,修改 /conf/setting.xml
文件:
打开文件后,找到 <localRepository>
标签,然后在新的一行,输入新地址(jenkins挂载路径内的地址)
举例如下:
<localRepository>/var/jenkins_home/apache-maven-3.3.9/repository</localRepository>
此处补充Linux文件编辑基本操作(大佬可以跳过不看):
- 输入 vi + 文件名,进入文件。
- 移动光标至对应需要修改的位置,按 i 进行插入编辑,此时已经可以编辑内容,可以删除/修改/输入文本。
- 修改完成后按 Esc 建退出编辑模式,然后键入 :wq 保存并退出,如果此时退出文件,则保存修改成功。
五、配置 SSH 服务器
此步骤依赖插件SSH,若初始化未安装此插件,请提前安装
1、配置SSH server:Dashboard --> 系统管理 --> 系统配置:
找到SSH server配置项(一般在页面最后),点击 新增 ,输入:
Name:连接名称,建议与ip地址一样。
Hostname:SSH服务器ip地址,此处不需要加端口号。
Username:登录服务器的用户名称。
2、高级设置
输入步骤一的内容后,点击下方的 高级 按钮,
勾选 Use password authentication, or use a different key
在 Passphrase/Password 一栏中 输入登录服务器的密码,
在 Port 输入ssh连接的端口号
超时时间 Timeout 建议设置为 300000ms(=300s)
3、测试连接服务器
在输入区域右下方有 Test Configuration 按钮,点击进行连接测试,看是否可以成功连接。
4、保存设置,配置完成
六、配置 Jenkins 构建任务
1、进入Dashboard界面,选择新建任务:
2、构建一个自由风格的软件项目
—— Git 设置(拉取项目代码)
3、源码管理,配置Git拉取代码
- 如图,按步骤进行配置:
3.1 选择Git
3.2 输入Git(Gitee、GitCode)代码仓库克隆地址,举例(通过HTTPS Clone项目):
Gitee | GitCode |
---|---|
https://gitee.com/xxx/xxx.git | https://gitcode.net/xxx/xxx.git |
-
3.3 添加用户口令
重点:这里很多朋友因为在日常使用中并不会设置密码,而是用邮箱和ssh公钥直接连接,所以不知道自己的用户名密码是什么,可以到代码托管平台,查看或设置用户名、密码:
用户名
:个人主页 --> 个人资料 --> 个人空间地址 ,就可以查看/更改用户名。
密码
:个人主页 --> 个人设置 --> 安全设置 --> 私人令牌 --> 生成新令牌,注意,此令牌只会展示一次,一定要复制粘贴妥善保管!!!
3.4 填入账号密码,如果用户密码正确,则无法连接提示会消失。
3.5 设置拉取代码的分支
3.6 保存设置,Git配置完成
—— Maven 设置(编译构建项目)
4、增加构建步骤 - 调用顶层Maven目标
-
4.1 在 Build Steps 模块,点击 增加构建步骤,选择 调用顶层Maven目标
-
4.2 在下拉选框中,选择 第四章 配置的maven
-
4.3 在 目标 文本框中输入:
clean install
-
4.4 在 POM 文本框中输入 项目中的pom文件地址 :
(注意是git同步到jenkins目录下的项目地址)
-
4.5 保存,maven配置完成
—— SSH 推送设置(自动发布项目)
5、增加构建步骤 - Send files or execute commands over SSH
此步骤依赖插件 Publish Over SSH,若初始化未安装此插件,请提前安装
-
5.1 在 Build Steps 模块,点击 增加构建步骤,选择 Send files or execute commands over SSH
-
5.2 配置 SSH Server :Name 下拉框中选择 第五章 配置的SSH服务器
-
5.3 配置 Transfers :Source files 文本框中输入:
/
-
5.4 在 Exec command 文本框中输入要执行的Shell脚本:
-
第一行代码,将 构建好的
jar包
拷贝至 jenkins 单独的 packages 目录下(可自定义目录地址和名称),第一行代码中路径需要根据自己的实际路径进行修改!
-
最后 nohup java 为后台启动,
-jar
参数后的packages 目录路径也要对应更改。
sudo cp /var/jenkins_home/workspace/your_application/***/target/your_application.jar /var/jenkins_home/packages/
#!/bin/bash
APP_NAME=your_application.jar
LOG_NAME=your_application.log
PIDS=`ps -ef | grep $APP_NAME | grep -v grep|awk '{print $2}'`
if [ -n "$PIDS" ]; then
str1="杀掉历史进程pid为:"
for pid in $PIDS
do
result=$str1$pid
echo $result >> $LOG_NAME
sudo kill -9 $pid
done
else
String="程序不存在历史进程"
echo $String >> $LOG_NAME
fi
sudo nohup java -Xms300m -Xmx300m -jar /var/jenkins_home/packages/$APP_NAME >>$LOG_NAME 2>&1 &
str2="程序正在启动..."
echo $APP_NAME$str2 >> $LOG_NAME
(ps:此处对日志进行了优化,将启动中日志都输出到了项目日志中,可以到 /home/user
目录下进行查看对应项目日志)
最后,功德圆满,大功告成!
以上为所有内容,如果问题还没有得到解决,欢迎大家留言讨论交流,有帮助到你就 点个赞吧 ^.^