什么是CI/Cd?
CI-Continuous integration
: 持续集成
是指多名开发者在开发不同功能代码的过程当中,可以频繁的将代吗行合并到一起并切相互不影响工作。
CD-continuous deployment
:持续部署
是基于某种工具或平台实现代码自动化的构建、测试和部署到线上环境以实现交付高质量的产品,持续部署在某种程度上代表了一个开发团队的更新迭代速率。
Continuous Delivery
: 持续交付
是在持续部署的基础之上,将产品交付到线上环境,因此持续交付是产品价值的一种交付,是产品价值的一种盈利的实现。
特点:
主要工具:
Martin Flowler对持续集成是这样定义的:持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建 (包括编译,部署,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。
常用工具:
2、登录服务器,下载镜像
# 下载
wget https://mirrors.tuna.tsingua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-14.9.4-ce..el7.x864.rpm
# 安装邮件服务postfix(gitlab依赖)
yum install postfix
# 启动邮件服务
systemctl start postfix
# 安装gitlab
rpm -ivh gitlab-ce-14.9.4-ce.0.el7.x86_64.rpm
3、安装完成后,根据提示设置访问地址
# 修改添加gitlab的访问地址
vim /etc/gitlab/gitlab.rb
# 进入gitlab.rb编辑内容中后-----
external_url 'http://192.168.xx.xx:8000'
# :wq 保存并退出编辑----- ip试自身环境定
# 开放端口号
firewall-cmd --permanent --zone=public --add-port=8000/tcp
# 重启防火墙
firewall-cmd --reload
# 查看当前开放端口
firewall-cmd --list-ports
# 重置gitla
gitlab-ctl reconfigure
# 重启gitlab服务
gitlab-ctl restart
4、重启完成后,根据external_url访问gitlab
gitlab-ctl status
查看运行状态本节假设已建立一个vue3-vite项目的仓库,并在项目根目录新建
.gitlab-ci.yml
- gitlab-ci配置的保留字:image(使用docker image),services(使用docker service),stages(定义工作阶段),types(stage的别名),before_script(在工作任务执行前执行的脚本命令),after_script(在任务执行结束后执行的脚本命令),variables(定义变量)
# stages:是保留字,用于定义工程执行的阶段
stages:
- build
- deploy
# build_job: job名称,可以自定义
build_job:
stage: build
script:
- 'echo "start build"'
- 'echo "多行输出"'
deploy_job:
stage: deploy
script: 'echo "start deploy"'
以centos系统安装为例,官网参考:https://pkg.jenkins.io/redhat-stable/
# 安装(已下载jenkins-2.332.3-1.1.noarch.rpm安装包
rpm -ivh jenkins-2.332.3-1.1.noarch.rpm
# 查看jenkins配置文件
vim /etc/init.d/jenkins
# 修改配置(端口或USER,视情况定)
vim /etc/sysconfig/jenkins
# 启动jenkins(首次启动较慢,可能需要四五分钟)
service jenkins start
# 获取初始密码
tail /var/lib/jenkins/secrets/initialAdminPassword
解锁jenkins获取初始密码
首次启动会推荐安装插件,但安装会耗时很久,所以建议不安装推荐插件,点击“选择插件来安装”后,不勾选插件从而进入下一步。
创建管理员用户
配置实例(默认不改就好)
进入系统后,显示欢迎页:
1、创建新任务并命名
2、关联gitlab仓库
此处需要先安装git插件
在jenkins安装对应服务器上安装git
# 安装
yum install -y git
# 测试安装是否完成
git --version
/var/lib/jenkins/workspace
是jenkins的默认工作目录,在里面可以看到上一步构建拉取到的项目文件
1、基于上一步的执行shell
脚本中,继续添加shell
/var/lib/jenkins/workspace/DemoTest
,但不排除有时不是这个路径,所以可以使用jenkins环境变量的方式来直接进入。$WORKSPACE
(Linux环境中),如jenkins安装在windows系统下,则是%变量名%的形式cd $WORKSPACE
# 安装依赖
npm install
# 打包
npm run build
# 进入打包后目录
cd dist
# 压缩前先删除已有压缩包
rm -f demotest.tar.gz
# 压缩所有文件
tar -zcvf demotest.tar.gz *
# 查看dist目录
ll
2、将上一步的压缩包,传到nginx服务器
- 先安装 publish over ssh插件(用于推送压缩包)
1、打开demotest任务的配置,切到构建触发器
1、安装git parameter插件
2、修改任务配置——勾选“参数化构建过程”
3、添加Git参数配置
4、修改“源码管理”处的指定分支
5、查看可用构建的标签和分支(选中后,点击开始构建即可)
1、添加插件
2、打开demotest配置(在安装gitlab插件后,会新增一个构建触发器选项如下)
3、到gitlab中配置出站请求(gitlab群组管理中设置)
设置——》网络——》出站请求
4、设置webhooks(对应代码仓库中设置)
5、测试push event