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
    
  4. 修改配置文件,配置环境变量

    vim /etc/profile
    

    写入环境变量

    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. 更新配置文件

    source /etc/profile
    

安装Jenkins

普通安装

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

  2. 下载jenkins

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

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

    systemctl stop firewalld.service
    

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

使用Docker安装

在jenkins文件夹下

  1. 下载安装脚本

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

    sudo sh get-docker.sh
    

    执行完毕后,即安装完毕

  3. docker加速

    mkdir /etc/docker
    vim /etc/docker/daemon.json # daemon.json 的内容详见阿里云docker加速部分内容
    systemctl daemon-reload
    systemctl restart docker
    
  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 jenkinsjenkins/jenkins# 更简单的命令
    docker run -itd -p 8086:8080 jenkins/jenkins:lts
    
  5. 查看初始化密码

    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) -> 升级站点,使用华源:

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

    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. 执行文件

    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. 点击创建流水线,创建完毕后进入流水线页面,并自动构建项目

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/104383.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

fastadmin 表格内容超长自动折行,并且能下拉展开

{field: ocr, title: __(Ocr), operate: LIKE, table: table, class: autocontent, formatter: Table.api.formatter.content}, 主要是其中的 formatter: Table.api.formatter.content 生效的

阿里云r7服务器内存型CPU采用

阿里云服务器ECS内存型r7实例是第七代内存型实例规格族&#xff0c;CPU采用第三代Intel Xeon可扩展处理器&#xff08;Ice Lake&#xff09;&#xff0c;基频2.7 GHz&#xff0c;全核睿频3.5 GHz&#xff0c;计算性能稳定&#xff0c;CPU内存比1:8&#xff0c;2核16G起步&#…

网站列表页加密:三次请求后返回内容多\r

一、抓包第一次请求 url aHR0cDovL2N5eHcuY24vQ29sdW1uLmFzcHg/Y29saWQ9MTA抓包&#xff0c;需要清理浏览器cookie&#xff0c;或者无痕模式打开网址&#xff0c;否则返回的包不全&#xff0c;依照下图中的第一个包进行requests请求 第一次请求后返回 <!DOCTYPE html>…

puppeteer

目录 介绍启动方法功能一、爬虫优势如何实现爬虫小demo 功能二、执行脚本百度搜索脚本demo 功能三、获取cookie&#xff08;这个只能是模拟浏览器当前进入网页的cookie不是平时用的下载的的浏览器的cookie&#xff09;功能四、监控网页&#xff0c;进行性能分析 介绍 puppetee…

sshpass传输文件提示Host key verification failed.

1. sshpass功能简述 sshpass指令可用于A服务器向B服务器传输文件或执行某些指令。 2. 传输文件指令 基本传输命令&#xff1a;sshpass -p 远程服务器登录密码 scp 本地路径文件 远程服务器登录用户名远程服务器IP地址:远程服务器文件保存路径 示例&#xff1a; sshpass -p 1…

【EI会议征稿】第二届可再生能源与电气科技国际学术会议(ICREET 2023)

第二届可再生能源与电气科技国际学术会议(ICREET 2023) 2023 2nd International Conference on Renewable Energy and Electrical Technology 2020年中国可再生能源发电规模显著扩大&#xff0c;风力和太阳能发电均呈迅速增长趋势。中国大力推进能源低碳化&#xff0c;减少温…

C++学习——类成员的访问权限、类的封装

以下内容源于C语言中文网的学习与整理&#xff0c;非原创&#xff0c;如有侵权请告知删除。 总结 所谓类成员的访问权限&#xff0c;就是你能不能使用该类中的成员。 C通过 public&#xff08;公有&#xff09;、protected&#xff08;受保护&#xff09;、private&#xff…

4. redis排名系统之C++实战操作对比MySQL

一、MySQL实现方法 假设我们要设计一款排名系统&#xff0c;那必然要涉及到两大类数据&#xff1a;武器数据和非武器的通用数据&#xff0c;它他通常有一个共用的属性&#xff1a;那就是主键唯一的&#xff0c;例如玩家的数字编号&#xff0c;通常在MySQL中是自增的无符号整数…

RocketMQ的3种消息发送模式是什么?如何确保消息不丢失?

RocketMQ发送消息的三种模式分别是&#xff1a;同步发送、异步发送和单向发送。 1、同步发送模式&#xff08;Sync&#xff09; 发送方发送消息后会等待消息被成功发送到消息队列服务器并收到确认消息后才返回发送结果给调用方。这种模式下&#xff0c;发送方会阻塞等待Broke…

