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

发布于:2025-08-08 ⋅ 阅读:(14) ⋅ 点赞:(0)

0. 老男孩思想-传统文化之"天理不外乎人情"

“天理不外乎人情”是中国传统哲学中的一个重要命题,强调天道法则与人性需求的统一性

"天理"不是冷漠规则,而是“有情之理”

“人情”不是无底线的妥协,而是“合理之情”

不仅仅是个人,更是社会,应该追求法律、规律与人文的动态平衡。既要避免“僵化教条”,也要防止“情感泛滥”。真正的文明,必是“法理情”的和谐统一。

在这里插入图片描述

1. GitLab备份

1.1 修改配置文件

#开启备份功能
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

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

在这里插入图片描述

在这里插入图片描述

# 安装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 安装插件与修改密码

  • 安装插件
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的执行用户

[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项目仓库

在这里插入图片描述

  • 本地上传代码
[root@devops-gitlab /app/code/bird]# ll
总用量 140
-rw-r--r-- 1 root root 15329  82  2014 2000.png
-rw-r--r-- 1 root root 51562  82  2014 21.js
-rw-r--r-- 1 root root   254  82  2014 icon.png
drwxr-xr-x 2 root root   102  88  2014 img
-rw-r--r-- 1 root root  3049  87 07:21 index.html
-rw-r--r-- 1 root root 63008  82  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发布公钥
[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服务器,先配置密钥认证

在这里插入图片描述

  • 编译步骤:

#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 编译步骤

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代码

  • 部署时需要创建代码目录的软链接

在这里插入图片描述

在这里插入图片描述

  • 编译步骤
#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期-孙克旭」一起进行文档协作


网站公告

今日签到

点亮在社区的每一天
去签到