Day03-Jenkins与集成案例

Day03-Jenkins与集成案例

  • 6. CD持续交付,持续部署实现方案
  • 7. 案例04: basketball案例,搭建开发测试专用的任务
    • 7.1 任务要求
    • 7.2 步骤
    • 7.3 详细步骤
      • 1)安装插件
      • 2)创建任务
    • 7.4 gitlab配置钩子
      • 1) 解除钩子局域网访问限制
      • 2) gitlab配置钩子
    • 7.5 与部署相关的配置与脚本
    • 7.6 案例小结:
  • 8. 案例05: java项目代码上线项目
    • 8.1 项目描述
    • 8.2 项目环境
    • 8.3 手动实现
      • 1) 代码上传到gitlab
      • 2) 配置maven
      • 3) jenkins拉取代码与手动编译代码
      • 4) war包的部署
    • 8.4 自动实现
  • 今日总结:
    • 熟练使用今日案例05.

6. CD持续交付,持续部署实现方案

CD方案优点缺点应用场景与建议
使用Jenkins执行Shell命令,脚本简单,通用shell编程,集群中有大批量节点的时候效率低通用的,初学推荐使用
通过Jenkins的插件Publish Over SSH插件实现。(分发文件,远程执行命令)。简单所有被管理节点都要在Jenkins页面配置机器较少可以用用2-3台
᲼使用Jenkins执行Ansible剧本、Ad-hoc批量管理与维护需要掌握Ans剧本,模块网站集群批量更新.jk+ansible命令或jk+ansible插件
使用Jenkins执行Docker指令。(架构中使用到了docker)更加简单,适用于集群部署。需要掌握dockerfile,dockercompose书写jk+docker命令或docker插件.jk+ansible+docker
jenkins 交付到k8s集群jk+k8s…

7. 案例04: basketball案例,搭建开发测试专用的任务

7.1 任务要求

  • 开发人员书写代码,上传到代码仓库.
  • 只要仓库收到开发上传的代码,触发jenkins 04-test-job测试任务.
  • jenkins去拉取代码仓库最新的代码并部署到测试环境中.
  • 这个案例一般用于测试环境自动化部署代码

image-20240521140710013

7.2 步骤

  • jenkins添加gitlab插件(gitee用).

  • 在jenkins创建钩子令牌(认证).

  • 在gitlab配置jenkins钩子和令牌.

  • 测试,提交代码.

image-20240521143420068

7.3 详细步骤

1)安装插件

image-20240521142424361

image-20240521142530789

2)创建任务

image-20240521141625362

image-20240521143519597

image-20240521143705148

  • 开启构建触发器:获取钩子地址和创建令牌

image-20240521144219612

image-20240521144257633

7.4 gitlab配置钩子

1) 解除钩子局域网访问限制

image-20240521150556554

image-20240521150704847

2) gitlab配置钩子

  • 进入到Gitlab项目中进行配置.

image-20240521145755570

image-20240521145906564

  • 测试钩子

image-20240521150842672

  • 测试结果

image-20240521150927313

image-20240521151116523

  • 补充:如果是码云:
  • gitee怎么配置 我们那个url是内网解析的 gitee解析不了
  • 解决: 准备个公网的jenkins.

7.5 与部署相关的配置与脚本

echo "您当前部署的代码版本为: 最新版"
#0.vars
date=$(date +%F)
file=baskball_${date}.tar.gz
#1. 打包压缩
tar zcf /tmp/${file} .
#2. 分发
##for + scp 
scp /tmp/${file}  root@172.16.1.7:/tmp/
#3. 解压
ssh root@172.16.1.7  "tar xf /tmp/${file} -C /app/code/ball/"

image-20240521151618492

7.6 案例小结:

  • 目标:提交代码,自动触发jenkins拉取代码并部署代码
  • jenkins webhook钩子

8. 案例05: java项目代码上线项目

8.1 项目描述

  • java程序的源代码存放在了代码仓库中.
  • 通过jk拉取java源代码,通过工具(maven,gradle)对代码进行编译,最终生成war或jar包.
  • 通过jk,分发部署,重启服务

8.2 项目环境

环境角色ip
gitlab代码仓库10.0.0.71/172.16.1.71
jenkinsjk10.0.0.72/172.16.1.72
web03tomcat+jdk10.0.0.9/172.16.1.9
lb01负载均衡10.0.0.5/172.16.1.5

