持续集成 持续交付 持续布署 (CI/CD)
持续集成
持续集成(Continuous Integration,CI)是一种软件开发实践。在持续集成中,团队成员频繁集成他们的工作成果,一般每人每天至少集成一次,也可以多次。每次集成会经过自动构建(包括静态扫描、安全扫描、自动测试等过程)的检验,以尽快发现集成错误。许多团队发现这种方法可以显著减少集成引起的问题,并可以加快团队合作软件开发的速度(以上引用自Martin Fowler 对持续集成的定义)。
持续交付
持续交付(Continuous Delivery)是指频繁地将软件的新版本交付给质量团队或者用户,以供评审,如果评审通过,代码就进入生产阶段。
持续部署
持续部署(Continuous Deployment)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境中。
CI/CD方案
关系图
方案思路
持续集成(CI)。在公司内网服务器安装Jenkins,用于更新代码,上传镜像。
持续部署(CD)。在各部署环境前置机(通互联网)安装Jenkins,用于执行脚本命令,做到通过Jenkins Web页面就能完成项目更新。
Jenkins
Jenkins是什么
Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。
Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。
官方文档
安装Jenkins
前置条件
- 安装Docker
- 安装Docker-compose
-
docker-compose-server.yml文件
-
#### 镜像上传 # 仓库私服: *** # 第一步:上传镜像到docker仓库 # 第二步: 将此yml文件上传服务器,执行启动命令 docker-compose -f ./docker-compose-server.yml up version: '2' services: twqc-jenkins: image: *** user: root ports: - 9090:8080 # 确保9090端口没有被占用 - 50000:50000 restart: always container_name: boot-jenkins hostname: boot-jenkins volumes: - /etc/localtime:/etc/localtime - /etc/timezone:/etc/timezone - /usr/bin/docker:/usr/bin/docker - /var/run/docker.sock:/var/run/docker.sock - /usr/local/bin/docker-compose:/usr/local/bin/docker-compose - /data/jenkins_home:/var/jenkins_home #挂载Jenkins数据 - /jenkins/maven/settings.xml:/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/Apache-maven-3.8.7/conf/settings.xml #持续集成需要挂载Maven配置文件,持续部署不需要
Jenkins数据所挂载文件夹添加权限
-
chown -R 1000:1000 /data/weique-lowcode/jenkins_home
启动
-
docker-compose -f ./docker-compose-server.yml up
查看密码
-
docker exec -it 容器id bash
登入web页面
填写控制台输出的密码 -
安装推荐的插件
-
创建用户
-
使用Jenkins(持续集成(CI))
-
推荐安装的插件
- Docker
- Docker-compose
- GitLab
- Maven
- NodeJS
- Multiple SCMs
GitLab
在GitLab系统中生成一个Token
配置在Jenkins中
Maven
JDK
NodeJS
NodeJS插件自动下载会失败。解决方案:
- 服务器本机下载nodejs安装压缩包,解压到Jenkins插件对应nodejs目录(CNPM Binaries Mirror)
- Jenkins数据已经挂载到宿主机上,直接解压至宿主机Jenkins插件目录(tar -zxvf node-v16.13.1-linux-x64.tar.gz -C /jenkins/jenkins_home/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/)
- 配置Jenkins中NodeJS路径
- 重启容器
新建任务
选择自由风格
源码管理
构建环境
构建(前端)
cd /var/jenkins_home/workspace/twqc/twqc-boot/tw-cloud-web
npm config set proxy false
npm cache verify
npm install --legacy-peer-deps
npm install
npm run build
构建(后端)
后端根据项目依赖关系,依次添加Maven构建并指定pom.xml文件。
构建/上传镜像
cd /var/jenkins_home/workspace/twqc/twqc-boot/tw-cloud-parent
docker-compose -f docker-compose-build.yml build
docker-compose -f docker-compose-build.yml push
立即构建
查看控制台输出
Jenkins使用(持续部署(CD))
推荐安装的插件
Publish Over SSH
Publish over SSH
新建任务 、构建