day069-Jenkins基础使用与参数化构建

文章目录

  • [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期-孙克旭」一起进行文档协作