8.3 手动实现

  • 手动上传代码到gitlab
  • 手动在jenkins机器上拉取代码.
  • 手动通过maven(mvn)编译代码生产war/jar包.
  • war包改名ROOT.war
  • 部署:
    • war包发送到web节点.
    • war包部署webapps/目录下.
    • 重启tomcat.

image-20240521153840725

1) 代码上传到gitlab

git remote -v
git remote remove orgin
git remote add origin git@gitlab.oldboylinux.cn:root/hello_world_war.git
git add .
git commit  -m "v1.0"
git tag  -a v1.0 -m v1.0
git push -u origin master
git push -u origin --tags

2) 配置maven

  • 对java源代码进行编译.读取当前目录下面的pom.xml文件.

pom.xml是java代码配置文件,里面记录代码依赖.代码war或jar名字.

  • 使用maven下载,部署,修改下配置(加速下载)

  • 选择什么版本?根据代码要求.

  • jenkins上部署maven

#1. 安装jdk 
java -version
#2. 安装 maven 
tar xf apache-maven-3.6.3-bin.tar.gz  -C /app/tools/
ln -s /app/tools/apache-maven-3.6.3/ /app/tools/maven 
echo 'export PATH=/app/tools/maven/bin/:$PATH' >>/etc/profile
source /etc/profile
mvn --version 

#3. 配置maven下载源
[root@oldboy-devops-jenkins /app/tools/maven/conf]# pwd
/app/tools/maven/conf
[root@oldboy-devops-jenkins /app/tools/maven/conf]# ll settings.xml
-rw-r--r-- 1 root root 10644 Jun 27 18:07 settings.xml
<mirrors> 下面写入 如下内容即可。
<mirror>
   <id>aliyunmaven</id>
   <mirrorOf>*</mirrorOf>
   <name>阿里云公共仓库</name> 
<url>https://maven.aliyun.com/repository/public</url>
</mirror>

3) jenkins拉取代码与手动编译代码

  • 创建maven项目

image-20240522103953157

  • 配置源码

image-20240522111705972

  • 根据提示配置maven位置.

image-20240522111952493

image-20240522112203126

  • 继续配置项目

image-20240522113350792

  • 运行项目检查结果

image-20240522113517983

  • 下面是手动编译的命令和说明
mvn clean package
clean清除已经生成的war/jar.
package创建war或jar包,打包

4) war包的部署

  • target/hello-world-war-1.0.0.war

  • 准备好tomcat环境

  • 传输war包到web节点上/opt/

  • 进入/opt/改war包名字 ROOT.war

  • 清理已有的目录和文件rm -fr /app/tools/tomcat/webapps/ROOT*

  • /opt/ROOT.war移动到/app/tools/tomcat/webapps/

  • 重启tomcat.

  • jenkins代码分发

#当前目录
/var/lib/jenkins/workspace/dev测试环境/05-java_hello_maven
#密钥认证
ssh-copy-id root@172.16.1.9
#分发war包
scp target/hello-world-war-1.0.0.war 172.16.1.9:/opt/
  • web节点部署代码
传输war包到web节点上/opt/
进入/opt/改war包名字 ROOT.war
清理已有的目录和文件rm -fr /app/tools/tomcat/webapps/ROOT*
/opt/ROOT.war移动到/app/tools/tomcat/webapps/
重启tomcat
  • 检查结果

image-20240522123812552

8.4 自动实现

image-20240522135309812

echo "您当前部署的代码版本为: ${TAG_NAME}"
echo "您任务的URL地址: ${JOB_DISPLAY_URL}"

#0.vars
date=$(date +%F)
#web_list后面可以设置为参数化构建,文本参数
web_list="172.16.1.9"
#路径 $WORKSPACE
src_dir=./target/
dst_dir=/opt/
#web节点的变量
code_dir=/server/tools/tomcat/webapps/ROOT
code_file=/server/tools/tomcat/webapps/ROOT.war
#1. 分发
fenfa() {
for ip in ${web_list}
do
  scp ${src_dir}hello-world-war-1.0.0.war root@${ip}:${dst_dir}
done
}

