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

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

一、平滑发布与灰度发布**什么叫平滑**在发布的过程中不影响用户的使用系统不会因发布而暂停对外服务不会造成用户短暂性无法访问**什么叫灰度**发布后让部分用户使用新版本其它用户使用旧版本逐步扩大影响范围最终达到全部更新的发布方式 灰度发布与平滑发布其实是关联的。当服务器的数量只有一台的时候不存在灰度发布一旦发布了就是所有用户都更新了所以这个时候只有平滑发布。当服务器数量大于一台的时候只要每台服务器都能达到平滑发布的方式然后设定好需要发布的服务器占比数量就可以实现灰度发布了。单台服务器的平滑发布模式单机状态下应用的持续服务主要依靠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

相关文章:

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

一、平滑发布与灰度发布 **什么叫平滑:**在发布的过程中不影响用户的使用,系统不会因发布而暂停对外服务,不会造成用户短暂性无法访问; **什么叫灰度:**发布后让部分用户使用新版本,其它用户使用旧版本&am…...

企业碳排放权交易会计信息处理规范 免费下载

企业碳排放权交易会计信息处理规范(T/GDES 1—2016) 一、团体官方承诺 广东省节能减排标准化促进会发布的T/GDES 1—2016《企业碳排放权交易会计信息处理规范》团体标准遵循开放、公平、透明、协商一致和促进贸易和交流的原则,按照在本平台…...

鸿蒙原生应用开发进阶之路:Flutter工程师的鸿蒙转型与金融/保险应用实战

引言 随着鸿蒙系统(HarmonyOS)的持续演进和生态扩张,其“一次开发,多端部署”的理念吸引了众多开发者的目光。对于拥有Flutter开发经验的工程师而言,鸿蒙原生开发既是新的机遇,也是技术升级的挑战。特别是…...

什么是 OpenClaw

OpenClaw(曾用名 Clawdbot、Moltbot)是一款开源的个人 AI 助手平台,于 2026 年初在GitHub 上迅速走红,成为近年来增长最快的开源项目之一。它能够在用户自己的设备上本地运行,通过 WhatsApp、Telegram、Discord、飞书、…...

端侧AI 的定义与发展背景

大模型技术经历了参数竞赛与生成能力的突破后,行业焦点已从纯粹的“模型能力”转向“落地能力”。回顾人工智能近年来的发展,其主战场正经历一次深刻的转移。随着技术逐渐趋于同质化,AI 的下一步竞争,不再是“谁的模型更强”&…...

OmoFun 1.1.4 | 追番神器官方APP下载.官网入口

OmoFun动漫(又称“动漫共和国”)是一个深受二次元爱好者喜爱的高品质动漫聚合平台,致力于为用户提供全方位、无广告的沉浸式追番体验。该平台由专业团队运营,拥有庞大的内容储备,涵盖日本新番、国产原创动画、欧美热门…...

打卡信奥刷题(2949)用C++实现信奥题 P5878 奖品

P5878 奖品 题目描述 学校刚开完运动会,准备为尽可能多的同学评奖,并为每个人颁发一份奖品。一份奖品包括 NNN 个物品,如:555 支铅笔、101010 本练习薄等。每份奖品完全一样。虽然学校的保管室里还有一些办去年运动会后剩余的物品…...

某奢侈品品牌虚拟零售AI架构案例:用AI驱动的高端服务提升品牌价值

某奢侈品品牌虚拟零售AI架构案例:用AI驱动的高端服务提升品牌价值 引言:当奢侈品遇上AI,重新定义“高端服务” 凌晨1点,巴黎近郊的LuxuryX虚拟私域门店里,用户Elsa(一位连续3年的VVIP)正对着屏幕…...

Python基于flask-django考研学习系统的设计与实现

目录系统需求分析技术选型系统模块设计开发流程关键问题解决参考资源项目技术支持可定制开发之功能创新亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作系统需求分析 明确考研学习系统的核心功能需求,包括用户管理、学习资源…...

关于keil中编译器版本,也就是库不兼容问题的解决办法

问题现象:Error: C9511E: Unable to determine the current toolkit. Check that ARM_TOOL_VARIANT is set correctly. Check that your license details are correct in the License Management dialog of MDK. Additional information is available at:http://www…...

【最全】2026年OpenClaw(Clawdbot)本地6分钟部署及使用喂饭级流程

【最全】2026年OpenClaw(Clawdbot)本地6分钟部署及使用喂饭级流程。OpenClaw(前身为Clawdbot/Moltbot)作为开源、本地优先的AI助理框架,凭借724小时在线响应、多任务自动化执行、跨平台协同等核心能力,成为…...

【有参考文献】事件触发模型 可实现倒立摆控制仿真实验 simulink模型可直接运行

【有参考文献】事件触发模型 可实现倒立摆控制仿真实验 simulink模型可直接运行 含详细参考文献倒立摆这个玩具般的控制对象,总能让工程师们玩得停不下来。它那摇摇欲坠的姿态就像在挑衅:"有本事就来稳住我啊!"传统控制方法像永不停…...

电脑端制作泳道图超便捷 零基础快速做出专业业务流程图

在企业管理、软件开发、流程梳理等工作场景中,泳道图作为一种清晰呈现多角色、多部门协作流程的可视化图表,被广泛应用于需求分析、业务流程优化、系统设计等环节。对于职场从业者和开发者而言,快速绘制出规范、专业的泳道图,能够…...

数据中心U位管理与DCIM、ITAM/CMDB系统的协同机制及实践路径

摘要:在数据中心数字化、集约化运维趋势下,机柜U位作为物理资源的核心计量单元,其精细化管理水平直接影响数据中心资产利用率、运维效率及业务连续性。本文从数据中心运维架构出发,系统剖析U位管理的核心价值,明确其与…...

