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

持续集成解决什么问题

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

持续集成(CI)

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

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

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

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

持续部署(CD)

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

持续集成组成要素

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

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

Jenkins使用

相关概念

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

安装 JDK

  1. 下载jdk文件

  2. 上传到服务器的目录中

    在服务器新建java目录,在java目录中创建/opt/jdk目录

  3. java目录中解压文件

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

    shell 复制代码
    vim /etc/profile

    写入环境变量

    shell 复制代码
    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
  5. 更新配置文件

    shell 复制代码
    source /etc/profile

安装Jenkins

普通安装

  1. 创建Jenkins目录

    java/opt目录中创建jenkins目录

  2. 下载jenkins

    shell 复制代码
    wget -O /opt/jenkins/jenkins.war http://mirrors.jenkins.io/war-stable/latest/jenkins.war
  3. 在jenkins目录中,执行以下命令

    shell 复制代码
    java -jar jenkins.war --httpPort=8080
  4. 关闭防火墙,避免端口拦截

    shell 复制代码
    systemctl stop firewalld.service

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

使用Docker安装

在jenkins文件夹下

  1. 下载安装脚本

    shell 复制代码
    curl -fsSL https://get.docker.com -o get-docker.sh
  2. 执行脚本

    shell 复制代码
    sudo sh get-docker.sh

    执行完毕后,即安装完毕

  3. docker加速

    shell 复制代码
    mkdir /etc/docker
    vim /etc/docker/daemon.json # daemon.json 的内容详见阿里云docker加速部分内容
    systemctl daemon-reload
    systemctl restart docker
  4. 安装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
  5. 查看初始化密码

    shell 复制代码
    docker logs jenkins

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

    然后运行docker logs <CONTAINER ID> 用复制的ID替换<CONTAINER ID>

  6. 登录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插件。

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

  2. 在gitlab文件夹下创建docker-compose.yml文件

    文件内容可在github中docker-gitlab仓库复制

  3. 安装docker-compose.yml

    shell 复制代码
    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
  4. 执行文件

    shell 复制代码
    chmod +x /usr/lcoal/bin/docker-compose
    docker-compose up -b
  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. 点击创建流水线,创建完毕后进入流水线页面,并自动构建项目
相关推荐
测试米兔er1 小时前
Jenkins教程-11-发送钉钉测试报告通知
jenkins
大卫小东(Sheldon)2 小时前
在Docker中搭建rabbit MQ集群 (Mac + OrbStack)
docker
Java追光着2 小时前
谷粒商城学习-10-docker安装mysql
学习·mysql·docker·谷粒商城
小宏运维有点菜3 小时前
docker
运维·docker·容器
孤城2863 小时前
08 docker Registry搭建docker私仓
运维·docker·容器·devops
宿昔不梳一苦十年寒窗5 小时前
docker 安装 nacos
运维·docker·容器
不吃饭的猪7 小时前
【无标题】
java·开发语言·docker
是乐乐啊呀7 小时前
docker
运维·docker·容器
杨浦老苏7 小时前
开源协作wiki和文档软件Docmost
docker·在线文档·markdown·群晖·wiki
Apifox.7 小时前
如何将 Apifox 的自动化测试与 Jenkins 集成?
功能测试·测试工具·ci/cd·jenkins·devops