【交付高质量,用户高增长】-用户增长质量保证方法论 | 京东云技术团队

前言 俗话说&#xff0c;“测试是质量的守护者”&#xff0c;但单凭测试本身却远远不够。大多数情况下&#xff0c;测试像“一面镜子”&#xff0c;照出系统的面貌&#xff0c;给开发者提供修改代码的依据&#xff0c;这个“照镜子”的过程&#xff0c;就是质量评估的过程&…

利用Python分析金融交易中的滚动Z值

大家好&#xff0c;在不断演变的证券交易领域&#xff0c;能够利用数据和统计学的力量提供重要的优势。无论是预测未来价格、分析市场趋势&#xff0c;还是简单地评估特定证券的波动性&#xff0c;数据驱动的见解已经改变了交易者对证券市场的处理方式。这就是Z值的用途&#x…

STM32_PID通用算法增量式和位置式

STM32_PID通用算法增量式和位置式 前言&#xff1a; 此算法为入门级PID算法&#xff0c;调试好参数后可应用于温度控制、舵机控制、直流电机的转速控制和直流电机的角度控制等等&#xff0c;下面就以温度控制举例 pid.c #include "pid.h" #include "sensor.h&q…

数据结构:二叉排序树

什么是二叉排序树&#xff1f; 二叉排序树要么是空二叉树&#xff0c;要么具有如下特点&#xff1a; 二叉排序树中&#xff0c;如果其根结点有左子树&#xff0c;那么左子树上所有结点的值都小于根结点的值&#xff1b;二叉排序树中&#xff0c;如果其根结点有右子树&#xf…

电脑重做系统---win10

电脑重做系统---win10 前言制作启动U盘材料方法打开网址下载启动盘制作工具参照官方说明进行制作使用U盘重做系统 常用软件官网地址 前言 记得最早学习装电脑还是04年左右&#xff0c;最为一个啥也不知道的大一傻白胖&#xff0c;花了几百大洋在电脑版把了个“电脑组装与维修”…

一体化运维监控:提供全方位数据洞察

摘要&#xff1a;运维监控在数字化日益深入的今天变得至关重要。一体化运维监控管理平台脱颖而出&#xff0c;成为业界知名的数据采集与运维洞察方案提供商&#xff0c;为企业带来“看到一切”的全新体验。 正文&#xff1a; 在大数据时代的洪流中&#xff0c;企业不仅要面对数…

淘宝店铺商品评论数据采集,淘宝商品评论数据接口,淘宝API接口

采集淘宝店铺商品评论数据的方法如下&#xff1a; 进入主界面&#xff0c;选择"自定义任务"。将商品信息页的网址复制粘贴到网站输入框中&#xff0c;点击"保存设置"。将页面下拉到底部&#xff0c;点击"下一页"按钮&#xff0c;在右侧的操作提…

3. Windows下C++/MFC调用hiredis库操作redis示例

一、头文件目录 将之前下载和编译好的Redis目录拷贝到新建好的工程目录下面&#xff0c;再点击测试工程的右键/属性&#xff0c;点击C/常规&#xff0c;附加包含目录添加以下路径&#xff0c;注意如果原先有多个路径&#xff0c;在末尾处添加分号后再粘贴&#xff1a; 点击C/常…

在CentOS操作系统上使用yum安装/使用/卸载Docker容器引擎

前言 简单记录一下如何在CentOS操作系统上安装、使用、卸载Docker容器引擎&#xff0c;以及配置Docker镜像加速地址。 一、在CentOS操作系统上安装Docker容器引擎 &#xff08;1&#xff09;首先更新yum软件包索引 yum check-update&#xff08;2&#xff09;安装yum软件包管…

vue引入jQuery

配置 下载 npm install jquery --save在build的webpack.base.conf中 var webpackrequire("webpack")在module.exports中: plugins: [ //   new webpack.optimize.CommonsChunkPlugin(common.js),new webpack.ProvidePlugin({jQuery: "jquery",$: &quo…

chapter8 Dimensionality Reduction(降维)

设置 首先&#xff0c;确保代码在python2和python3中都能正常工作&#xff0c;导入一些通用模块&#xff0c;确保MatplotLib以内联方式绘制图形&#xff0c;并准备一个函数来保存这些图形: from __future__ import division,print_function,unicode_literalsimport numpy as …