#2. 部署
#OK.进入/opt/改war包名字 ROOT-时间.war
#ok.清理已有的目录和文件rm -fr /app/tools/tomcat/webapps/ROOT*
#ok.给 /opt/ROOT-时间.war 创建软连接到/app/tools/tomcat/webapps/ROOT.war
#重启tomcat

deploy() {
for ip in ${web_list}
do
  ssh root@${ip} "cd ${dst_dir} ;
  mv hello-world-war-1.0.0.war ROOT-${date}.war ;
  [ -d ${code_dir} ] && {
      mkdir -p /tmp/${date};
      mv ${code_dir} ${code_file} /tmp/${date} ;
      };
    ln -s ${dst_dir}/ROOT-${date}.war  ${code_file}
    systemctl restart tomcat
   "
done

}

#主函数
main() {
  fenfa
  deploy
  }
   
main

今日总结:

熟练使用今日案例05.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/769797.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IDEA开发必备的插件,实测非常好用

1、Lombok -- 简化Java代码开发 推荐指数&#xff1a; ★★★★★ Lombok&#xff1a;首当其冲的非常推荐的当然是Lombok Lombok能以简单的注解形式来简化Java代码&#xff0c;提高开发人员的开发效率。例如开发中经常需要写的JavaBean&#xff0c;都需要花时间去添加相应的ge…

实战大数据:分布式大数据分析处理系统的开发与应用

&#x1f482; 个人网站:【 摸鱼游戏】【网址导航】【神级代码资源网站】&#x1f91f; 一站式轻松构建小程序、Web网站、移动应用&#xff1a;&#x1f449;注册地址&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交…

linux服务器安全级别提升配置修改

linux服务器安全级别提升配置修改 说明修改登录密码策略步骤 设置用户密码定期更新登录失败次数锁定步骤 锁定系统重要文件文件说明锁定文件解锁文件 防火墙设置firewalld防火墙查看防火墙状态开启防火墙关闭防火墙重新加载防火墙配置添加端口移除端口添加IP到白名单移除白名单…

JAVA 实现拍卖框架及拍卖详情流程介绍(包含代码示咧)

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

Java项目:基于SSM框架实现的网上医院预约挂号系统【ssm+B/S架构+源码+数据库+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的网上医院预约挂号系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、…

9.计算机视觉—目标检测

