当前位置: 首页 > news >正文

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

文章目录

  • 0. 老男孩思想-传统文化之"天理不外乎人情"
  • 1. GitLab备份
    • 1.1 修改配置文件
    • 1.2 备份
  • 2. GitLab升级规范
  • 3. GitLab配置https
  • 4. Jenkins基础介绍
    • 4.1 安装Jenkins
    • 4.2 登录Jenkins前端
    • 4.3 安装插件与修改密码
  • 5. Jenkins优化
    • 5.1 配置命令解释器
    • 5.2 取消主机密钥验证
  • 6. Jenkins基本使用
    • 6.1 创建测试任务
      • 6.1.1 填写项目名称
      • 6.1.2 基础配置
      • 6.1.3 运行任务
    • 6.2 修改Jenkins的执行用户
    • 6.3 小鸟飞飞代码发布任务
      • 6.3.1 创建gitlab项目仓库
      • 6.3.2 Jenkins连接GitLab
      • 6.3.3 创建任务
      • 6.3.4 运行任务
      • 6.3.5 部署代码到服务器
  • 7. 参数化构建
    • 7.1 选项参数
    • 7.2 Git参数
    • 7.3 文本参数
    • 7.4 编译步骤
    • 7.5 运行任务
    • 7.6 部署bird代码
  • 8. 思维导图

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} 
doscp  ${CODE_TMP_DIR}${CODE_NAME}   ${ip}:${CODE_TMP_DIR}
done#3.部署-后期交给ansible
#(未涉及到) tag标签
#代码直接解压到/app/code/bird/目录下即可.
for ip in ${IP_ADDRS} 
dossh $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 "输入错误"
esacecho "代码当前的版本:${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期-孙克旭」一起进行文档协作

http://www.lryc.cn/news/613099.html

相关文章:

  • golang的面向对象编程,struct的使用
  • 急危重症专科智能体”构建新一代急诊、手术与重症中心的AI医疗方向探析
  • 【深度学习机器学习】构建情绪对话模型:从数据到部署的完整实践
  • 小鸡模拟器安卓版:经典街机游戏的移动体验
  • Elcomsoft Wireless Security Auditor 安装教程-安全检测工具使用指南
  • 数据结构----栈和队列认识
  • 深度学习-卷积神经网络CNN-1×1卷积层
  • 仓库管理系统-21-前端之入库和出库管理
  • Windows中安装rustup-init.exe以及cargo build报错443
  • 零基础-动手学深度学习-9.3. 深度循环神经网络
  • 流程图使用规范
  • Android 之 面试八股文
  • GCC与NLP实战:编译技术赋能自然语言处理
  • 解决GitHub无法打开
  • idea开发工具中git如何忽略编译文件build、gradle的文件?
  • 复杂井眼测量中,陀螺定向和磁通门定向哪个更胜一筹?
  • 幕后英雄 —— Background Scripts (Service Worker)
  • 浅析 Berachain v2 ,对原有 PoL 机制进行了哪些升级?
  • 我的世界Java版1.21.4的Fabric模组开发教程(十七)自定义维度
  • 比较一下XGBoost与LSTM、GRU、Transformer数据格式方面的核心区别
  • 零基础-动手学深度学习-9.1. 门控循环单元(GRU)及代码实现
  • Docker国内可用镜像列表(长期免费)
  • 接入小甲鱼数字人API教程【详解】
  • Next.js 样式:CSS 模块、Sass 等
  • ENSP 中静态路由负载分担
  • vue3接收SSE流数据进行实时渲染日志
  • RabbitMQ-日常运维命令
  • CS231n2017 Assignment3 RNN、LSTM部分
  • 3深度学习Pytorch-神经网络--全连接神经网络、数据准备(构建数据类Dataset、TensorDataset 和数据加载器DataLoader)
  • PID基础知识