Jenkins CD VM部署实践 01 准备工作项目标准化
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
上面就是组的创建和命名规范。
目录 返回
首页