CI(Continuous Integration,持续集成)和CD(Continuous Delivery / Continuous Deployment,持续交付/持续部署)是现代软件开发流程中不可或缺的组成部分,它们是DevOps文化的重要实践,旨在加速软件开发周期,提高软件质量和部署效率。
持续集成是一种软件开发实践,要求开发团队频繁地(每天或多次每天)将代码集成到共享的主干分支中。每次集成都会通过自动化构建(包括编译、打包和测试)来验证,以便尽早发现集成错误。CI的主要目标是:
持续交付和持续部署是紧密相关的概念,但它们有细微的区别:
持续交付是一种实践,意味着代码库应该处于随时可以部署到生产环境的状态,但实际部署仍然需要人工批准。这通常包括:
持续部署是持续交付的一个子集,它进一步自动化了部署过程。当代码通过所有测试后,会自动部署到生产环境,无需人工干预。这增加了软件发布的频率和速度,但也可能增加风险,因此需要强大的自动化测试和回滚策略。
CI/CD的核心在于自动化,通过自动化构建、测试和部署流程,软件团队可以更频繁、更安全地交付高质量的软件。这不仅提高了软件开发的效率,也增强了软件的可靠性和安全性。在实践中,CI/CD通常通过工具如Jenkins、GitLab CI/CD、CircleCI、Travis CI等实现。
官网地址Jenkins
Jenkins 是一个开源的持续集成(Continuous Integration, CI)和持续交付(Continuous Delivery, CD)服务器。它主要用于自动化软件开发的各个阶段,包括构建、测试和部署。以下是关于 Jenkins 的一些关键点:
Jenkins 的主要目标是帮助软件开发团队提高生产力和软件质量,通过自动化减少手动操作的错误和延迟。它适用于各种规模的项目,从小型的个人项目到大型企业级应用。
这里我们使用docker compose进行安装,这里的版本建议选择新的长期支持的版本,因为jenkins里安装的插件对jenkins版本有要求,推荐下载最新版本
docker pull jenkins/jenkins
创建目录
mkdir -p /opt/docker_data/jenkins/data
授权
chmod -R 777 /opt/docker_data/jenkins/data/
设置镜像
vi /opt/docker_data/jenkins/data/hudson.model.UpdateCenter.xml
内容如下
<?xml version='1.1' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
</site>
</sites>
创建docker-compose.yml文件
vi /opt/docker_data/jenkins/docker-compose.yml
内容如下
version: "3.1"
services:
jenkins:
image: 'jenkins/jenkins:latest'
container_name: jenkins
ports:
- '8080:8080'
- '50000:50000'
volumes:
- './data/:/var/jenkins_home/'
启动容器
cd /opt/docker_data/jenkins
docker-compose up -d
访问IP:8080即可,这里可能需要等到一段时间,然后就能看到下述页面
使用
docker logs -f jenkins
就能查看密码了
登陆后点击选择插件来安装
然后可能会报了一堆错误,暂时不管他,点击继续,新增一个用户后就可以进入到jenkins页面了
点击查看报错,发现多数都是插件要求的最低jenkins版本高于当前版本
可以升级jenkins解决
可以使用docker pull拉取指定新版本的镜像,如果因为网络隔离问题不能拉取,可以按照如下步骤也是可以升级的
jenkins的war包下载地址,要注意他支持的java版本,我的docker镜像内使用的时java11,所以我下载一个较新的2.419版本
将下载的war包移动到虚拟机/opt/docker_data/jenkins目录下
docker cp 路径+文件 容器id:/{后面不接内容为根路径}
docker cp /opt/docker_data/jenkins/jenkins.war 3dc381af5265:/
进入容器
docker exec -it -u root jenkins bash
进入jenkins默认war包目录
cd /usr/share/jenkins
备份旧版本
cp jenkins.war jenkins.war.bak
删除旧版本
rm jenkins.war
移动新的war包到这个目录下
mv /jenkins.war ./
然后执行exit退出容器并重启容器
docker restart jenkins
重启后在进入jenkins,插件版本问题已经解决了
下载Git Parameter、Publish Over SSH两个插件试一试插件安装功能是否正常
按照下面的方法可以设置一个代理,如果不行的话还是上梯子
进入jenkins目录
cd /opt/docker_data/jenkins/data/updates
http://192.168.56.6:8080/systemInfo
访问Index of /jenkins/updates/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror,找到自己对应的版本
里面有一个json文件
拿到这个文件的地址
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/2.32/update-center.json
回到centos中执行备份
cp default.json default.json.back
下载文件
# 下载
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/dynamic-2.346/update-center.json
# 改名
mv update-center.json default.json