基于Jenkins自动打包并部署Tomcat环境

发布时间:2026/5/29 1:27:17

基于Jenkins自动打包并部署Tomcat环境 基于Jenkins自动打包并部署Tomcat环境传统网站部署的流程在运维过程中网站部署是运维的工作之一。传统的网站部署的流程大致分为:需求分析--原型设计--开发代码--提交代码--内网部署--内网测试--确认上线--备份数据--外网更新--外网测试--发布完成。如果在内网测试时发现代码有异常返回代码开发人员名字,调整代码如果在外网测试时发现外网部署的代码有异常可以及时进行网站回滚。传统代码上线的过程开发人员发起代码上线的需求邮件中包含开发做好的WAR包--运维人员连接线上负载调度器Nginx-- 隔离一组服务器Tomcat-- 连接服务器Tomcat-- 备份旧代码tar打包-- 删除旧代码目录 -- 上传新的WAR包 -- 外网测试 -- 测试不通过则通过备份回滚代码 -- 测试通过则利用rsync的脚本推送代码到其他服务器-- 统一外网测试 --连接调度器恢复隔离机制 -- 隔离另一组服务器实施上线步骤 -- 上线完成。目前主流网站部署的流程目前主流网站部署方法通过 Hudson/Jenkins 工具平台实现全自动部署测试是一个可扩展的持续集成引擎属于开源软件项目旨在提供一个开放易用的软件平台使软件的持续集成变成可能。Jenkins 非常易于安装和配置简单易用。* 开发人员写好代码不需要自己进行源码编译、打包等工作直接将代码分支存放在 SVN、Git 仓库即可。* 运维人员减轻人工干预的错误率同时解放运维人员繁杂的上传代码、手动备份、更新等操作。* 测试人员可以通过 Jenkins 进行简单的代码及网站测试。Jenkins 的工作原理是先将源代码从 SVN/Git 版本控制系统中拷贝一份到本地然后根据设置的脚本调用Maven进行 build构建。整个系统的关键就是 build 脚本build 脚本告诉Jenkins 在一次集成中需要执行的任务。实验环境| **操作系统** | **IP地址** | **主机名** | **角色** || --- | --- | --- | --- || **CentOS7.9** | 192.168.115.128 | jenkins | jenkins服务器 || **CentOS7.9** | 192.168.115.129 | git | git服务器 || **CentOS7.9** | 192.168.115.130 | tomcat | web服务器 |1、配置git主机安装git并配置git用户信息[[rootgit ~]# yum -y install git[rootgit ~]# useradd git[rootgit ~]# echo 123456 | passwd --stdin git创建本地仓库object2[rootgit ~]# su - git[gitgit ~]$ mkdir object2.git[gitgit ~]$ cd object2.git#初始化空的 Git 版本库于 /home/git/object2.git/[gitgit object2.git]$ git --bare init[gitgit object2.git]$ exitgit命令用法git [--version] [--help] [-c namevalue][--exec-path[path]] [--html-path] [--man-path] [--info-path][-p|--paginate|--no-pager] [--no-replace-objects] [--bare][--git-dirpath] [--work-treepath] [--namespacename]command [args]最常用的 git 命令有add 添加文件内容至索引bisect 通过二分查找定位引入 bug 的变更branch 列出、创建或删除分支checkout 检出一个分支或路径到工作区clone 克隆一个版本库到一个新目录commit 记录变更到版本库diff 显示提交之间、提交和工作区之间等的差异fetch 从另外一个版本库下载对象和引用grep 输出和模式匹配的行init 创建一个空的 Git 版本库或重新初始化一个已存在的版本库log 显示提交日志merge 合并两个或更多开发历史mv 移动或重命名一个文件、目录或符号链接pull 获取并合并另外的版本库或一个本地分支push 更新远程引用和相关的对象rebase 本地提交转移至更新后的上游分支中reset 重置当前HEAD到指定状态rm 从工作区和索引中删除文件show 显示各种类型的对象status 显示工作区状态tag 创建、列出、删除或校验一个GPG签名的 tag 对象克隆项目代码同步到自己创建的仓库中#将仓库的空项目拉取到当前目录[rootgit ~]# git clone git192.168.115.129:/home/git/object2#将exam项目中的代码拷贝到object2/目录中[rootgit ~]# cp -r dc/* object2/[rootgit ~]# cd object2/#将当前目录下的所有修改或新增的文件添加到Git的暂存区[rootgit object2]# git add .#设置全局的用户邮箱地址[rootgit object2]# git config --global user.email z13516052620163.com#设置全局的Git配置中的用户名[rootgit object2]# git config --global user.name zhx#将本地代码变更提交到本地仓库并添加一条简短的提交信息#git commit表示执行提交操作。#-m all object2-m是一个选项用于指定提交信息。all object2是提交信息的内容可以根据实际情况进行修改。[rootgit object2]# git commit -m all object2#将本地仓库的提交推送上传到远程仓库#git push表示执行推送操作。#origin是远程仓库的名称默认情况下Git会创建一个名为origin的远程仓库它通常指向代码仓库的URL地址。#master表示要推送的本地分支的名称。master是Git默认的主要分支名称但也可以是其他分支的名称。[rootgit object2]# git push origin master解决无法推送代码到master分支git config receive.denyCurrentBranch ignore2、配置jenkins主机添加验证凭据添加 Publish Over SSH 远程主机[roottomcat ~]# mkdir /data配置 JDK、Maven、Git 环境配置JDK[rootjenkins ~]# tar xf jdk-8u371-linux-x64.tar.gz[rootjenkins ~]# mv jdk1.8.0_371/ /usr/local/java8配置Maven[rootjenkins ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.9.4/binaries/apache-maven-3.9.4-bin.tar.gz --no-check-certificate[rootjenkins ~]# tar xf apache-maven-3.9.4-bin.tar.gz[rootjenkins ~]# mv apache-maven-3.9.4 /usr/local/maven/#配置maven源[rootgit ~]# vim /usr/local/maven/conf/setting.xml153 mirror154 idmirrorId/id155 mirrorOfrepositoryId/mirrorOf156 nameHuman Readable Name for this Mirror./name157 urlhttps://maven.aliyun.com/repository/public/url158 /mirror#配置环境变量[rootjenkins ~]# vim /etc/profileexport MAVEN_HOME/usr/local/mavenexport PATH${PATH}:${MAVEN_HOME}/bin[rootjenkins ~]# source /etc/profile[rootjenkins ~]# mvn -v配置git[rootjenkins bin]# which git/usr/bin/git3、配置web主机[roottomcat ~]# tar xf apache-tomcat-8.5.99.tar.gz[roottomcat ~]# mv apache-tomcat-8.5.99 /usr/local/tomcat**发布公钥给jenkins主机**[roottomcat ~]# ssh-keygen[roottomcat ~]# ssh-copy-id 192.168.115.1284、新建Maven项目配置代码仓库git clone git192.168.115.112:/home/git/object2.git主机Jenkins默认用jenkins用户去连接git所以用jenkins用户生成密钥对并发送给git。[rootjenkins ~]# id jenkinsuid988(jenkins) gid982(jenkins) 组982(jenkins)[rootjenkins ~]# cat /etc/passwd| grep jenkinsjenkins:x:988:982:Jenkins Automation Server:/var/lib/jenkins:/bin/false[rootjenkins ~]# su -s /bin/bash jenkinsbash-4.2$ ssh-keygenbash-4.2$ ssh-copy-id git192.168.115.112配置bulidMaven的Goals and options字段中可以指定多种构建命令Goals和选项Options用于执行不同的构建操作。以下是一些常见的构建命令1. clean清理项目删除生成的目标文件和临时文件。2. validate验证项目是否正确且所有必要信息可用。3. compile编译项目源代码。4. test-compile编译项目的测试代码。5. test运行项目的单元测试。6. package将编译的代码打包成可分发的格式例如JAR或WAR文件。7. install将项目的包安装到本地仓库以供其他项目或模块使用。8. deploy将项目的包部署到远程仓库供其他开发人员或团队使用。9. site生成项目的文档网站。10. clean-compile先进行清理然后进行编译。11. clean-test先进行清理然后运行单元测试。当使用Maven的Goals and options字段时使用以下其他命令行选项1. -U强制更新依赖项的SNAPSHOT版本。2. -o离线模式不访问远程仓库来获取依赖项。3. -T多线程构建用于加快构建速度。例如-T 4表示使用4个线程进行构建。4. -B批处理模式禁用交互式模式使构建更加自动化。5. -DskipTests跳过运行单元测试。6. -Dmaven.test.skiptrue跳过编译和运行测试。7. -Dmaven.compiler.source指定项目的源代码兼容性版本。8. -Dmaven.compiler.target指定生成的字节码的目标JVM版本。9. -Dmaven.repo.local指定使用不同于默认的本地仓库。10. -Dmaven.wagon.http.proxyHost和-Dmaven.wagon.http.proxyPort设置HTTP代理。构建后操作选择“构建后操作“中的“send build artfacts over SSH” “Exec command”中执行命令的含义是:在自动部署前先杀掉 Tomcat 进程然后删除 war 包用 scp 远程拷贝命令将 Jenkins 自动打包好的项目包拷贝到当前 Tomcat 应用目录。 然后重启 Tomcat 。/usr/local/tomcat/bin/shutdowm.shrm -rf /usr/local/tomcat/webapps/*scp 192.168.115.111:/var/lib/jenkins/workspace/object2/* /usr/local/tomcat/webapps//usr/local/tomcat/bin/startup.sh

相关新闻