自动化篇 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.3 | jenkins服务器 Jenkins+git |
---|---|
192.168.25.4 | gitlab服务器 |
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的概念和搭建的主要内容,如果未能解决你的问题,请参考以下文章
2022-03-12:k8s如何搭建gogs+drone实现自动化部署cicd,yaml如何写?