当前位置: 首页 > 网络应用技术

Jenkins+Docker+Git Multi -Branch实施多种环境的Springboot项目快速交付

时间:2023-03-07 19:39:33 网络应用技术

  Docker在Jenkins Slave上动态构建了Jenkins Slave的春季项目,以动态构建Spring Project。但是,在实际的CI/CD应用程序中,操作和维护可能是以下问题:

  1.环境验证

  Springboot项目的多个GIT分支对应于不同的环境。例如:开发分支对应于测试环境,主分支对应于生产环境。在操作和维护部署过程中有轻微的疏忽,这可能会导致使用误解环境配置并将不必要的问题引入测试和生产。因此,我们将增加环境验证以确保不同的分支使用正确的环境配置文件。

  2.播放/滚动/重新启动

  在发布过程中,我们不仅应该考虑版本的正常版本,而且还应该考虑版本的回滚,以防止新版本能够及时返回历史版本。OOM问题可能会导致Java的过程,过程死亡,因此我们最好需要重新启动功能来促进及时重新启动。在“谁开发和运行”的概念中,我们的CI/CD考虑了上述三个函数。

  3.操作验证

  发行/回滚将涉及应用程序的应用。为了避免重复构造,我们需要验证GIT分支版本的Git分支版本的版本,以防止版本/回滚过程中重复更新引起的应用程序重新启动。

  Jenkins不使用多个分支组装线,因此不同的GIT分支对应于不同的任务。开发分支对应于Docker-Test-XXXX。

  在服务器上执行的Docker操作是不同的。例如,版本/回滚涉及镜像和容器的停止删除,并且重新启动操作不需要。

  为了确保正确的操作和维护操作,我们开发了Docker项目部署的规范:

  1. job_name命名规范

  格式规范:Docker-Environment-Project名称

  生产:Docker-prod-XXXX

  测试:Docker-Test-XXXX

  2.全局变量

  app_name项目名称

  image_name镜像名称,格式:业务/系统

  Monitor_url监视器URL

  3.环境验证

  通过Job_name提取产品/测试关键字,并匹配GIT分支的主/开发以执行环境验证。

  4.操作验证

  版本:当Git具有新版本时,将执行邮政操作;

  向后回滚:向后滚动到任何版本

  重新启动:重新启动容器

  5. Docker相关规格

  (1)镜像命名规范,格式:业务/系统

  例如:helloworld/helloworld

  (2)集装箱命名规格,格式:系统名称,例如Helloworld

  (3)标签规范,格式:consith,例如7E2C56522188C98F6294D91C8568DFCEDF994E42

  (1)整个工作周期存在全局变量。我们只需要根据项目的实际情况设置变量即可。其他内容无需更改。

  (2)构建名称是一个内置的名称。它由jenkins构建的-in bualtial_number和git_commit组成,以帮助我们确定任务的哪个版本是研究问题。

  构建过程主要执行环境验证和操作验证操作

  (1)环境验证,确定GIT分支是否与当前的工作测试/产品一致,并停止操作的后续版本;

  (2)操作验证

  版本:是否已更新GIT的相应分支以防止未更新时多次,从而导致多次重新启动;

  主要使用jenkins构建的变量:

  git_previous_successful_commit上次成功git版本编号

  git_commit当前构建任务git版本编号

  回滚:确定远程分支是否具有与参数匹配的版本号,如果没有合法,则是非法的,并且回滚被停止;

  代码显示如下:

  登录到远程服务器,通过“ SSH Publishers”插件执行与Docker相关的操作。

  在:

  删除詹金斯从服务器上新构建的镜像和虚拟悬架图像,以使从属上的环境保持纯净。

  以上是我对Docker+Jenkins在连续集成/交付过程中的一些理解。通过对Docker的持续探索实践,我希望继续优化该解决方案。我认为远程服务器最终登录的操作过程仍然太麻烦了。在发布/回滚过程中,您需要停止,删除容器并删除镜像。因此,将对Docker-Compose进行优化,以带来更简洁的配置管理。

  此外,以上是通过SSH登录的Docker单机器部署,但是Docker的服务器 - 客户仪架构应具有更方便的方式,例如Shep和K8s。这些需要在将来不断学习和总结。