zl程序教程

您现在的位置是:首页 >  工具

当前栏目

Jenkins CD VM部署实践 01 准备工作项目标准化

Jenkins项目部署 实践 工作 01 准备 VM
2023-09-14 09:01:47 时间

0. 准备工作项目标准化


公司里面要使用流水线要做持续集成CI/CD的项目越来越多,这对流水线的设计和开发有不同的要求。我们经常听到用户的反馈:

  • 各种不同语言的技术栈, 如何使流水线适配呢? 从不同技术栈维护一套流水线模版,到我们使用共享库进行统一的管理和维护。
  • 对于不同的项目,大家管理代码的方式也不同。可能还有一部分用户在使用Svn等不同的版本控制系统。
  • 不同的项目,开发模式也不太一样, 编译构建工具不同,发布的方式也有不同的地方...

等等,不止上面的问题。所以在做流水线的使用应该提前把项目团队的规范定义好, 这样后期项目改造后可以直接集成CI/CD流水线。更加便捷。

 

 

跟进项目团队信息


信息项

描述

业务简称/编号

anyops

开发模式

特性分支开发(开发一些特性和新的需求的时候,先根据需求创建特性分支,根据这个特性分支去开发,对特性分支验证了之后,就合并到版本分支),版本分支发布(版本分支经过一系列的测试,最终以版本分支进行上线,比如uat环境或者stage环境),主干分支作为最新代码(最终发布成功了通过版本分支合并到主干分支)

项目类型与构建方式

前端: vue项目, npm打包, 制品目录 dist

后端:springboot项目, maven打包, 制品目录 target

发布主机环境(vm)

LB: 192.168.1.200

Server: 192.168.1.230~192.168.1.232

制定项目CI/CD规范


通过上面的信息,我们采用如下规范:

工具链

GitLab 代码库

仓库组: anyops

项目仓库后端 anyops-devops-service 前端 anyops-devops-ui

Jenkins作业

文件夹: anyops

作业命名: 后端 anyops-devops-service 前端 anyops-devops-ui

CI构建规范

前端项目采用npm打包后统一放到dist目录下, 静态文件以tgz打包。

后端项目采用maven打包后统一放到target目录下,以jar包。

Sonar代码报告

前端项目: anyops/anyops-devops-ui 后端项目: anyops/anyops-devops-service

项目团队可以使用anyops命名的自定义质量规则和质量阈。

Nexus制品库目录

com/anyops/anyops-devops-service/version/anyops-devops-service-version.jar(第一层目录可以写公司名称,自定义即可,这里是com。第二层是业务的名称,第三层是应用的名称,然后是版本具体的哪个包了)

com/anyops/anyops-devops-ui/version/anyops-devops-ui-version.jar

版本: 分割release分支获取版本号

发布规范

用户输入版本,下载制品库,使用脚本启动服务。

后面把这个业务涉及到的流水线全部放到这个文件夹里面去管理,在该业务下面建立两条流水线。 

GitLab代码库:


创建anyops组

然后将两个项目拿过来

或者新建一个项目

[root@jenkins-master devops-maven-service-master]# git init
Initialized empty Git repository in /root/devops-maven-service-master/.git/
[root@jenkins-master devops-maven-service-master]# git remote add origin http://139.198.170.122:81/anyops/anyops-devops-service.git
[root@jenkins-master devops-maven-service-master]# git add .
[root@jenkins-master devops-maven-service-master]# git commit -m "Initial commit"
[master (root-commit) 34a090a] Initial commit
 11 files changed, 816 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 .mvn/wrapper/MavenWrapperDownloader.java
 create mode 100644 .mvn/wrapper/maven-wrapper.jar
 create mode 100644 .mvn/wrapper/maven-wrapper.properties
 create mode 100644 Jenkinsfile
 create mode 100755 mvnw
 create mode 100644 mvnw.cmd
 create mode 100644 pom.xml
 create mode 100644 src/main/java/com/example/demo/DemoApplication.java
 create mode 100644 src/main/resources/application.properties
 create mode 100644 src/test/java/com/example/demo/DemoApplicationTests.java
[root@jenkins-master devops-maven-service-master]# git push -u origin master
Username for 'http://139.198.170.122:81': root
Password for 'http://root@139.198.170.122:81': 
Counting objects: 27, done.
Compressing objects: 100% (17/17), done.
Writing objects: 100% (27/27), 53.44 KiB | 0 bytes/s, done.
Total 27 (delta 0), reused 0 (delta 0)
To http://139.198.170.122:81/anyops/anyops-devops-service.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

同理前端的项目也是一样,反正就两个项目,一个前端的anyops-devops-ui项目,一个后端的anyops-devops-service 

上面就是组的创建和命名规范。