文章目录
- [0. 老男孩思想-传统文化之"天理不外乎人情"](#0. 老男孩思想-传统文化之"天理不外乎人情")
- [1. GitLab备份](#1. GitLab备份)
-
- [1.1 修改配置文件](#1.1 修改配置文件)
- [1.2 备份](#1.2 备份)
- [2. GitLab升级规范](#2. GitLab升级规范)
- [3. GitLab配置https](#3. GitLab配置https)
- [4. Jenkins基础介绍](#4. Jenkins基础介绍)
-
- [4.1 安装Jenkins](#4.1 安装Jenkins)
- [4.2 登录Jenkins前端](#4.2 登录Jenkins前端)
- [4.3 安装插件与修改密码](#4.3 安装插件与修改密码)
- [5. Jenkins优化](#5. Jenkins优化)
-
- [5.1 配置命令解释器](#5.1 配置命令解释器)
- [5.2 取消主机密钥验证](#5.2 取消主机密钥验证)
- [6. Jenkins基本使用](#6. Jenkins基本使用)
-
- [6.1 创建测试任务](#6.1 创建测试任务)
-
- [6.1.1 填写项目名称](#6.1.1 填写项目名称)
- [6.1.2 基础配置](#6.1.2 基础配置)
- [6.1.3 运行任务](#6.1.3 运行任务)
- [6.2 修改Jenkins的执行用户](#6.2 修改Jenkins的执行用户)
- [6.3 小鸟飞飞代码发布任务](#6.3 小鸟飞飞代码发布任务)
-
- [6.3.1 创建gitlab项目仓库](#6.3.1 创建gitlab项目仓库)
- [6.3.2 Jenkins连接GitLab](#6.3.2 Jenkins连接GitLab)
- [6.3.3 创建任务](#6.3.3 创建任务)
- [6.3.4 运行任务](#6.3.4 运行任务)
- [6.3.5 部署代码到服务器](#6.3.5 部署代码到服务器)
- [7. 参数化构建](#7. 参数化构建)
-
- [7.1 选项参数](#7.1 选项参数)
- [7.2 Git参数](#7.2 Git参数)
- [7.3 文本参数](#7.3 文本参数)
- [7.4 编译步骤](#7.4 编译步骤)
- [7.5 运行任务](#7.5 运行任务)
- [7.6 部署bird代码](#7.6 部署bird代码)
- [8. 思维导图](#8. 思维导图)
0. 老男孩思想-传统文化之"天理不外乎人情"
"天理不外乎人情"是中国传统哲学中的一个重要命题,强调天道法则与人性需求的统一性。
"天理"不是冷漠规则,而是"有情之理"
"人情"不是无底线的妥协,而是"合理之情"
不仅仅是个人,更是社会,应该追求法律、规律与人文的动态平衡。既要避免"僵化教条",也要防止"情感泛滥"。真正的文明,必是"法理情"的和谐统一。

1. GitLab备份
1.1 修改配置文件
properties
#开启备份功能
gitlab_rails['manage_backup_path'] = true
#备份目录
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
#备份文件权限
gitlab_rails['backup_archive_permissions'] = 0600
#备份保留时间
gitlab_rails['backup_keep_time'] = 604800
- 重新读取配置文件:
gitlab-ctl reconfigure
1.2 备份
- 备份命令:
gitlab-backup create
- 备份文件存放位置:
/var/opt/gitlab/backups/
- 删除项目后再读取备份文件:



- 停止写入服务:
gitlab-ctl stop sidekiq
- 恢复数据:
gitlab-backup restore BACKUP=1754478391_2025_08_06_15.9.3
- 再启动服务:
gitlab-ctl start

2. GitLab升级规范

- 先升级到小版本的最高级版本,再逐步升级大版本
3. GitLab配置https
properties
nginx配置
gitlab.rb文件中配置即可.
nginx['enable'] = true
nginx['client_max_body_size'] = '250m'
nginx['redirect_http_to_https'] = ture
nginx['redirect_http_to_https_port'] = 80
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.oldboy.cn.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.oldboy.cn.key"
nginx['ssl_ciphers'] = "ECDHE-ECDSA-AES128-GCMSHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSAAES256-GCM-SHA384:ECDHE-RSA-AES256-GCMSHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSACHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHERSA-AES256-GCM-SHA384"
nginx['ssl_prefer_server_ciphers'] = "off"
##! **Recommended by:
https://raymii.org/s/tutorials/Strong_SSL_Securi
ty_On_nginx.html
##! https://cipherli.st/**
nginx['ssl_protocols'] = "TLSv1.2 TLSv1.3"
##! **Recommended in:
https://nginx.org/en/docs/http/ngx_http_ssl_modu
le.html**
nginx['ssl_session_cache'] = "shared:SSL:10m"
nginx['ssl_certificate'] =
修改gitlab中nginx服务的ssl_certificate配置
gitlab-ctl reconfigure就会读取gitlab.rb重新⽣成配置⽂件.
4. Jenkins基础介绍
Jenkins 是一款开源的持续集成/持续交付(CI/CD)工具,用于自动化构建、测试和部署软件项目。它支持丰富的插件生态,能与 Docker、Git、Maven、Kubernetes 等工具无缝集成,是现代 DevOps 的核心工具之一。

4.1 安装Jenkins
- 虚拟机:2核4g
- 依赖java环境
- 官方下载地址:
[War Jenkins Packages](https://get.jenkins.io/war-stable/)
- 需求文档:
https://www.jenkins.io/doc/book/installing/linux/#prerequisites
- java版本需求文档:
[Java Support Policy](https://www.jenkins.io/doc/book/platform-information/support-policy-java/)
- Jenkins软件包和插件:
jenkens-2.387.1-lts-plugins.tar.gz等2个文件 链接: https://pan.baidu.com/s/1zSJrniEMbbuB71BIKHdy6Q?pwd=4bi8 提取码: 4bi8


shell
# 安装java11
[root@devops-jenkins ~]# yum install -y java-11
上次元数据过期检查:2:07:57 前,执行于 2025年08月06日 星期三 18时31分28秒。
软件包 java-11-openjdk-1:11.0.27.6-1.p01.ky10.x86_64 已安装。
依赖关系解决。
无需任何处理。
完毕!
# 安装Jenkins软件
[root@devops-jenkins ~]# rpm -ivh jenkins-2.387.1-1.1.noarch.rpm
警告:jenkins-2.387.1-1.1.noarch.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID 45f2c3d5: NOKEY
Verifying... ################################# [100%]
准备中... ################################# [100%]
软件包 jenkins-2.387.1-1.1.noarch 已经安装
# 启动Jenkins
[root@devops-jenkins ~]# systemctl enable jenkins.service
Synchronizing state of jenkins.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable jenkins
[root@devops-jenkins ~]# systemctl start jenkins.service
4.2 登录Jenkins前端
- Jenkins的前端页面是8080;
- 主机配置hosts



4.3 安装插件与修改密码
- 安装插件
shell
tar tf jenkens-2.387.1-lts-plugins.tar.gz
tar xf jenkens-2.387.1-lts-plugins.tar.gz -C /var/lib/jenkins/plugins/
chown -R jenkins.jenkins /var/lib/jenkins/plugins/
systemctl restart jenkins
- 修改密码


5. Jenkins优化

5.1 配置命令解释器


5.2 取消主机密钥验证


6. Jenkins基本使用

- Jenkins需要从gitlab获取代码,需要配置密钥认证
6.1 创建测试任务
6.1.1 填写项目名称


6.1.2 基础配置



#1.目录哪里
pwd
#2.用户是谁?
whoami
#3.输出/etc/shadow文件内容
#cat /etc/shadow
#4.jk环境变量,项目名字,目录名字
echo 项目名字:$JOB_NAME
echo 项目目录名字:$WORKSPACE
6.1.3 运行任务


6.2 修改Jenkins的执行用户
shell
[root@devops-jenkins ~]# vim /usr/lib/systemd/system/jenkins.service
[root@devops-jenkins ~]# grep -E '^User|^Group' /usr/lib/systemd/system/jenkins.service
User=root
Group=root
[root@devops-jenkins ~]# systemctl daemon-reload
[root@devops-jenkins ~]# systemctl restart jenkins.service
6.3 小鸟飞飞代码发布任务
6.3.1 创建gitlab项目仓库

- 本地上传代码
shell
[root@devops-gitlab /app/code/bird]# ll
总用量 140
-rw-r--r-- 1 root root 15329 8月 2 2014 2000.png
-rw-r--r-- 1 root root 51562 8月 2 2014 21.js
-rw-r--r-- 1 root root 254 8月 2 2014 icon.png
drwxr-xr-x 2 root root 102 8月 8 2014 img
-rw-r--r-- 1 root root 3049 8月 7 07:21 index.html
-rw-r--r-- 1 root root 63008 8月 2 2014 sound1.mp3
[root@devops-gitlab /app/code/bird]# git config --global user.name "Administrator"
[root@devops-gitlab /app/code/bird]# git config --global user.email "admin@example.com"
[root@devops-gitlab /app/code/bird]# git init
已初始化空的 Git 仓库于 /app/code/bird/.git/
[root@devops-gitlab /app/code/bird]# git remote add origin git@gitlab.oldboy.cn:gitlab-instance-b39d975d/bird.git
[root@devops-gitlab /app/code/bird]# git add .
[root@devops-gitlab /app/code/bird]# git commit -m "小鸟飞飞"
[master(根提交) 53e52cf] 小鸟飞飞
11 files changed, 184 insertions(+)
......
[root@devops-gitlab /app/code/bird]# git push -u origin --all
......
[root@devops-gitlab /app/code/bird]# git tag -a v1.0 -m "v1.0"
[root@devops-gitlab /app/code/bird]# git push --tags
......

6.3.2 Jenkins连接GitLab
- Jenkins需要向gitlab发布公钥
shell
[root@devops-jenkins ~]# ssh-keygen
......
[root@devops-jenkins ~]# cat ~/.ssh/id_rsa.pub
ssh-rsa
......

6.3.3 创建任务

- 配置gitlab域名解析

- 填写代码仓库地址


- Jenkins页面上需要添加私钥




- 构建步骤

6.3.4 运行任务

6.3.5 部署代码到服务器
- Jenkins需要发布代码到web服务器,先配置密钥认证

- 编译步骤:
shell
#0.vars
CODE_NAME=bird.tar.gz
CODE_TMP_DIR=/opt/
CODE_DIR=/app/code/bird/
IP_ADDRS="10.0.0.7 "
#1.打包
tar zcf ${CODE_TMP_DIR}${CODE_NAME} .
#2.分发-后期交给ansible copy模块/unarchive 模块
for ip in ${IP_ADDRS}
do
scp ${CODE_TMP_DIR}${CODE_NAME} ${ip}:${CODE_TMP_DIR}
done
#3.部署-后期交给ansible
#(未涉及到) tag标签
#代码直接解压到/app/code/bird/目录下即可.
for ip in ${IP_ADDRS}
do
ssh $ip <<EOF
[ -d ${CODE_DIR} ] || mkdir -p ${CODE_DIR}
tar xf ${CODE_TMP_DIR}${CODE_NAME} -C ${CODE_DIR}
EOF
done
#4.日志记录
#5.通知
- 执行任务


7. 参数化构建
- 参数就是变量
7.1 选项参数

7.2 Git参数
- Git参数可以获取代码不同版本(tag)、分支

- 拉取指定版本的代码

7.3 文本参数

7.4 编译步骤
shell
case "${HUAN}" in
dev) echo "开发环境" ;;
test) echo "测试环境" ;;
prod) echo "生产环境" ;;
*) echo "输入错误"
esac
echo "代码当前的版本:${TAG_NAME}"
echo $LOG >>/var/log/bird.log
echo $LOG >>/var/log/${JOB_NAME}.log
7.5 运行任务


7.6 部署bird代码
- 部署时需要创建代码目录的软链接


- 编译步骤
shell
#0.vars
CODE_NAME=bird_${TAGNAME}.tar.gz
CODE_VERSION=bird_${TAGNAME}
CODE_TMP_DIR=/opt/
CODE_DIR=/app/code/bird
IP_ADDRS="10.0.0.7 "
#1.打包
tar zcf ${CODE_TMP_DIR}${CODE_NAME} .
#2.分发-后期交给ansible copy模块/unarchive 模块
for ip in ${IP_ADDRS}
do
scp ${CODE_TMP_DIR}${CODE_NAME} $ip:${CODE_TMP_DIR}
done
#3.部署-后期交给ansible
#(未涉及到) tag标签
#代码直接解压到/app/code/bird/目录下即可.
for ip in ${IP_ADDRS}
do
ssh $ip <<EOF
rm -fr $CODE_DIR
#mkdir -p /opt/bird_v1.0
mkdir -p ${CODE_TMP_DIR}${CODE_VERSION}
#ln -s /opt/bird_v1.0 /app/code/bird
ln -s ${CODE_TMP_DIR}${CODE_VERSION} ${CODE_DIR}
#tar xf /opt/bird_v1.0.tar.gz -C /opt/bird_v1.0/
tar xf ${CODE_TMP_DIR}${CODE_NAME} -C ${CODE_TMP_DIR}${CODE_VERSION}
EOF
done
#4.日志记录
#5.通知
8. 思维导图
https://kdocs.cn/join/gpuxq6r?f=101\r\n邀请你加入共享群「老男孩教育Linux运维99期-孙克旭」一起进行文档协作