LLM的可信度边界--人类思考的可信边界

本文为个人想法分享,是一种幻觉创作,只图一乐。作者自愿放弃全部内容的一切权利,不作任何原创确权;内容由 AI 辅助生成,未参考任何特定文章,仅使用公有科学公式 / 概念,非商用,尊重所…...

ssm+java2026年毕设社区外来人员【源码+论文】

本系统(程序源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、选题背景关于社区警务管理问题的研究,现有研究主要以传统纸质档案管理和单一功能的信息化系统为主,专门针对社区…...

MySQL迁移中的兼容性实践难点复盘:从语法一致到行为对齐

MySQL迁移中的兼容性实践难点复盘:从语法一致到行为对齐 在当前信创项目加速落地的背景下,金仓数据库(KingbaseES)因其对MySQL生态的深度适配能力,正被大量金融、政务及央国企单位纳入核心系统替换评估范围。然而&…...

在pyCharm 中命令打包生成exe文件方法

在 PyCharm 中打包 Python 文件,最常用、最可靠的方法是结合使用 PyInstaller 工具。针对你之前编写的生成 UFF 文件的脚本,下面我会介绍两种在 PyCharm 中操作的方式,并重点说明如何确保依赖项(如 numpy, pyuff)和可能…...

gorm底层框架解析

我来为您解析 GORM 底层框架的核心原理和架构设计。这是一个深度技术话题,让我系统性地拆解:GORM 架构全景 ┌─────────────────────────────────────────┐ │ Application Layer │ │…...

leijmdas的godi注入方式先进性

leijmdas 的 godi 框架具体的依赖注入实现方式,给你准确的技术细节。 我来详细介绍 leijmdas 的 godi 框架的依赖注入方式。这是一个基于 代码生成 的工业级 DI 框架,设计非常独特。godi 的核心注入方式1. 结构体标签驱动注入(Tag-Based Inje…...

基于单片机的超声波水塔液位测量系统protues仿真 本设计基于单片机的超声波水塔液位测量和智...

基于单片机的超声波水塔液位测量系统protues仿真 本设计基于单片机的超声波水塔液位测量和智能控制系统主要由硬件与软件两部分组成,硬件是基于AT89C51芯片为核心的超声波水塔液位测量,采用AT89C51单片机进行控制及数据处理,给出了超声波发射…...

DigVPS 测评 - 蔭雲(YINNET)上新法國ISP VPS 产品,新品七折出售中。

规格: 摘要: 硬件: 速率: IPv4 质量: ICMP 延迟: TCP 延迟: BGP: 如对该产品感兴趣,想要持续关注其实时与历史数据表现,欢迎访问我们的站点进行长期跟踪。也可…...

探索 BMS 仿真:电池平衡控制策略与 Simulink 的奇妙结合

BMS仿真电池平衡控制策略仿真similink 动力电池管理系统仿真 BMS Battery Simulink 控制策略模型, 动力电池物理模型,需求说明文档。 BMS算法模型包含状态切换模型、SOC估计模型(提供算法说明文档)、电池平衡模型、功率限制模型等,动力电池…...

update-desktop-database命令用法与技巧总结

update-desktop-database 是一个用于构建桌面文件 MIME 类型缓存数据库的命令行工具。它主要扫描指定目录下的 .desktop 文件,提取它们所能处理的 MIME 类型,并创建一个缓存文件(mimeinfo.cache)。这个缓存极大地提升了系统或应用…...

“下一代地热”能的进展和挑战

地热能是一种清洁、持续的能源,在许多地区均可获取,但其发展一直较为缓慢。近2000年前,罗马人就已广泛利用地热能——即来自地球内部的热量——包括在现今英国巴斯地区的温泉综合体中。电力首次从地热源产生是在20世纪初的意大利。在美国&…...

谷歌地图引入Gemini,Ask Maps开启导航新体验

谷歌地图引入Gemini,Ask Maps功能亮相谷歌地图作为谷歌公司的核心产品,紧跟潮流引入了Gemini技术。此次更新带来了全新的导航体验,推出了名为“Ask Maps”的AI功能。这是一个由Gemini驱动的对话系统,能规划行程,还可针…...

阿里龙虾组合来了:HiClaw + CoPaw,内存占用大幅降低

当我们在谈论 “轻量级 Worker” 时,我们在谈论什么? 如果你用过 HiClaw,可能已经熟悉了 Manager Worker 的多 Agent 协作模式。一个 Manager 作为"AI 管家",管理着多个专业化的 Worker —— 前端开发、后端开发、数据…...

实战案例五:Claude Code + Word 技能自动化报告生成

在企业日常工作中,报告撰写是一项频繁且耗时的任务。周报、月报、项目报告、合同文档……这些文档往往有固定的模板,只是数据不同。本案例将展示如何利用 Claude Code 的 Word 技能,实现报告的自动化生成,大幅提升工作效率。 场景描述 你是某公司的项目经理,每周需要向管…...

怎么在linux上启动redis集群

报错: Slot “574” not covered by the cluster. “skip_full_coverage_checkTrue” 证明: redis虽然启动,但是没有节点间没有建立集群 【Redis 集群没有覆盖全部 16384 个哈希槽,缺少了对槽位 574 的覆盖。在集群模式下&#xf…...

vscode版本和插件版本冲突——禁止更新+版本回退

vscode中如何进制vscode更新 由于vscode中copilot可以通过使用学生权益来使用自带的AI编程工具,所以经常使用copilot插件,但是最近由于vscode更新,导致copilot和vscode版本冲突导致无法正常使用,因此记录一下。 版本回退 从vsc…...