CI/CD持续集成与持续交付(上)-------- git,gitee远程共有仓库和gitlab私有仓库,jenkins
Posted S4061222
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CI/CD持续集成与持续交付(上)-------- git,gitee远程共有仓库和gitlab私有仓库,jenkins相关的知识,希望对你有一定的参考价值。
目录
一、git工具使用
git简介
详细简介:https://blog.csdn.net/ThinkWon/article/details/94346816
Git理解
:
- Git是一个
开源的分布式版本控制系统
,用于敏捷高效地处理任何或小或大的项目。 - Git是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
- Git与常用的
版本控制工具
CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
分布式版本控制系统
Git特点
:
- 速度
- 简单的设计
- 对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
- 完全分布式
- 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
Git 有三种状态:已提交(committed)、已修改(modified) 和 已暂存(staged
)。
- 已修改表示修改了文件,但还没保存到数据库中。
- 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
- 已提交表示数据已经安全地保存在本地数据库中。
这会让我们的 Git 项目拥有三个阶段:工作区、暂存区以及 Git 目录
。
Git工作流程
一般工作流程
如下:
从远程仓库中克隆 Git 资源作为本地仓库;
从本地仓库中checkout代码然后进行代码修改;
在提交本地仓库前先将代码提交到暂存区;
提交修改,提交到本地仓库;本地仓库中保存修改的各个历史版本;
在需要和团队成员共享代码时,可以将修改代码push到远程仓库。
Git 的工作流程图
如下:
Git的四个核心概念
工作区、暂存区、版本库、远程仓库
Workspace
: 工作区,就是你平时存放项目代码的地方
Index / Stage
: 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
Repository
: 仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
Remote
: 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
git使用
安装Git:
获取 Git 仓库:
- 将尚未进行版本控制的本地目录转换为 Git 仓库。
- 从其它服务器克隆 一个已存在的 Git 仓库。比如: git clone
初始化版本库:
demo目录初始化为git仓库,代码库.git,demo目录为工作区
mkdir demo
git init
纯文本文件会放在版本库
!!!(如yaml文件,word不是纯文本文件)
创建测试文件,README.md,查看状态 ??,表示不在版本库中
将工作区文件README.md添加到暂存区,查看状态 A,表示此时已经在暂存区中
将暂存区的文件README.md提交,默认提交的是整个暂存区的数据,不只是刚才的文件,提交后在主分支中
第一次提交需要设置 用户名和邮箱!!!,重新提交,查看状态,此时提交成功
修改工作区的文件,查看状态,M为红色,靠右显示,M:已修改
检查当前文件状态
$ git status
$ git status -s //简化输出
重新add添加到缓存区,查看状态,M为绿色,靠左显示,表示已经提交至暂存区
全部提交,此时使用update,查看全部提交后的状态,提交成功 !!!
文件中追加内容后查看,M为红色,靠右显示,M:已修改
checkout:撤销
,再次查看文件内容,恢复到追加前状态
继续vim编辑md文件,查看状态为 M红色,靠右,重新add添加至缓存区,查看状态为 M绿色,靠左
再次追加内容至md文件中,此时查看状态,两个M颜色不同,左边绿色M表示:(1和2行的)已经提交暂存区,右边红色M表示:第三行内容在工作区,未提交至缓存区域
M(右)工作区,左(暂存区)
重新添加,查看状态,此时都已在缓存区中!!!
重置暂存区的指定文件,恢复文件至工作区状态
,checkout:撤销,恢复文件至上次工作区文件内容
.gitconfig 查看配置信息
可以看到设定的用户和邮箱信息
忽略隐藏文件
创建隐藏文件和目录:纯目录不会发现,目录里有文件才会关注
查看隐藏文件和目录的状态 ??
编辑.gitignore,.*表示忽略所有隐藏文件,/test:只忽略当前目录下的test文件 build/: 忽略任何目录下名为 build 的文件夹
md文件中追加内容,commit -a -m:两步和为一步,add+commit
,查看状态,成功提交
git log 显示当前分支的版本历史
移除文件
(1)直接 rm 删除文
件,使用 checkout
撤销,可恢复文件
此时是工作区删除,但是暂存库中未删除
(2)git rm 删除文件
,reset+checkout
可恢复文件
暂存区删除
(3)git rm + commit delete 删除文件,
版本库删除
git reflog 版本回退 ,git reset 指定版本,恢复文件
git命令补充
查看提交历史
$ git log
$ git log -p -2
$ git log --stat
$ git log --pretty=oneline
查看已暂存和未暂存的修改
$ git diff
重命名文件
$ git mv README.md README
gitlab-ctl start # 启动所有 gitlab 组件
gitlab-ctl stop # 停止所有 gitlab 组件
gitlab-ctl restart # 重启所有 gitlab 组件
gitlab-ctl status # 查看服务状态
gitlab-ctl reconfigure # 重载服务
gitlab-ctl tail # 查看日志
二、git结合远程共有仓库github/gitee
由此github登陆曼,此处是结合giitee
首先进行账户注册
登陆成功
ssh认证,生成本地密钥,并上传公钥到gitee远程共有仓库中
添加ssh公钥成功!!!
新建仓库为westos,指定westos仓库公开
创建成功
git init(本地已做过)
本地从仓库连接远程仓库,使用ssh方式(两种连接方式:ssh/http)使用https方式推送每次需要输入用户名和密码,如果不想麻烦的话采用ssh方式
push本地仓库内容至远程共有仓库,指定分支master
远程仓库中可以看到文件
本地删除文件,从远程仓库直接克隆,本地会恢复文件
本地编辑test文件,add -- commit -- push
成功上传至远程仓库
三、远程私仓库gitlab搭建
创建虚拟机server5,官方推荐至少4G
内存
下载gitlab的安装包,gitlab.el8的python是3版本
,官网:https://about.gitlab.com/install/
软件下载(官方下载慢,推荐使用国内镜像站点)
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/
安装依赖
安装rpm包
编辑配置文件, 指向自己本机 ip,访问gitlab的地址
gitlab-ctl reconfigure
重载服务
登录gitlab, 首次登陆的初始密码
网页访问http://172.25.28.5
重置密码
修改语言
本地添加ssh密钥,将server5的公钥拷贝添加到仓库中
ssh方式认证成功!!!
创建项目
westos项目,选择私有,选择初始化会生成readme.md文件
查看项目
本地克隆
进入工作目录,查看本地git版本
gitlab-ctl status
查看服务状态
一 、jenkins持续集成
1 jenkins简介
-
Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。
-
Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。
-
CI(Continuous integration持续集成)持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。
- CD(Continuous Delivery持续交付) 是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。
2 jenkins安装
软件下载:https://jenkins.io/zh/download/
国内镜像站:https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/
注意 jenkins 新版本有依赖性(daemonize)
安装jdk,再装jenkins
启动 jenkins
查看端口:8080
初始化的数据位置:/var/lib/jenkins
访问访问:172.25.28.6:8080
使用默认初始密码登陆,初始密码位于
cat /var/lib/jenkins/secrets/initialAdminPassword
此处注意是 All-None
!!!
跳过并save,admin不用创建
重置密码和时区
重新登陆成功
更新插件源
mkdir /var/lib/jenkins/update-center-rootCAs
wget https://cdn.jsdelivr.net/gh/lework/jenkins-update-center/rootCA/update-center.crt -O /var/lib/jenkins/update-center-rootCAs/update-center.crt
chown jenkins.jenkins -R /var/lib/jenkins/update-center-rootCAs
给定权限
查看哪个镜像站的速度快
curl -sSL https://cdn.jsdelivr.net/gh/lework/jenkins-update-center/speed-test.sh | bash
此处tsinghua 镜像最快!!!
在设置中找到Update Site,将快的url填入(本人无意填错)
ustc源
:
https://cdn.jsdelivr.net/gh/lework/jenkins-update-center/updates/ustc/update-center.json
可以查看镜像源文件,已更改
cat /var/lib/jenkins/hudson.model.UpdateCenter.xml
3. jenkins插件安装
Dashboard 选择 Plugin Manager插件管理
点击available,搜索中文插件,点击install
安装插件成功
安装pipeline流水线插件
安装插件成功
4. jenkins项目创建,每隔1分钟看gitlab的变化
为项目配置git仓库,需要安装gitlab插件
新建freestyle类型的项目,名为westos
本机需要有git工具
配置名为westos的项目,在源码管理
一栏添加私有git url
私有git路径:git@172.25.28.6:root/westos.git
报错原因:git仓库无法和Jenkins进行SSH免密连接
jenkins主机本地生成ssh密钥
上传到gitlab私有仓库中
添加凭证
凭证中添加私钥匙
报错解决!!!
构建触发器,测试论询:每隔1分钟
看gitlab的变化
源码管理中,指定分支为main,与gitlab中分支一致
!!!
应用,查看控制台输出,成功!!!
测试:
git端添加测试文件index.html,上传至gitlab仓库,察看是否同步
jenkins端查看数据已同步!!!
查看westos项目控制台输出
5.实时看gitlab的变化,gitlab自动触发jenkins
gitlab的设定:
首先打开git设置----网络----外发请求
, 允许Webhooks和服务对本地网络的请求
在项目设置----Webhooks添加策略
url 和 token 的获取
见于下面的jenkins中!!!
jenkins中的设定:
取消轮询
url的获取:
token的获取:
应用!!!
测试:
本地仓库中编辑index.html 文件上传至 远程私有仓库 gitlab
jenkins端实现实时同步
查看jenkins的westos项目的控制台输出
6 jenkins自动构建镜像,并上传至本地仓库registry
本地git端编辑Dockerfile,定义拉取的测试镜像
push至远程私有仓库gitlab
jenkins端查看同步后的Dockerfile
jenkins端需要安docker
启动docker服务
网桥配置
准备好Dockerfile文件中需要的镜像
安装插件
jenkins临时i搭建私有仓库registry
sock连接docker plusgins,jenkins对sock无权限
,需要修改sock权限
配置项目westos,按图中要求即可
取消强制pull
查看jenkins端的控制台输出
上传镜像至本地临时仓库registry成功!!!
测试:
本地直接localhost访问,查看到已经上传的镜像
7. jenkins自动构建镜像,并上传至harbor仓库
本地git端和jenkins端主机都添加harbor仓库解析
启动harbor仓库
保证jenkins端接入harbor仓库
测试pull拉取成功
配置项目westos,按图中要求即可
指定上传至 reg.westos.org仓库的 library/demo
下
sock连接docker plusgins,jenkins对sock无权限
,需要修改sock权限
CI/CD持续集成与持续交付(上)-------- git,gitee远程共有仓库和gitlab私有仓库,jenkins
CI/CD持续集成与持续交付(下)-------- jenkins的节点管理,用户管理,结合ansible和k8s