(CICD)自动化构建打包、部署(Jenkins + maven+ gitlab+tomcat)

news2026/3/14 22:59:44
一、平滑发布与灰度发布**什么叫平滑**在发布的过程中不影响用户的使用系统不会因发布而暂停对外服务不会造成用户短暂性无法访问**什么叫灰度**发布后让部分用户使用新版本其它用户使用旧版本逐步扩大影响范围最终达到全部更新的发布方式 灰度发布与平滑发布其实是关联的。当服务器的数量只有一台的时候不存在灰度发布一旦发布了就是所有用户都更新了所以这个时候只有平滑发布。当服务器数量大于一台的时候只要每台服务器都能达到平滑发布的方式然后设定好需要发布的服务器占比数量就可以实现灰度发布了。单台服务器的平滑发布模式单机状态下应用的持续服务主要依靠Nginx的负载均衡及自动切换功能为了能够切换应用需要在服务器中创建两个相同的独立应用分配两个不同的端口例如:app1,端口801; app2,端口802在Nginx中将app1,app2作为负载均衡加载upstream myapp{ server 127.0.0.1:801; //app1 server 127.0.0.1:802; //app2 } 然后设置代理超时为1秒以便在某个应用停止时及时切换到另一个应用 server { listen 80; server_name localhost; location /{ proxy_pass http://myapp; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 1; proxy_read_timeout 1; proxy_send_timeout 1; } } 以上内容写在单独的配置文件中/vhost/pub/pub_app.conf 在nginx.conf里包含进去 include /vhost/*.conf;现在系统会均衡地分配用户访问app1与app2。接下来我们进行平滑发布我们先把app1停止然后将新版本发布到app1中步骤1 准备发布app1配置文件 新做一个配置文件 pub_app1_down.conf,内容中把app1停止掉 upstream myapp{ server 127.0.0.1:801 down; //app1 server 127.0.0.1:802; //app2 } 将这个文件内容覆盖掉在原有的pub_app.conf cp -f /vhost/pub/pub_app1_down.conf /vhost/pub_app.conf 步骤2停止app1应用 平滑重新加载一下nginx: service nginx reload 或者 /usr/local/nginx/sbin/nginx -s reload 此时所有的请求都转到了app2了 步骤3更新app1 现在可以通过各种方式来更新应用了例如压缩包方式 wget http://version.my.com/appudate/myapp/myapp-v3.2.32.tar unzip -o -d /home/wwwroot/app1/ myapp-v3.2.32.tar 其中-o:不提示的情况下覆盖文件-d:指定解压目录 步骤3.5 内部测试 如果需要的话可以在这一步对app1进行内部测试以确保应用的正确性 步骤4准备发布app2配置文件 此时app1已经是最新版本的文件了可以切换到app1来对外 创建一个新的nginx配置文件:pub_app2_down.conf设置为app1对外,app2停止即可 upstream myapp{ server 127.0.0.1:801; //app1 server 127.0.0.1:802 down; //app2 } 将这个文件内容覆盖掉在原有的pub_app.conf cp -f /vhost/pub/pub_app2_down.conf /vhost/pub_app.conf 步骤5切换到app1新版本应用 平滑重新一下nginx: service nginx reload 或者 /usr/local/nginx/sbin/nginx -s reload 此时所有的请求都转到了app1了新版本开始运行 步骤6更新app2 与第3步一样解压就可以了这里可以省去下载过程 unzip -o -d /home/wwwroot/app2/ myapp-v3.2.32.tar 步骤7恢复app1,app2同时对外 cp -f /vhost/pub/pub_app.conf /vhost/pub_app.conf 平滑重新一下nginx: service nginx reload 或者 /usr/local/nginx/sbin/nginx -s reload 至此整个应用都已经更新。 将各步骤中的脚本汇总一下 [pub.sh] # 平滑发布 v1.0 #step 1 cp -f /vhost/pub/pub_app1_down.conf /vhost/pub_app.conf #step 2 service nginx reload #step 3 wget http://version.my.com/appudate/myapp/myapp-v3.2.32.tar unzip -o -d /home/wwwroot/app1/ myapp-v3.2.32.tar #step 4 cp -f /vhost/pub/pub_app2_down.conf /vhost/pub_app.conf #step 5 service nginx reload #step 6 unzip -o -d /home/wwwroot/app2/ myapp-v3.2.32.tar #step 7 cp -f /vhost/pub/pub_app.conf /vhost/pub_app.conf service nginx reload # 平滑发布 v1.0 备注也可以充分利用nginx的宕机检测省去步骤12457 简化后的脚本如下 [pub_mini.sh] # 简化版脚本 wget http://version.my.com/appudate/myapp/myapp-v3.2.32.tar unzip -o -d /home/wwwroot/app1/ myapp-v3.2.32.tar unzip -o -d /home/wwwroot/app2/ myapp-v3.2.32.tar # over 多台服务器平滑发布模式有了单台平滑发布模式的基础多台服务器就简单了。每台服务器当作应用进行发布就可以了由于nginx有宕机自动检测功能只需要在每台服务器上先停止发布然后更新文件再启动就可以了如果选择部分的服务器进行更新那就是灰度了。二、介绍 CI / CD在本文档中我们将概述持续集成持续交付和持续部署的概念以及GitLab CI / CD的介绍。1、为什么要 CI / CD 方法简介软件开发的连续方法基于自动执行脚本以最大限度地减少在开发应用程序时引入错误的可能性。从新代码的开发到部署它们需要较少的人为干预甚至根本不需要干预。它涉及在每次小迭代中不断构建测试和部署代码更改从而减少基于有缺陷或失败的先前版本开发新代码的机会。这种方法有三种主要方法每种方法都根据最适合您的策略进行应用。 Devops持续集成(Continuous Integration, CI): 代码合并构建部署测试都在一起不断地执行这个过程并对结果反馈。持续部署(Continuous Deployment, CD): 部署到测试环境、预生产环境、生成环境。持续发布(Continuous Delivery, CD): 将最终产品发布到生成环境、给用户使用。1、持续集成考虑一个应用程序其代码存储在GitLab中的Git存储库中。开发人员每天多次推送代码更改。对于每次推送到存储库您都可以创建一组脚本来自动构建和测试应用程序从而减少向应用程序引入错误的可能性。这种做法被称为持续整合 ; 对于提交给应用程序的每个更改 - 甚至是开发分支 - 它都是自动且连续地构建和测试的确保所引入的更改通过您为应用程序建立的所有测试指南和代码合规性标准。GitLab本身就是使用持续集成作为软件开发方法的一个例子。对于项目的每次推送都会有一组脚本来检查代码。2、持续交付持续交付是持续集成的一个步骤。您的应用程序不仅在推送到代码库的每个代码更改时都构建和测试而且作为一个额外的步骤它也会连续部署尽管部署是手动触发的。此方法可确保自动检查代码但需要人工干预才能手动并策略性地触发更改的部署。3、持续部署持续部署 也是持续集成的又一步类似于持续交付。不同之处在于您不必手动部署应用程序而是将其设置为自动部署。完全不需要人工干预就可以部署您的应用程序。2、GitLab CI / CD简介GitLab CI / CD是GitLab内置的强大工具允许您将所有连续方法持续集成交付和部署应用于您的软件而无需第三方应用程序或集成。3、GitLab CI / CD 的工作原理要使用GitLab CI / CD您只需要一个托管在Git存储库中的应用程序代码库并在一个名为的文件中指定构建测试和部署脚本该文件[这里是代码003]位于存储库的根路径中。在此文件中您可以定义要运行的脚本定义包含和缓存依赖项选择要按顺序运行的命令以及要并行运行的命令定义要部署应用程序的位置以及指定是否将要自动运行脚本或手动触发任何脚本。熟悉GitLab CI / CD后您可以在配置文件中添加更多高级步骤。要向该文件添加脚本您需要按照适合您的应用程序的顺序组织它们并且这些脚本符合您希望执行的测试。要想象可视化过程请假设您添加到配置文件中的所有脚本与您在计算机终端上运行的命令相同。将.gitlab-ci.yml配置文件添加到存储库后GitLab将检测到它并使用名为GitLab Runner的工具运行脚本该工具与终端类似。脚本被分组到作业中它们一起组成一个管道。.gitlab-ci.yml文件的极简主义示例可以包含before_script: - apt-get install rubygems ruby-dev -y run-test: script: - ruby --version该before_script属性将在运行任何内容之前为您的应用程序安装依赖项并且调用 的作业run-test将打印当前系统的Ruby版本。它们都构成了在每次推送到存储库的任何分支时触发的管道。GitLab CI / CD不仅可以执行您设置的作业还可以显示执行过程中发生的情况如您在终端中看到的那样您可以为应用创建策略GitLab会根据您定义的内容为您运行管道。您的管道状态也由GitLab显示最后如果出现任何问题您可以轻松 回滚所有更改4、基本CI / CD工作流程这是GitLab CI / CD如何适用于通用开发工作流程的一个非常简单的示例。假设您已在一个问题中讨论过代码实现并在本地处理您提出的更改。将提交推送到GitLab中远程存储库中的功能分支后将触发为项目设置的CI / CD管道。通过这样做GitLab CI / CD运行自动脚本顺序或并行到构建并测试您的应用。使用“评论应用”预览每个合并请求的更改如您所见localhost。一旦您对实施感到满意让您的代码经过审核和批准。将功能分支合并到默认分支。GitLab CI / CD会自动将更改部署到生产环境中。最后如果出现问题您和您的团队可以轻松地将其回滚。GitLab CI / CD能够做得更多但这个工作流程体现了GitLab跟踪整个过程的能力而无需任何外部工具来交付您的软件。而且最有用的是您可以通过GitLab UI可视化所有步骤。5、首次设置 GitLab CI / CD要开始使用GitLab CI / CD您需要熟悉[这里是代码010]配置文件语法及其属性。本文档介绍了GitLab CI / CD在GitLab页面范围内的概念用于部署静态网站。虽然它适用于想要从头开始编写自己的Pages脚本的用户但它也可以作为GitLab CI / CD设置过程的介绍。它涵盖了编写CI / CD配置文件的第一个常规步骤因此我们建议您通读它以了解GitLab的CI / CD逻辑并了解如何为任何应用程序编写自己的脚本或调整现有脚本。有关GitLab的CI / CD配置选项的深入视图请查看 [这里是代码011]完整参考。6、GitLab CI / CD功能集使用Auto DevOps轻松设置应用程序的整个生命周期。使用GitLab Pages部署静态网站。将您的应用程序部署到不同的环境。使用Review Apps预览每个合并请求的更改。使用Container Registry开发安全的私有Docker镜像。安装自己的GitLab Runner。安排管道。使用安全测试报告检查应用程序漏洞。具体实施参考 https://segmentfault.com/a/1190000016069906三、Jenkins CI/CD1、 Jenkins CI/CD 流程图说明这张图稍微更形象一点上线之前先把代码git到版本仓库然后通过Jenkins 如Java项目通过maven去构建这是在非容器之前典型的自动化的一个版本上线流程。那它有哪些问题呢如它的测试环境预生产环境测试环境。会存在一定的兼容性问题 环境之间会有一定的差异说明它这里有一个docker harbor 的镜像仓库通常会把你的环境打包为一个镜像通过镜像的方式来部署。Jenkins持续集成01—Jenkins服务搭建和部署2、介绍 Jenkins1、Jenkins概念Jenkins是一个功能强大的应用程序允许持续集成和持续交付项目无论用的是什么平台。这是一个免费的源代码可以处理任何类型的构建或持续集成。集成Jenkins可以用于一些测试和部署技术。Jenkins是一种软件允许持续集成。2、Jenkins目的① 持续、自动地构建/测试软件项目。② 监控软件开放流程快速问题定位及处理提示开放效率。3、特性① 开源的java语言开发持续集成工具支持CICD。② 易于安装部署配置可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署可方便web界面配置管理。③ 消息通知及测试报告集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知生成JUnit/TestNG测试报告。④ 分布式构建支持Jenkins能够让多台计算机一起构建/测试。⑤ 文件识别:Jenkins能够跟踪哪次构建生成哪些jar哪次构建使用哪个版本的jar等。⑥ 丰富的插件支持:支持扩展插件你可以开发适合自己团队使用的工具如gitsvnmavendocker等。4、产品发布流程产品设计成型 - 开发人员开发代码 - 测试人员测试功能 - 运维人员发布上线持续集成Continuous integration简称CI持续交付Continuous delivery持续部署continuous deployment3、安装Jenkins1、安装JDKJenkins是Java编写的所以需要先安装JDK这里采用yum安装如果对版本有需求可以直接在Oracle官网下载JDK也可自己编译安装。2、安装Jenkins1、上传 jdk11 tomcat jenkins.war 2、解压jdk [rootjenkins ~]# yum -y install fontconfig [rootjenkins ~]# tar xf jdk-11.0.18_linux-x64_bin.tar.gz 3、解压tomcat [rootjenkins ~]# tar xf apache-tomcat-8.5.50.tar.gz 4、拷贝并修改名称 [rootjenkins ~]# mv jdk-11.0.18/ /usr/local/java mv apache-tomcat-8.5.50 /usr/local/tomcat 5、处理环境变量 [rootjenkins ~]# vim /etc/profile.d/java.sh TOMCAT_HOME/usr/local/tomcat JAVA_HOME/usr/local/java PATH$TOMCAT_HOME/bin:$JAVA_HOME/bin:$PATH export TOMCAT_HOME JAVA_HOME PATH [rootjenkins ~]# source /etc/profile.d/java.sh 6、上传jenkins [rootjenkins ~]# rm -rf /usr/local/tomcat/webapps/* [rootjenkins ~]# cp jenkins.war /usr/local/tomcat/webapps/ 7、启动tomcat并页面访问 [rootjenkins ~]# startup.sh 访问 ip:8080为了安全考虑首先需要解锁Jenkins请在/var/lib/jenkins/secrets/initialAdminPassword中查看文件。在Jenkins服务器上查询管理员密码[rootcentos7-1 ~]# cat /data/jenkins/secrets/initialAdminPassword250d0360e2a149dbb7402f96a26945e2② 选择需要安装的插件选择默认推荐即可会安装通用的社区插件剩下的可以在使用的时候再进行安装。开始安装由于网络原因有一些插件会安装失败。③ 设置Admin用户和密码④ 安装完成⑤ 登录Jenkins安装插件gitlabgitlab webhookblue oceanmavenPipeline Maven4、安装完后简单的配置1、系统配置① 系统消息Welcome to Jenkins~② 全局属性—环境变量可根据自己的项目添加如gitlab③ 扩展邮件通知用于之后项目构建后发送邮件④ 邮件配置管理监控配置—系统管理员邮件地址along163.com要和下面的用户名一致邮件通知配置如下可以点击测试是否配置成功2、全局工具配置如果你持续集成需要用的哪些工具就需要在这里添加配置后边持续集成中将会详细讲解这里只举例添加JDK工具点击新增— 取消自动安装 ----然后查询Jenkins服务器上JDK的路径填写JAVA_HOME — 保存即可3、插件管理这里有可更新、可选未安装插件、已安装插件可以通过过滤快速查找5、添加节点node 节点的作用分布式构建通过添加多个节点可以在多台计算机上并行执行构建任务从而加快构建速度和提高效率。节点可以是物理计算机、虚拟机、云实例或容器等。扩展计算能力通过添加更多的节点可以扩展Jenkins的计算能力使其能够处理更多的并发构建任务从而适应不断增长的工作负载。平台兼容性使用Node节点可以在不同的操作系统、不同的硬件平台上执行构建任务以满足项目的特定需求。您可以配置节点以适应特定的操作系统、软件环境和工具链。隔离和安全性将构建任务分配给独立的节点可以提供更好的隔离和安全性。节点之间相互独立一个节点的故障或问题不会影响其他节点的工作。负载平衡Jenkins可以根据节点的负载情况自动分配任务从而实现负载平衡。这样可以更好地利用可用资源并确保每个节点都能以最佳状态运行。1、准备节点1、准备一台新的服务器并配置java环境 2、主节点添加凭据并推送公钥 3、在node节点配置需要的工具2、系统配置3、添加节点4、检查节点6、开始一个简单的项目1、新建任务输入一个项目名称构建一个自由风格的软件项目2、配置项目1General描述test 自己随意添加显示名称along 是Jenkins看到的项目名称其他更多的用法后续再讲2源码管理就是拉取代码的地方可以选择git或SVN① 选择git输入gitlab项目地址② 点击Add添加凭据选择SSH Username with pricate key秘钥认证输入私钥即可注Jenkins服务器需在gitlab项目上有key因为只是简单的示范所以就只有这些简单的配置3、构建项目1点击项目damo立即构建2可以点击#1查询详细的控制台输出信息3在Jenkins服务器上认证在这个目录下能找到自己拉取git的项目证明项目成功完成[rootjenkins ~]# ls /data/jenkins/workspace/damo damotmp四、JenkinsMavenGitlabTomcat 自动化构建打包、部署1、环境需求本帖针对的是Linux环境Windows或其他系统也可借鉴。具体只讲述Jenkins配置以及整个流程的实现。1.JDK或JRE及Java环境变量配置我用的是JDK1.8.0_144网上帖子也很多不赘述。2.Jenkins 持续集成和持续交付项目。3.现有项目及gitlabSVN或本地路径也行地址。4.maven工具及环境变量配置用于构建和管理任何基于Java的项目。5.下载解压Tomcat我用的是Tomcat8。2、环境准备1、安装服务1安装JDK、Jenkins和gitlabJDK yum安装和编译安装都可以gitlab 安装详见gitlab 部署tomcat 安装详见tomcat 服务部署2mave安装1、下载 maven 包http://mirrors.cnnic.cn/apache/maven 选择自己需要的maven版本wget https://mirrors.cnnic.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz tar -zxvf apache-maven-3.5.4-bin.tar.gz2、配置环境变量1配置全局环境变量vim /etc/profile.d/jenkins_tools.sh#JDK export JAVA_HOME/usr/java/jdk1.8.0_144 export JRE_HOME${JAVA_HOME}/jre export CLASSPATH.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH${JAVA_HOME}/bin:$PATH export TIME_STYLE%Y/%m/%d %H:%M:%S #maven export MAVEN_HOME/data/jenkins_tools/maven-3.5.4 export PATH${MAVEN_HOME}/bin:$PATH使环境变量生效source /etc/profile.d/jenkins_tools.sh2测试java -version java version 1.8.0_144 Java(TM) SE Runtime Environment (build 1.8.0_144-b01) Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode) $ mvn -version Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:1408:00) Maven home: /data/jenkins_tools/maven-3.5.4 Java version: 1.8.0_144, vendor: Oracle Corporation, runtime: /usr/java/jdk1.8.0_144/jre Default locale: en_US, platform encoding: UTF-8 OS name: linux, version: 3.10.0-514.26.2.el7.x86_64, arch: amd64, family: unix3、Jenkins工具、环境、插件配置1、全局工具配置系统管理—全局工具配置修改maven默认settings.xml文件配置git、jdk、maven工具后保存不要勾选自动安装。2、配置全局变量系统管理—系统设置—全局属性3、安装3个插件系统管理—插件管理1Maven Integration plugin 安装此插件才能构建maven项目2Deploy to container Plugin 安装此插件才能将打好的包部署到tomcat上(3) mvn配置国内源4、创建一个Maven工程1、构建maven项目2、源码管理填写git地址信息添加认证凭据详见Jenkins持续集成01—Jenkins服务搭建和部署3、构建触发器可以根据自己的业务需求定制① Build whenever a SNAPSHOT dependency is built检测到gitlab项目代码被重新构建后就触发② 轮询 SCM*/2 * * * * 每隔2分钟检查一次4、打包前步骤根据自己需求可以添加一些操作如一些shell命令5、build打包构建① Root POM指定pom.xml的文件路径这里是相对路径② Goals and optionsmvn的选项构件参数6、构建后操作1选择deploy war to a container部署到tomcat2配置tomcat信息WAR/EAR files输入war包的相对路径如我的war包在新建目录的target下context path输入部署tomcat的名称就部署在webapps下的目录名add container增加容器一般选tomcat 8X就可以。这里的username与password需要到tomcat的conf文件夹中的tomcat-users.xml修改。tomcat URL就是你希望把war包部署到的tomcat所在IP地址最后面不需要再加斜杠/。tomcat-users.xml中的用户名及密码默认是注释掉的所以需要修改也可以直接复制以下代码到之前。然后到tomcat下面webapps/manager/META-INF/context.xml 注销掉红色部分。因为默认tomcat不可以通过外部ip访问管理界面。一定要启动Tomcat不然等构建等时候会报拒绝连接3添加tomcat的凭据7、配置邮件通知增加构建后操作—Editable Email Notification使用邮件同事前需要再系统配置中进行邮箱配置1配置邮件信息2设置邮件触发器triggers默认触发器Failure - Any 无论何时失败触发加一个success作为测试修改收件人为recipient list到这里就配置完成了点击构建从控制台查看输出信息即可5、构建项目1、立即构建2、查看控制台输出点击#1—控制台输出就能看到执行的整个过程3、验证项目是否构建成功1成功向上蓝色失败即为红色2在tomcat上查看项目3收到项目构建成功的邮件五、jenkins gitlab nginx 自动部署(webhook)构建新的项目构建自由风格项目源码管理git 如何添加认证构建触发器 gitlab-plugin gitlab-hook要记录下上边的URL和认证密钥切换到gitlab找到对应的git库 点击setting -- Integrations ,填写以下内容然后下拉点击 Add webhook可能会报下列错误这是新版本gitlab 的保护功能禁止内网跳转解决方法如下点击setting -- network 找到 Outbound requests重复上列步骤添加 webhook。即可成功。测试:六、Jenkins与Docker的自动化CI/CD流水线实践Pipeline 有诸多优点例如项目发布可视化明确阶段方便处理问题一个Jenkins File文件管理整个项目生命周期Jenkins File可以放到项目代码中版本管理Jenkins管理界面操作实例Pipeline的简单使用这里是比较重要的核心构建流程点击保存之后立即构建映像中普通Jenkins构建方式步骤而pipeline 的构建流程pipeline有诸多优点项目发布可视化明确阶段方便处理问题一个Jenkins File 文件管理整个项目生命周期Jenkins File 可以放到项目代码中版本管理一个Jenkins file 维护一个生命周期就像写代码一样只维护这个file文件就可以了。小结Jenkins与kubernetes搭建CI/CD流水线有诸多好处Jenkins高可用自动伸缩环境隔离易维护Maven插件Maven Integration pluginDeploy to container Pluginwebhook插件gitlab-plugingitlab-hookjenkins 插件安装缓慢问题vim ~/.jenkins/hudson.model.UpdateCenter.xml http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json vim ~/.jenkins/updates/default.json % s/www.google.com/www.baidu.com/g % s/updates.jenkins.io/download/mirrors.tuna.tsinghua.edu.cn/jenkins/g 旧版 http://updates.jenkins-ci.org/download 替换成 https://mirrors.tuna.tsinghua.edu.cn/jenkins 新版https://updates.jenkins.io/download 替换成 https://mirrors.tuna.tsinghua.edu.cn/jenkins 修改完以后重启Jenkins服务再输入密码继续安装速度贼快。代码中版本管理[外链图片转存中…(img-FD9Gvysk-1716297681339)]一个Jenkins file 维护一个生命周期就像写代码一样只维护这个file文件就可以了。[外链图片转存中…(img-Y27e0Ib5-1716297681339)][外链图片转存中…(img-Aj0FTZuk-1716297681340)][外链图片转存中…(img-FvZ5XOk7-1716297681340)]小结Jenkins与kubernetes搭建CI/CD流水线有诸多好处Jenkins高可用自动伸缩环境隔离易维护Maven插件Maven Integration pluginDeploy to container Pluginwebhook插件gitlab-plugingitlab-hookjenkins 插件安装缓慢问题vim ~/.jenkins/hudson.model.UpdateCenter.xml http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json vim ~/.jenkins/updates/default.json % s/www.google.com/www.baidu.com/g % s/updates.jenkins.io/download/mirrors.tuna.tsinghua.edu.cn/jenkins/g 旧版 http://updates.jenkins-ci.org/download 替换成 https://mirrors.tuna.tsinghua.edu.cn/jenkins 新版https://updates.jenkins.io/download 替换成 https://mirrors.tuna.tsinghua.edu.cn/jenkins 修改完以后重启Jenkins服务再输入密码继续安装速度贼快。总结笔记http下载gitee直接下载ssh的话需要在个人设置里面添加要拉去代码的服务器的公钥才可以上传的话就要登录才可以有新的项目之后分支添加课件 1.7.1gitlab 配置两核四Gxiaowang 前端xiaoli 后端牛马 管理xiaohei 维护jenkins安装及插件配置从节点的时候高级里面的java路径不需要输入邮件发送失败 在全局里面少了个点https://gitee.com/hyunze/easy-springmvc-maven gitee的项目克隆gitlab root Qq111111jenkins admin 123456gitee私人令牌55ef1dd1aa15751956581e184907c995自己下载的gitee的项目上传到gitlab之后需要更改pom文件的java版本号当我修改了gitlab里面的java文件文件名直接改了我都不知道发生了什么然后我去jenkins的服务器里面找到那个文件并改了名字才好了/root/.jenkins/workspace/maven-test1/src/main/java/spring/demo/service/D…参数化构建模版1 3 4 jenkins gitlab tomcat-java 没做完 先快照 2是node01

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…