登录不了建设银行网站,做网站有意思吗,园林景观设计公司有丙级吗,天津市建设工程交易管理网站Jenkins自动化部署是现代软件开发中不可或缺的一部分#xff0c;它不仅简化了代码的发布过程#xff0c;还为整个团队带来了无与伦比的效率和协作力。想象一下#xff0c;开发者们可以专注于编写高质量的代码#xff0c;而不是为繁琐的手动部署所烦恼#xff1b;测试人员能…Jenkins自动化部署是现代软件开发中不可或缺的一部分它不仅简化了代码的发布过程还为整个团队带来了无与伦比的效率和协作力。想象一下开发者们可以专注于编写高质量的代码而不是为繁琐的手动部署所烦恼测试人员能在每次提交代码后立即看到测试结果确保软件质量运营团队不再需要熬夜加班来手动发布新版本而是可以安心地看到系统自动完成一切。
Jenkins自动化部署的意义在于它赋予了开发团队一种近乎魔法般的力量将复杂、易出错的手动操作变为简单、高效的流水线流程。通过CI/CD持续集成/持续部署每一次代码的提交都能触发自动化的构建、测试和部署确保每一个版本的上线都是经过严格测试和验证的。这种无缝的工作流不仅提高了开发速度还显著降低了风险让软件的发布更为可靠。
可以说Jenkins自动化部署不仅是技术上的进步更是一种开发理念的革新。它让软件开发变得更高效、更可靠、更具创新力。只要你体验过Jenkins带来的便利你就再也不会回到手动部署的时代因为那种“代码一提交系统自己搞定”的感觉实在是太让人欲罢不能了
这就是Jenkins的力量它不仅改变了开发的方式也改变了我们对软件开发的认知。如果你还没尝试过Jenkins现在就是最好的时机去体验一下现代开发的魅力吧
1.Jenkins工作流程
当你提交代码后Jenkins能够自动触发部署的背后是一整套自动化构建和交付的流水线Pipeline在起作用。这里我将详细介绍Jenkins的工作流程和内部原理包括它如何监控代码库的变化、触发构建、执行测试、打包以及最终部署到服务器的过程。
1. 源代码管理SCM轮询或Webhooks触发
SCM轮询Jenkins会定期检查轮询配置的源代码管理系统如Git、SVN等的仓库看是否有新的提交或代码更改。如果检测到变化就会触发构建任务。这种方法需要Jenkins定时访问代码库可能会有一定的延迟。Webhooks相比之下Webhooks是一种更为实时的触发方式。开发者提交代码后源代码管理系统会立即向Jenkins发送一个HTTP请求Webhook通知Jenkins有新提交。这使得Jenkins能够更快响应代码变化立即启动构建过程。
2. 触发构建任务
一旦Jenkins接收到代码变更的通知它会根据配置的Pipeline或Job来决定如何处理这次构建。Jenkins中的Pipeline是基于Groovy脚本的它定义了从代码提交到最终部署的整个流程。
3. 流水线Pipeline阶段
Pipeline分为多个阶段每个阶段都可以独立执行一组任务。这些阶段通常包括 Checkout代码Jenkins从源代码管理系统中将最新的代码拉取到构建节点上。这一步通常使用插件如Git插件来与代码库交互。 构建BuildJenkins根据配置的构建工具如Maven、Gradle对代码进行编译、打包。在这一步代码会被转化为可执行的应用程序包如JAR、WAR文件或Docker镜像。 测试TestJenkins会运行自动化测试脚本包括单元测试、集成测试、功能测试等。这一步至关重要因为它确保代码在引入新变更后仍然是稳定和可靠的。 代码质量分析OptionalJenkins可以执行代码质量检查使用工具如SonarQube来分析代码的复杂度、安全性和可维护性并生成报告。 部署Deploy当所有前面的步骤都成功完成后Jenkins会执行部署阶段。根据配置它可以将构建产物部署到不同的环境如开发环境、测试环境或生产环境。这一步可以通过SSH、FTP、容器化部署Docker、Kubernetes或云服务API来实现。
4. 工作节点Agent与主节点Master协作
Jenkins采用主从架构其中主节点Master 负责调度任务、管理工作队列、监控节点状态等。工作节点Agent 实际执行构建任务如代码编译、测试和部署等。
当Pipeline被触发时Jenkins主节点会分配一个或多个工作节点来执行具体任务。工作节点从主节点获取任务后开始执行相应的步骤完成后将结果返回给主节点。
5. Jenkinsfile流水线脚本
Jenkinsfile是定义Pipeline的脚本文件通常存储在代码库中。这使得整个构建、测试和部署的流程代码化并与项目代码一起版本控制。在Jenkinsfile中你可以定义Pipeline的各个阶段、条件逻辑、并行任务等。
6. 通知与反馈
Jenkins在构建和部署过程中会生成实时的日志并在任务完成后发送通知如通过电子邮件、Slack。如果构建失败Jenkins会立即通知相关人员以便他们能够快速响应和修复问题。
7. 持续集成与持续交付/部署CI/CD
整个流程的核心思想是CI/CD通过持续集成和交付让开发团队能够频繁地提交代码并自动化测试、构建和部署减少人为错误提升软件发布的效率和质量。
可以通过一张图来直观展示Jenkins在整个流程中扮演的角色具体如下所示该图主要对比了人工部署与Jenkins自动化部署的过程。
Jenkins的工作流程是通过SCM轮询或Webhooks来实时监控代码变化使用Pipeline将构建、测试、打包、部署等步骤串联起来自动化地将应用程序从开发环境推送到生产环境。其主从架构、可配置的Pipeline、广泛的插件支持使得Jenkins成为了自动化部署的强大工具让整个软件开发生命周期变得更加高效和可靠。
下面让我们一起踏入使用Jenkins自动部署Spring Boot项目的奇妙之旅
2.搭建Jenkins
1.创建一个数据目录
# 创建 jenkins 目录
mkdir /data/jenkins_home/
# 修改目录的所有者以便于 Jenkins 容器能够操作该目录
chown -R 1000:1000 /data/jenkins_home/2.拉取jenkins镜像
docker pull jenkins/jenkins:lts3.启动jenkins容器
为了防止与 Spring Boot 默认使用的 8080 端口发生冲突我选择将 Jenkins 服务器的访问端口配置为 8088。此外在确保 Jenkins 可以从外部网络访问的同时也需要在云服务器的安全组中配置防火墙规则来开放 8088 端口这样外部客户端才能通过此端口访问到 Jenkins 服务器。
docker run -d --name jenkins -p 8088:8080 -p 50000:50000 -v /data/jenkins_home:/var/jenkins_home jenkins/jenkins:lts这样的配置不仅能够确保 Jenkins 服务与其他可能运行在同一服务器上的服务如 Spring Boot 应用之间不会产生端口冲突还能通过精细控制防火墙规则来提高系统的安全性。 在云服务器的安全组设置中你需要添加一条入站规则允许来自特定 IP 地址或 IP 范围的流量通过 8088 端口进入服务器。这样既能保证 Jenkins 的可用性也能限制不必要的网络访问从而提升整体安全性。
4.访问Jenkins
一旦Jenkins容器启动你可以通过访问http://localhost:8088来访问Jenkins界面。注意这里的localhost对应的你的云服务器IP地址
首次访问时系统会要求你输入初始管理员密码。
5.获取管理员密码
可以直接去宿主机的 /data/jenkins_home/secrets/initialAdminPassword 位置查看初始化密码具体如下所示这里的/data/jenkins_home/是前面你自己设置的Jenkins工作目录。 获取管理员密码之后就可以直接使用admin账户进行登录登录之后的界面如下所示
3.安装Maven
在Jenkins自动化部署中Maven被安装在服务器上是为了执行项目的构建任务包括代码编译、依赖管理、测试执行和打包操作。通过MavenJenkins能够自动化地将源代码转换为可部署的应用程序包如JAR或WAR文件确保项目按需构建并满足所有依赖。 下载Maven 访问Maven官方下载页面选择需要的版本复制下载链接。使用wget命令下载Maven。 例如下载Maven 3.8.8版本 wget https://dlcdn.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz解压文件 将下载的文件解压到你想要安装的位置例如/opt目录 sudo tar -zxvf apache-maven-3.8.8-bin.tar.gz -C /opt配置环境变量 为了方便使用Maven需要配置环境变量。编辑/etc/profile文件 sudo vi /etc/profile在文件末尾添加以下内容 export M2_HOME/opt/apache-maven-3.8.8
export PATH$M2_HOME/bin:$PATH使环境变量生效 保存文件并退出编辑器然后使环境变量生效 source /etc/profile验证安装 现在可以通过以下命令验证Maven是否安装成功 mvn -version如果安装成功你将看到Maven的版本信息。
4.安装插件
在Jenkins启动成功后安装以下三个插件能够增强其功能满足特定的项目需求
1. Gitee
功能Gitee插件允许Jenkins与Gitee代码仓库集成支持从Gitee仓库中拉取代码、触发构建任务。这对于使用Gitee进行源代码管理的团队非常有用能简化CI/CD流程。安装在“插件管理”界面搜索“Gitee”插件并安装。安装后可以在Jenkins的项目配置中添加Gitee仓库的访问信息配置Webhook以便代码提交时自动触发构建。
2. Maven Integration
功能Maven Integration插件允许Jenkins与Maven无缝集成使得Jenkins可以直接调用Maven进行项目的构建、测试和打包。这对于Java项目尤其重要因为Maven能够自动管理项目依赖、编译代码并生成可部署的包如JAR、WAR。安装在Jenkins管理界面中导航到“插件管理” - “可选插件”搜索“Maven Integration”并点击“安装”。
3. Publish Over SSH
功能Publish Over SSH插件允许Jenkins通过SSH将构建生成的文件如JAR、WAR包安全地传输到远程服务器上。这对于部署过程至关重要尤其是当需要将构建产物自动部署到生产或测试服务器时。安装同样在“插件管理”界面搜索“Publish Over SSH”并安装。安装后你可以在“系统管理”中配置SSH服务器的连接信息。
通过安装这些插件Jenkins能够更好地支持项目构建、打包、部署和代码管理大大提高自动化部署的效率和灵活性。
具体的安装步骤如下所示点击左边的系统管理然后选择右边的插件管理进行配置。 之后在可选插件中搜索 Maven Integration 和 Publish Over SSH 以及 Gitee 三个插件安装即可
全部插件安装完成之后最好登录服务器重启Jenkins容器以更新插件具体命令如下
docker restart jenkins5.全局工具配置
在使用Jenkins进行自动化部署之前进行一些全局工具的配置是必要的这样可以确保Jenkins能够正确调用这些工具来完成构建、测试和部署任务。
以下是Jenkins通常需要配置的全局工具
1. JDKJava Development Kit
为什么需要Jenkins本身是基于Java的应用并且许多构建工具如Maven、Gradle也依赖JDK。因此配置JDK是必不可少的。配置方法在Jenkins的“系统管理” - “全局工具配置”中找到JDK配置部分点击“添加JDK”指定JDK的安装路径或者选择自动安装。
2. Maven
为什么需要Maven是Java项目构建的标准工具用于依赖管理、代码编译、测试和打包。通过配置MavenJenkins可以调用Maven进行项目构建。配置方法在“全局工具配置”中找到Maven配置部分点击“添加Maven”指定Maven的安装路径或者选择自动安装。
3. Git
为什么需要大多数项目都使用Git进行源代码管理。通过配置GitJenkins可以从Git仓库中拉取代码并进行构建。配置方法在“全局工具配置”中找到Git配置部分添加Git安装路径或者选择自动安装。确保Jenkins可以访问正确版本的Git由于 Jenkins 容器中已经存在 git 了所以这里不需要额外安装 git默认即可。
4. Gradle可选
为什么需要对于使用Gradle构建的项目配置Gradle工具是必要的。Gradle是另一个流行的构建工具尤其在Android开发中被广泛使用。配置方法在“全局工具配置”中找到Gradle配置部分点击“添加Gradle”指定Gradle的安装路径或选择自动安装。
全局工具配置是确保Jenkins能够顺利执行构建、测试和部署任务的基础。通过配置JDK、Maven、Git等工具Jenkins可以与这些构建工具无缝集成自动化地完成从代码拉取到部署的整个流程。这些配置不仅提高了Jenkins的灵活性和适用性还简化了每个项目的具体配置工作。
6.系统配置
在Jenkins中进行系统配置时Publish Over SSH 和 Gitee 的配置是实现代码部署和与代码仓库集成的关键步骤。以下是详细的配置步骤介绍
1. Publish Over SSH 配置
Publish Over SSH 插件允许Jenkins通过SSH将构建生成的文件如JAR、WAR包安全地传输到远程服务器上。以下是配置步骤
步骤 1: 安装 Publish Over SSH 插件
如果前面已经安装请忽略步骤1登录Jenkins的管理界面。在Jenkins首页点击左侧菜单中的“系统管理”或“Manage Jenkins”。在管理页面中选择“插件管理”或“Manage Plugins”。在“可选插件”或“Available Plugins”选项卡中搜索Publish Over SSH。勾选插件并点击“安装”等待插件安装完成。
步骤 2: 配置 SSH 服务器 插件安装完成后返回“系统管理”页面选择“系统配置”或“Configure System”。 向下滚动页面找到 Publish Over SSH 部分。 点击“添加”按钮配置一个新的SSH服务器 Name: 为服务器配置一个易记的名称。Hostname: 输入目标服务器的IP地址或主机名。Username: 输入用于登录到目标服务器的用户名。Remote Directory: 指定在远程服务器上的默认目录Jenkins将把构建产物传输到此目录。Use password authentication, or use a different key: 选择是使用密码认证还是提供私钥文件进行认证。如果使用密钥认证配置私钥文件路径或直接粘贴私钥内容。 点击“测试配置”或“Test Configuration”按钮验证Jenkins是否能够成功连接到目标服务器。
步骤 3: 保存配置
配置完成后点击页面底部的“保存”或“应用”按钮以确保你的设置被保存。
2. Gitee 配置
通过配置GiteeJenkins能够与Gitee代码仓库集成实现代码的自动拉取和构建。以下是配置步骤
步骤 1: 安装 Gitee 插件
同样在Jenkins的插件管理中搜索Gitee并安装该插件。
步骤 2: 获取 Gitee API Token
登录到Gitee账户点击链接。在“私人令牌”部分点击“生成新的令牌”。根据需要选择令牌的权限例如“repo”代码仓库相关操作和“user_info”用户信息查看。生成令牌后复制并保存。
步骤 3: 添加 Gitee配置
在“系统配置”页面找到Gitee 配置。配置你的Gitee仓库信息 链接名: 输入你的Gitee仓库的URLHTTPS。Gitee域名URL: 输入Gitee域名完整URL地址。证书令牌: 选择Gitee API令牌。
步骤 4: 添加凭据
在Gitee配置页面 - 点击添加Jenkins。在弹出的对话框中选择“Gitee API令牌”在“Gitee APIV5私人令牌”字段中粘贴你刚刚生成的API Token。为该凭据提供一个名称并点击“添加”保存。 通过上述步骤就已经在Jenkins中完成了 Publish Over SSH 和 Gitee 的配置。这些配置使得Jenkins能够安全地将构建产物部署到远程服务器同时自动拉取和构建Gitee上的代码为CI/CD流程提供了基础支持。
7.构建项目
在Jenkins中新建一个Maven项目的步骤如下
1. 登录Jenkins控制台
首先访问Jenkins的Web界面使用你的管理员账户登录。
2. 新建项目
在Jenkins首页点击左侧菜单中的“新建任务”或“New Item”。在弹出的窗口中为项目输入一个名称然后选择“构建一个Maven项目”或“Maven Project”。点击“确定”进入项目配置页面。
3. 配置源码管理Source Code Management, SCM
在项目配置页面找到“源码管理”部分。选择你使用的版本控制系统如Git并输入项目的代码仓库URL。如果仓库需要认证配置相应的凭证Credentials如用户名和密码或SSH密钥。设置仓库中触发构建的分支代码*/release表示release分支有代码提交则自动触发构建。
4. 构建触发器
配置构建触发器这可以是轮询SCMPoll SCM、Webhook触发、定时构建等。例如如果你希望在每次代码提交时触发构建可以选择“GitHub hook trigger for GITScm polling”或“Poll SCM”并设置合适的时间间隔。
5.Gitee中配置WebHook
在Gitee中配置WebHook时首先进入仓库的“管理”页面选择“Webhooks”并添加新WebHook。在请求URL中输入Jenkins的WebHook地址如选择触发事件如推送事件然后保存配置。这样每当代码提交时Gitee将自动通知Jenkins触发相应的构建任务。 上图中所需的URL将在设置Jenkins的Webhook触发器时指定这个URL用于接收外部触发信号以启动构建流程。由于 Jenkins 是要登录之后才可以操作的处于公网的 Jenkins 我们也不能降至设置为匿名访问所以这里我们将 Jenkins 的用户名密码放在请求地址中最终地址类似这样http://username:passwordIP:8088/xxxx。而Jenkins系统中生成的URL是不包含用户名和密码的需要你自己手动添加 此外为了安全起见Jenkins系统会自动生成一个密码或密钥用于验证Webhook请求的有效性确保只有授权方能触发构建任务。
对应的URL和密码输入并新建WebHook即可注意因为Gitee中的bug就算配置成功了测试WebHook也会出现404错误。因此如果测试出现404错误不要着急可以尝试构建项目看看效果再来确定问题
6. 构建设置
在“构建”部分你需要输入Maven构建的根POM文件的路径通常是pom.xml。在“Goals and options”中输入你希望执行的Maven命令如clean install或package根据项目需求选择合适的构建目标。
7. 构建后操作Post Steps
你可以在“构建后操作”部分添加一些后续步骤如“发送邮件通知”或“部署到服务器”。如果你使用Publish Over SSH插件可以配置将构建产物上传到远程服务器的步骤。
此外这里还需要上传并执行构建后的deploy.sh脚本文件具体脚本如下所示
# 设置jdk路径
export JAVA_HOME/usr/lib/jvm/java-11-openjdk-11.0.23.0.9-2.el7_9.x86_64
export PATH$JAVA_HOME/bin:$PATH# 设置jar路径和文件名
JAR_PATH/root/deploy_data
JARFILEwebserver-1.0.0-SNAPSHOT.jar# kill掉正在运行的java进程
ps -ef | grep $JARFILE | grep -v grep | awk {print $2} | xargs kill -9# 开启一个新的java进程
nohup java -jar -Xms512m -Xmx1024m $JAR_PATH/$JARFILE out.log 21 if [ $? -eq 0 ]; thensleep 30tail -n 50 out.log
fi这个脚本文件需要根据服务器中jdk的路径以及jar的路径和名称进行修改
8. 保存配置并构建
配置完成后点击页面底部的“保存”或“应用”按钮。返回项目主页点击“立即构建”或“Build Now”按钮启动第一次构建。
9. 查看构建结果
构建过程会在Jenkins的控制台输出中显示你可以点击项目主页左侧的“控制台输出”查看构建日志。如果构建成功Jenkins会显示一个绿色的“成功”标记如果失败则显示红色“失败”标记。
通过以上步骤你就可以在Jenkins中成功新建并配置一个Maven项目实现自动化构建。