目录 1.物体检测边缘框目标检测数据集总结边缘框代码实现2.锚框:目标检测的一种方法IoU—交并比赋予锚框标号使用非极大值抑制(NMS)输出总结代码实现1.物体检测 边缘框 一个边缘框可以通过四个数字定义 (左上x,左上y),(右下x,右下y)(左上x,左上y,宽,高)(中间x,中间y…

铜排载流量计算

母线载流量的理论计算 有些设计规范给出了根据电流密度确定母线大小的标准&#xff0c;一般铜母线的要求是每平方毫米载流量1.55A&#xff0c;但只可以作为设计“自由空气中的单导体母线”的参考&#xff0c;不可以作为实际设备中选择母线截面积的方法。也有些设计手册里给出了…

使用Ckman部署ClickHouse集群介绍

使用Ckman部署ClickHouse集群介绍 1. Ckman简介 ClickHouse Manager是一个为ClickHouse数据库量身定制的管理工具&#xff0c;它是由擎创科技数据库团队主导研发的一款用来管理和监控ClickHouse集群的可视化运维工具。目前该工具已在github上开源&#xff0c;开源地址为&…

WordPress主题大前端DUX v8.7源码下载

全新&#xff1a;用户注册流程&#xff0c;验证邮箱&#xff0c;设置密码 新增&#xff1a;列表显示小视频和横幅视频 新增&#xff1a;文章内容中的外链全部增加 nofollow 新增&#xff1a;客服功能中的链接添加 nofollow 优化&#xff1a;产品分类的价格显示

《C++20设计模式》桥接模式经验分享

文章目录 一、前言二、探讨一个类有多个抽象父类的情况&#xff08;为什么会有桥接&#xff09;三、桥接模式3.1 UML类图3.2 实现 四、最后 一、前言 怎么判断你是否理解桥接模式了呢&#xff1f;&#x1f9d0; 试着回答下面这个问题吧&#xff01;&#x1f60b; 桥接模式到底…

Mybatis Plus 自动填充注解 @TableField(fill = FieldFill.INSERT_UPDATE)

第一步&#xff1a;在需要自动填充的位置加上注解 通过在创建时间和修改时间上添加 fill 填充字段 进行自动填充 第二步&#xff1a;要想实现自动填充还需要实现MetaObjectHandler接口&#xff0c;在这里实现自动填充的逻辑 Component public class MyMetaObjectHandler …

pydub、ffmpeg 音频文件声道选择转换、采样率更改

快速查看音频通道数和每个通道能力判断具体哪个通道说话&#xff1b;一般能量大的那个算是说话 import wave from pydub import AudioSegment import numpy as npdef read_wav_file(file_path):with wave.open(file_path, rb) as wav_file:params wav_file.getparams()num_cha…

通过卷防水上限,解锁手机的新玩法?IP68之间亦有不同

当手机的日常防水已经成了基本功&#xff0c;防水能力的上限便成了新的赛道。 毕竟再谨慎的人&#xff0c;也可能会有手滑的时候。这个时候&#xff0c;一台有着IP68级防水的手机&#xff0c;就能给你提供一份安心。 【IP68是标准上限&#xff0c;不是手机防水上限】 IP68是…

前端三件套开发模版——产品介绍页面

今天有空&#xff0c;使用前端三件套html、css、js制作了一个非常简单的产品制作页面&#xff0c;与大家分享&#xff0c;希望可以满足大家应急的需求。本页面可以对产品进行“抢购”、对产品进行介绍&#xff0c;同时可以安排一张产品的高清大图&#xff0c;我也加入了页面的背…

【数据结构】建堆的时间复杂度

一.向下调整建堆 1.二叉树层数与总节点个数关系 层数一定时&#xff0c;在二叉树节点个数最大的情况下&#xff0c;二叉树为满二叉树&#xff0c;如下图所示&#xff0c;可以清晰地看到在满二叉树中第h层有2^(h-1)个节点&#xff0c;总节点N就等于一个等比数列的求和&#xf…

Ollama + Docker + AnythingLLM 搭建本地多用户AI知识库

整个过程需要准备三个工具&#xff1a; Ollama&#xff1a; 用于运行本地大模型的管理&#xff1a;llama3, qwen2等 Docker&#xff1a;用于运行AnythingLLM。 AnythingLLM&#xff1a;知识库运行平台&#xff0c;提供知识库构建及运行的功能。 Ollama, Docker 这二个安装不…

帕金森病患者的运动秘诀:你值得更健康!

大家好&#xff0c;今天我想和大家聊聊一个我们可能不太熟悉&#xff0c;但却值得每一个人去关注的话题——帕金森病患者的运动。帕金森病&#xff0c;这个听起来有些陌生的名词&#xff0c;其实离我们并不遥远。随着年纪的增长&#xff0c;我们身边可能就有亲友正在遭受这个疾…

MIPI竖屏解决方案,普立晶POL8901升级POL8903 两PORT LVDS转MIPIDSI,加90度旋转

POL8903描述&#xff1a; 系统&#xff1a; •采用高性能MIPS 32位CPU内核&#xff1b; •高性能DSP内核图像处理单元&#xff1b; •16 KB指令Cache&#xff1b;16 KB数据Cache&#xff1b; •96 KB SRAM&#xff1b;内置DDR 3控制器&#xff1b; LVDS输入&#xff1a; …

【JD-GUI】MacOS 中使用Java反编译工具JD-GUI

希望文章能给到你启发和灵感&#xff5e; 如果觉得文章对你有帮助的话&#xff0c;点赞 关注 收藏 支持一下博主吧&#xff5e; 阅读指南 开篇说明概念理解一、基础环境说明1.1 硬件环境1.2 软件环境 二、下载与安装2.1 选择对应版本2.2 解压运行排除异常&#xff1a;2.3 关于…

ubuntu篇---添加环境变量并且在pycharm中使用

ubuntu篇—添加环境变量并且在pycharm中使用 一. 添加环境变量 vim ~/.bashrc 在文件末尾加上 保存退出 source ~/.bashrc二. 在pycharm中添加环境变量 1.打开pycharm&#xff0c;并打开你的项目 2.点击菜单栏中的“Run”&#xff0c; 选择“Edit Configurations” 3.在弹…