自动化篇 CICD的概念和搭建

Posted 鹧鸪鹄

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化篇 CICD的概念和搭建相关的知识,希望对你有一定的参考价值。

文章目录

前言

一、CICD是什么?

持续集成(CI)是在源代码变更后自动检测、拉取、构建和(在大多数情况下)进行单元测试的过程。持续集成是启动管道的环节(尽管某些预验证 —— 通常称为上线前检查pre-flight checks —— 有时会被归在持续集成之前)。
持续集成的目标是快速确保开发人员新提交的变更是好的,并且适合在代码库中进一步使用。

持续部署(CD)是指能够自动提供持续交付管道中发布版本给最终用户使用的想法。根据用户的安装方式,可能是在云环境中自动部署、app 升级(如手机上的应用程序)、更新网站或只更新可用版本列表。
这里的一个重点是,仅仅因为可以进行持续部署并不意味着始终部署来自管道的每组可交付成果。它实际上指,通过管道每套可交付成果都被证明是“可部署的”。这在很大程度上是由持续测试的连续级别完成的(参见本文中的持续测试部分)。
管道构建的发布成果是否被部署可以通过人工决策,或利用在完全部署之前“试用”发布的各种方法来进行控制。

整体上就是开发人员将代码开发好上传至代码仓库 自动运行成功就交由jenkins来抓取和容器对接来自动化上线和部署 不通过则退回 开发自己审核

组件

代码仓库gitlab
GitLab是一个代码仓库,用来管理代码 开发人员将代码上传至仓库
jenkins
Jenkins是一个自动化服务器,可以运行各种自动化构建、测试或部署任务
git组件
将Jenkins暂存在目录中

二 部署

jenkins和git组件安装

先安装Jenkins

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo   先配置一个网络源  按转组件
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo   Jenkins官方源
rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key    从官方源获取rpm包
yum install jenkins    安转Jenkins
/etc/init.d/jenkins start  开启服务
systemctl status jenkins.service   检查服务状态
yum install -y git  安转git组件






在浏览器打开 端口为8080 地址为服务器地址 去对应的文件夹找到密钥输入


登陆


主页面

GIT组件安装

yum install -y git   安装git 
git config --global user.name "oao"   设置用户名
git config --global user.email "2234797257@qq.com"  设置邮箱
git config --global color.ui true   高亮显示
git config --list  查看列表
mkdir /work  创建工作目录
cd /wock
git init 初始化git
git status  查看状态


gitlab安装

 yum install curl policycoreutils openssh-server openssh-clients postfix  安装依赖性
 systemctl status postfix.service  查看服务状态确保开启
 yum install -y net-tools  安装工具包
 rpm -ivh gitlab-ce-11.2.0-ce.0.el7.x86_64.rpm  安装gitlab服务
 vim /etc/gitlab/gitlab.rb   配置gitlab仓库路径
 gitlab-ctl reconfigure  gitlab初始化
 gitlab-ctl restart   重载服务
 浏览器访问




浏览器访问 初次以root密码登陆

主界面

优化向

vim /etc/gitlab/gitlab.rb

#设置站点地址
external_url 'http://192.168.0.200'
#进程超时时间
unicorn['worker_timeout'] = 60
#减少进程数
unicorn['worker_processes'] = 10
#进程内存限制
unicorn['worker_memory_limit_min'] = "200 * 1 << 20"
unicorn['worker_memory_limit_max'] = "300 * 1 << 20"
#减少数据库缓存
postgresql['shared_buffers'] = "256MB"
#减少数据库并发量
postgresql['max_parallel_workers_per_gather'] = 0
#关闭监控monitor
prometheus['monitor_kubernetes'] = false

egrep -v "#|^$" /etc/gitlab/gitlab.rb

#启动gitlab
gitlab-ctl start

三 预测试环境部署

需求:Jenkins可以拉取提交到gitlab的代码

192.168.25.3jenkins服务器 Jenkins+git
192.168.25.4gitlab服务器

Jenkins补全gitlab组件

Build Authorization Token Root
Publish Over SSH
Gitlab Authentication
Gitlab Hook
Gitlab
Git Paramete




Jenkins密钥认证

ssh-keygen -t rsa
cat /root/.ssh/id_rsa.pub





Jenkins添加认证

cat /root/.ssh/id_rsa.pub





Jenkins和gitlab对接

打开gitlab创建密钥






完成后保存

添加SSH服务器


将之前的git返回的密钥输入


四 开始构建



去gitlab







配置wobook

用来更新数据 向Jenkins发送广播告诉他有新的数据上传




点击测试

返回200表示正常

构建测试

去服务器查看是否有文件‘

报错

128代码


原因:ssh凭证 在构建ssh服务器是密钥不完整 重新复制公钥 注意用户名

gitlab无法启动


解决 重启 systemctl start gitlab-runsvdir

hook插件装不上


先检查安装路径没有空格 一般是挂个加速器或vpn就可以解决

webhook


解决

以上是关于自动化篇 CICD的概念和搭建的主要内容,如果未能解决你的问题,请参考以下文章

自动化篇 CICD的概念和搭建

CICD相关概念

基于 Rancher 的企业 CICD 环境搭建

2022-03-12:k8s如何搭建gogs+drone实现自动化部署cicd,yaml如何写?

我的docker随笔37:使用gitlab和jenkins实现CICD

我的docker随笔37:使用gitlab和jenkins实现CICD