• CICD:使用docker+ jenkins + gitlab搭建cicd服务


    持续集成解决什么问题

    • 提高软件质量
    • 效率迭代
    • 便捷部署
    • 快速交付、便于管理

    持续集成(CI)

    集成,就是一些孤立的事物或元素通过某种方式集中在一起,产生联系,从而构建一个有机整体的过程。

    持续,就是指长期的对项目代码进行集成。

    持续集成是指将所有开发者工作副本每天多次合并到主干的做法。

    持续集成强调开发人员提交了新代码之后,立刻进行构建、测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。

    持续部署(CD)

    对于一个成熟的CICD管到来说,最后的阶段就是持续部署。作为持续交付——自动将生产就绪型构建版本发不到代码存储库的延伸。

    持续集成组成要素

    一个最小化的持续集成系统需要包含以下几个要素:

    • 版本管理系统
    • 构建脚本和工具
    • CI服务器

    Jenkins使用

    相关概念

    • 流水线:Jenkins Pipeline 是一种插件

    安装 JDK

    1. 下载jdk文件

    2. 上传到服务器的目录中
      在服务器新建java目录,在java目录中创建/opt/jdk目录

    3. java目录中解压文件

      tar axvf jdk-21_linux-x64_bin.tar.gz -C /opt/jdk --strip-components 1
      
      • 1
    4. 修改配置文件,配置环境变量

      vim /etc/profile
      
      • 1

      写入环境变量

      export  JAVA_HOME=/opt/jdk
      export  JRE_HOME=${JAVA_HOME}/jre
      export  CLASSPATH=${JAVA_HOME}/lib:${JRE_HOME}/lib
      export  PATH=${JAVA_HOME}/bin:$PATH
      
      • 1
      • 2
      • 3
      • 4
    5. 更新配置文件

      source /etc/profile
      
      • 1

    安装Jenkins

    普通安装

    1. 创建Jenkins目录
      java/opt目录中创建jenkins目录

    2. 下载jenkins

      wget -O /opt/jenkins/jenkins.war http://mirrors.jenkins.io/war-stable/latest/jenkins.war
      
      • 1
    3. 在jenkins目录中,执行以下命令

      java -jar jenkins.war --httpPort=8080
      
      • 1
    4. 关闭防火墙,避免端口拦截

      systemctl stop firewalld.service
      
      • 1

    使用serverIP:port访问即可登录jenkins

    使用Docker安装

    在jenkins文件夹下

    1. 下载安装脚本

      curl -fsSL https://get.docker.com -o get-docker.sh
      
      • 1
    2. 执行脚本

      sudo sh get-docker.sh
      
      • 1

      执行完毕后,即安装完毕

    3. docker加速

      mkdir /etc/docker
      vim /etc/docker/daemon.json # daemon.json 的内容详见阿里云docker加速部分内容
      systemctl daemon-reload
      systemctl restart docker
      
      • 1
      • 2
      • 3
      • 4
    4. 安装jenkins

      # 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
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
    5. 查看初始化密码

      docker logs jenkins
      
      • 1

      如果上面的命令行不通,先通过docker ps查看容器运行信息,复制CONTAINER ID
      然后运行docker logs 用复制的ID替换

    6. 登录Jenkins
      在浏览器中访问serverip:8080访问登录页面,输入上面命令得到的密码即可进入

    jenkins配置

    Jenkins插件加速

    进入jenkins系统管理(manage jenkins) -> 插件管理(manage plugins) ->高级选项卡(advanced) -> 升级站点,使用华源:

    https://mirrors.tuna.tsinghua.edu.cn/jenkins/update/current/update-center.json
    
    • 1

    环境变量配置

    进入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插件。

    1. 在服务器中根目录下创建gitlab文件夹

    2. 在gitlab文件夹下创建docker-compose.yml文件
      文件内容可在github中docker-gitlab仓库复制

    3. 安装docker-compose.yml

      sudo curl -L https://github.com/docker/compose/releases/download/v2.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
      
      • 1
    4. 执行文件

      chmod +x /usr/lcoal/bin/docker-compose
      docker-compose up -b
      
      • 1
      • 2
    5. 在浏览器中输入serverIP:port访问

    配置自动化任务

    配置自由风格的项目

    1. 在gitlab中新建一个项目
    2. 在设置中点击集成,选中Trigger -> push events
    3. 在jenkins新建任务,选择构建自由风格的项目
    4. 构建触发器,选中build when a change is pushed to gitlab。把后面的url输入到gitlab的项目配置中
    5. 点击高级,下滑页面,找到generate点击,把生成的内容复制到gitlab的secert token输入框中
    6. 点击add webhook,会出现警告。为了消除警告进行设置。点击设置,点击网络,展开外发请求,选中第一个,保存。

    配置pipeline

    1. 在本地项目中创建一个Jenkinsfile
    2. 进入jenkins官网,复制pipeline配置粘贴到本地项目中的Jenkinsfile
    3. 然后通过git提交代码到gitlab
    4. 在jenkins中打开blueocean
    5. 点击创建流水线,点击git
    6. 在gitlab中复制仓库地址,粘贴到jenkins流水线的输入框中
    7. 点击创建流水线,创建完毕后进入流水线页面,并自动构建项目
  • 相关阅读:
    2.4 双链表
    【js】解决读取文件源内容总是得到默认index.html
    Vue 入门案例剖析
    Python按类别和比例从Labelme数据集中划分出训练数据集和测试数据集
    JavaWeb | 常用的HTML(JavaWeb)标签
    Kafka~基础原理与架构了解
    设计资讯 | 巴黎 2024 年奥运会“另一个自我”以 DAB 汽车定制电动摩托车的形式亮相
    【毕业设计】基于javaEE+SSH+SqlServer的企业车辆管理系统设计与实现(毕业论文+程序源码)——车辆管理系统
    【最接地气的KMP算法】带着问题思考,带你彻底搞懂KMP算法中难以理解的点!
    虚拟机安装
  • 原文地址:https://blog.csdn.net/qq_40850839/article/details/133822363