持续集成解决什么问题
- 提高软件质量
- 效率迭代
- 便捷部署
- 快速交付、便于管理
持续集成(CI)
集成,就是一些孤立的事物或元素通过某种方式集中在一起,产生联系,从而构建一个有机整体的过程。
持续,就是指长期的对项目代码进行集成。
持续集成是指将所有开发者工作副本每天多次合并到主干的做法。
持续集成强调开发人员提交了新代码之后,立刻进行构建、测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。
持续部署(CD)
对于一个成熟的CICD管到来说,最后的阶段就是持续部署。作为持续交付------自动将生产就绪型构建版本发不到代码存储库的延伸。
持续集成组成要素
一个最小化的持续集成系统需要包含以下几个要素:
- 版本管理系统
- 构建脚本和工具
- CI服务器
Jenkins使用
相关概念
- 流水线:Jenkins Pipeline 是一种插件
安装 JDK
-
下载jdk文件
-
上传到服务器的目录中
在服务器新建java目录,在java目录中创建
/opt/jdk
目录 -
在
java
目录中解压文件shelltar axvf jdk-21_linux-x64_bin.tar.gz -C /opt/jdk --strip-components 1
-
修改配置文件,配置环境变量
shellvim /etc/profile
写入环境变量
shellexport JAVA_HOME=/opt/jdk export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
-
更新配置文件
shellsource /etc/profile
安装Jenkins
普通安装
-
创建Jenkins目录
在
java/opt
目录中创建jenkins
目录 -
下载jenkins
shellwget -O /opt/jenkins/jenkins.war http://mirrors.jenkins.io/war-stable/latest/jenkins.war
-
在jenkins目录中,执行以下命令
shelljava -jar jenkins.war --httpPort=8080
-
关闭防火墙,避免端口拦截
shellsystemctl stop firewalld.service
使用serverIP:port
访问即可登录jenkins
使用Docker安装
在jenkins文件夹下
-
下载安装脚本
shellcurl -fsSL https://get.docker.com -o get-docker.sh
-
执行脚本
shellsudo sh get-docker.sh
执行完毕后,即安装完毕
-
docker加速
shellmkdir /etc/docker vim /etc/docker/daemon.json # daemon.json 的内容详见阿里云docker加速部分内容 systemctl daemon-reload systemctl restart docker
-
安装jenkins
shell# jenkins docker run \ -d \ -u root \ -p 8080:8080 \ -v /home/jenkins:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /home:/home \ --name jenkins jenkins/jenkins # 更简单的命令 docker run -itd -p 8086:8080 jenkins/jenkins:lts
-
查看初始化密码
shelldocker logs jenkins
如果上面的命令行不通,先通过
docker ps
查看容器运行信息,复制CONTAINER ID
然后运行
docker logs <CONTAINER ID>
用复制的ID替换<CONTAINER ID>
-
登录Jenkins
在浏览器中访问
serverip:8080
访问登录页面,输入上面命令得到的密码即可进入
jenkins配置
Jenkins插件加速
进入jenkins系统管理(manage jenkins) -> 插件管理(manage plugins) ->高级选项卡(advanced) -> 升级站点,使用华源:
shell
https://mirrors.tuna.tsinghua.edu.cn/jenkins/update/current/update-center.json
环境变量配置
进入configure reference设置环境变量
全局工具配置
进入global tool configure,安装jdk、git、docker
用户管理
进入configure global security,添加用户组,创建权限。
搭建gitlab
在jenkins进入manage jenkins,点击available安装github integral 、gitlab、publish over ssh 、SSH Agent、SSH Pipeline Steps、SSH插件。
-
在服务器中根目录下创建gitlab文件夹
-
在gitlab文件夹下创建
docker-compose.yml
文件文件内容可在github中docker-gitlab仓库复制
-
安装
docker-compose.yml
shellsudo curl -L https://github.com/docker/compose/releases/download/v2.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
-
执行文件
shellchmod +x /usr/lcoal/bin/docker-compose docker-compose up -b
-
在浏览器中输入
serverIP:port
访问
配置自动化任务
配置自由风格的项目
- 在gitlab中新建一个项目
- 在设置中点击集成,选中Trigger -> push events
- 在jenkins新建任务,选择构建自由风格的项目
- 构建触发器,选中build when a change is pushed to gitlab。把后面的url输入到gitlab的项目配置中
- 点击高级,下滑页面,找到generate点击,把生成的内容复制到gitlab的secert token输入框中
- 点击add webhook,会出现警告。为了消除警告进行设置。点击设置,点击网络,展开外发请求,选中第一个,保存。
配置pipeline
- 在本地项目中创建一个
Jenkinsfile
- 进入jenkins官网,复制pipeline配置粘贴到本地项目中的
Jenkinsfile
中 - 然后通过git提交代码到gitlab
- 在jenkins中打开blueocean
- 点击创建流水线,点击git
- 在gitlab中复制仓库地址,粘贴到jenkins流水线的输入框中
- 点击创建流水线,创建完毕后进入流水线页面,并自动构建项目