docker compose安装jenkins

Updated on in 程序人生 with 0 views and 0 comments

一、简介

1.1 CI和CD

CI(Continuous Integration,持续集成)和CD(Continuous Delivery / Continuous Deployment,持续交付/持续部署)是现代软件开发流程中不可或缺的组成部分,它们是DevOps文化的重要实践,旨在加速软件开发周期,提高软件质量和部署效率。

1.1.1 CI - 持续集成

持续集成是一种软件开发实践,要求开发团队频繁地(每天或多次每天)将代码集成到共享的主干分支中。每次集成都会通过自动化构建(包括编译、打包和测试)来验证,以便尽早发现集成错误。CI的主要目标是:

  • 早期发现问题 :通过自动化测试,可以迅速发现代码中的错误或冲突,减少后期修复成本。
  • 提高代码质量 :强制执行编码标准和规范,确保代码的一致性和可维护性。
  • 加快反馈循环 :使开发团队能够更快地得到关于代码变更的影响反馈,促进快速迭代。

1.1.2 CD - 持续交付/持续部署

持续交付和持续部署是紧密相关的概念,但它们有细微的区别:

1.1.3 持续交付(Continuous Delivery)

持续交付是一种实践,意味着代码库应该处于随时可以部署到生产环境的状态,但实际部署仍然需要人工批准。这通常包括:

  • 自动化测试 :确保每次代码变更都经过全面的测试。
  • 标准化部署流程 :确保从开发到生产的部署流程一致且可重复。
  • 可部署性 :确保代码可以在任何时间点被部署至生产环境,无需额外的手动工作。

1.1.5 持续部署(Continuous Deployment)

持续部署是持续交付的一个子集,它进一步自动化了部署过程。当代码通过所有测试后,会自动部署到生产环境,无需人工干预。这增加了软件发布的频率和速度,但也可能增加风险,因此需要强大的自动化测试和回滚策略。

1.1.6 总结

CI/CD的核心在于自动化,通过自动化构建、测试和部署流程,软件团队可以更频繁、更安全地交付高质量的软件。这不仅提高了软件开发的效率,也增强了软件的可靠性和安全性。在实践中,CI/CD通常通过工具如Jenkins、GitLab CI/CD、CircleCI、Travis CI等实现。

1.2 Jenkins简介

官网地址Jenkins

Jenkins 是一个开源的持续集成(Continuous Integration, CI)和持续交付(Continuous Delivery, CD)服务器。它主要用于自动化软件开发的各个阶段,包括构建、测试和部署。以下是关于 Jenkins 的一些关键点:

  1. 开源和可扩展
    • Jenkins 是基于 Java 编写,完全开源,具有庞大的插件生态系统,允许用户根据需要扩展其功能。
  2. 持续集成与持续交付
    • 它通过监控源代码仓库中的更改,自动触发构建和测试流程,以确保代码的稳定性和质量。
    • 支持自动化部署,使得软件从开发到生产环境的整个交付过程可以自动化完成。
  3. 易用性
    • 提供了一个直观的Web界面,用户可以通过图形界面进行配置,管理构建作业和插件。
    • 可以通过定义在 Jenkinsfile 中的管道(Pipelines as Code)实现构建流程的代码化,便于版本控制和重用。
  4. 跨平台
    • Jenkins 可以在多种操作系统上运行,包括 Windows、Linux 和 macOS。
  5. 灵活性
    • 可以在单台服务器上运行,也可以在分布式环境中运行,利用多台机器并行处理任务。
  6. 社区与支持
    • 拥有一个活跃的开发者和用户社区,提供大量的文档、教程和论坛支持。

Jenkins 的主要目标是帮助软件开发团队提高生产力和软件质量,通过自动化减少手动操作的错误和延迟。它适用于各种规模的项目,从小型的个人项目到大型企业级应用。

二、安装

2.1 下载安装

这里我们使用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即可,这里可能需要等到一段时间,然后就能看到下述页面

image.png

使用

docker logs -f jenkins

就能查看密码了

image.png

登陆后点击选择插件来安装

image.png

然后可能会报了一堆错误,暂时不管他,点击继续,新增一个用户后就可以进入到jenkins页面了

image.png

image.png

2.2 插件版本与jenkins不匹配

点击查看报错,发现多数都是插件要求的最低jenkins版本高于当前版本

image.png

可以升级jenkins解决

2.2.1 升级jenkins

可以使用docker pull拉取指定新版本的镜像,如果因为网络隔离问题不能拉取,可以按照如下步骤也是可以升级的

jenkins的war包下载地址,要注意他支持的java版本,我的docker镜像内使用的时java11,所以我下载一个较新的2.419版本

image.png

将下载的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,插件版本问题已经解决了

image.png

下载Git Parameter、Publish Over SSH两个插件试一试插件安装功能是否正常

2.3 网络代理

按照下面的方法可以设置一个代理,如果不行的话还是上梯子

进入jenkins目录

cd /opt/docker_data/jenkins/data/updates
http://192.168.56.6:8080/systemInfo

image.png

访问Index of /jenkins/updates/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror,找到自己对应的版本

里面有一个json文件

image.png

拿到这个文件的地址

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

标题:docker compose安装jenkins
作者:wenyl
地址:http://www.wenyoulong.com/articles/2024/06/19/1718779694518.html