目录

一、git工具使用

•Git特点:

三种状态

将尚未进行版本控制的本地目录转换为 Git 仓库

 远程操作

二、gitlab代码仓库

三、Jenkins持续集成

jenkins简介

jenkins安装

先安装jdk

 安装Jenkins

加速处理,更新插件源

整合jenkins和getlab

新建一个自由风格任务

 gitlab上克隆

在server3节点上先安装git

 粘贴到源码管理

 添加访问git仓库的私钥到Jenkins或者添加server3公钥到git仓库

 查看更改项目分支

构建触发器 

构建

 设置完成保存,观察现象

 右击#1控制台输出

gitlab自动触发jenkins

Jenkins的自动构建

镜像测试

整体流程运行

过程总结

 分布式结构实现项目自动集成与交付


具体来说,CI/CD可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试阶段,到交付和部署)。这些关联的事务统称为“CI/CD管道”,由开发和运维团队协同支持。

随着DevOps的兴起,出现了持续集成(Continuous Integration)持续交付(Continuous Delivery) 、持续部署(Continuous Deployment) 的新方法。传统的软件开发和交付方法正在迅速变得过时。从历史上看,在敏捷时代,大多数公司会每月,每季度,每两年甚至每年发布部署/发布软件。然而,现在,在DevOps时代,每周,每天,甚至每天多次是常态。当SaaS正在占领世界时,尤其如此,您可以轻松地动态更新应用程序,而无需强迫客户下载新组件。很多时候,他们甚至都不会意识到正在发生变化。开发团队通过软件交付流水线(Pipeline)实现自动化,以缩短交付周期,大多数团队都有自动化流程来检查代码并部署到新环境。今天,我们将介绍什么是CI / CD / CD,以及现代软件公司如何使用工具将部署代码的流程自动化。
持续集成的重点是将各个开发人员的工作集合到一个代码仓库中。通常,每天都要进行几次,主要目的是尽早发现集成错误,使团队更加紧密结合,更好地协作。
持续交付的目的是最小化部署或释放过程中固有的摩擦。它的实现通常能够将构建部署的每个步骤自动化,以便任何时刻能够安全地完成代码发布(理想情况下)。
持续部署是一种更高程度的自动化,无论何时对代码进行重大更改,都会自动进行构建/部署。

一、git工具使用

Git特点

速度
简单的设计
对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
完全分布式
有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
自诞生于 2005 年以来,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的目标。 它的速度飞快,极其适合管理大项目,有着令人难以置信的非线性分支管理系统
Git必看秘籍 :https://git-scm.com/book/zh/v2

三种状态

现在请注意,如果你希望后面的学习更顺利,请记住下面这些关于 Git 的概念。 Git 有三种状态,你的文件可能处于其中之一: 已提交(committed)已修改(modified) 和 已暂存(staged)

  • 已修改表示修改了文件,但还没保存到数据库中。

  • 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。

  • 已提交表示数据已经安全地保存在本地数据库中。

这会让我们的 Git 项目拥有三个阶段:工作区、暂存区以及 Git 目录。

获取 Git 仓库通常有两种方式

从其它服务器克隆 一个已存在的 Git 仓库。比如: git clone

将尚未进行版本控制的本地目录转换为 Git 仓库。我们下面完成第二种。

将尚未进行版本控制的本地目录转换为 Git 仓库

创建一台干净的虚拟机server2

初始化版本库:git目录是git跟踪管理版本库的,没事别瞎溜达

 ??代表刚刚创建还没进版本库,还没开始追踪。

A代表添加进了暂存区。

第一次添加失败,需要书写提交者的用户信息

 再次提交,查看状态为空,说明提交成功。

当对文件进行修改以后,由于之前已将提交到版本库,就会有一个追踪。

 只是修改,会在工作区M在右边,add以后进入暂存区,M在左边。我们提交时,只会提交暂存区的,不会提交工作区的。

 忽略文件

cat .gitignore

查看已暂存和未暂存的修改
$ git diff

提交更新
$ git commit

跳过使用暂存区域(但是不支持新建的,只支持已经存在的)
$ git commit -a -m 'added new benchmarks'

移除文件
$ git rm PROJECTS.md
$ git rm --cached README

撤消对文件的修改
$ git checkout -- README.md

重命名文件
$ git mv README.md README

其实,运行 git mv 就相当于运行了下面三条命令:

$ mv README.md README
$ git rm README.md
$ git add README

查看提交历史
$ git log
$ git log -p -2
$ git log --stat
$ git log --pretty=oneline

取消暂存的文件
$ git reset HEAD README.md

撤消对文件的修改
$ git checkout -- README.md




版本回退:
$ git reflog
$ git reset --hard efa267a

 远程操作

让虚拟机可以联网,然后访问gitee,注册账号,并新建一个仓库:

 推送本地仓库内容到github:

$ git remote add origin https://github.com/westos007/git.git	//关联远程仓库

使用https方式推送每次需要输入用户名和密码,如果不想麻烦的话采用ssh方式

生成本地密钥,并上传公钥到github

$ git push -u origin master		//第一次推送需要加 -u参数

查看,gitee已经上传

 更改上传

 查看

本机删除了,可以克隆 

克隆远程仓库:$ git clone git@github.com:westos007/gittest.git

二、gitlab代码仓库

代码仓库的重要性不容质疑,而单纯的Git服务器与命令行对工程师们十分不友好,也不方便项目与代码的管理,可视化代码仓库的出现便很好地解决了这些问题。

常见可视化代码仓库有 Github、Coding等,但是这些都是第三方的代码仓库,除了需要收费外,还有诸多限制,由于安全性与保密性,很多时候技术团队是不允许使用它们,唯一的解决方式就是自建代码仓库。Gitlab是开源的、优质的可视化代码仓库。

下面构建自己的Gitlab代码仓库。

官网 https://about.gitlab.com/install/(目前为极狐版)
软件下载(官方下载慢,推荐使用国内镜像站点)https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/(为开源ce版)

从官网下载rpm包。

 拷贝到server2,由于具有依赖性,按照官网提示yum install

常用命令:
gitlab-ctl start      # 启动所有 gitlab 组件
gitlab-ctl stop          # 停止所有 gitlab 组件
gitlab-ctl restart            # 重启所有 gitlab 组件
gitlab-ctl status          # 查看服务状态
gitlab-ctl reconfigure       # 重载 服务
gitlab-ctl tail          # 查看日志

 更改配置文件,并利用指令重置。

 查看状态及密码(首次登录要用)

 访问172.25.254.2用户名为root,密码为上图选中部分

 进来以后更改语言和密码

添加ssh密钥将之前免密时生成的公钥,粘贴过来

 测试

然后新建仓库

 

 

克隆

 上传

三、Jenkins持续集成

jenkins简介

jenkins是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。本文以 CentOS7 环境为例,总结了 Jenkins 的安装与配置。

 Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。

Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。

CI(Continuous integration持续集成)持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试

CD(Continuous Delivery持续交付) 是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中

主要特色功能:

  • 流水线
  • 多种类型的计算节点支持(SSH、JNLP等)
  • 丰富的插件扩展机制

jenkins安装

我们新开一台干净的虚拟机server3.

软件下载 https://jenkins.io/ zh /download/
国内镜像站: https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/

先安装jdk

安装系统自带的java-open.jdk

 安装Jenkins

rpm -ivh jenkins-2.338-1.1.noarch.rpm

保证虚拟机联网的情况下,启动服务,因为启动需要从网上下载插件。

systemctl  start jenkins

启动以后查看端口,8080已经起来。

然后浏览器访问172.25.254.3出现一下页面。该过程等待的时间会比较长。

加速处理,更新插件源

由于比较慢,我们可以通过更新插件源的形式,提高速度。

我们可以看到插件源在这个文件当中:选中的部分

curl -sSL https://cdn.jsdelivr.net/gh/lework/jenkins-update-center/speed-test.sh | bash  #查看更新源

 从中查看哪个下载速度是最快的。(可以多次测量选一个相对稳定的)

浏览器访问 https://cdn.jsdelivr.net/gh/lework/jenkins-update-center/

点击uodates,从中选择刚刚测试最快的链路。

 

 复制其链接(删掉连接中的@master)将其同步到下面的位置

 

 下载证书

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

 重启服务会较快的进来

cat /var/lib/jenkins/secrets/initialAdminPassword #将生成的密码复制到浏览器的页面管理员密码中

 安装推荐的

 直接使用右下角admin登录即可。然后点击保存并完成。开始使用Jenkins

 进来以后先更改密码

设置——password——新密码——保存——重新登录

 

整合jenkins和getlab

新建一个自由风格任务

 gitlab上克隆

在server3节点上先安装git

因为是以git形式拉取的,所以节点需要先安装git

 粘贴到源码管理

 添加访问git仓库的私钥到Jenkins或者添加server3公钥到git仓库

添加server3公钥到git仓库

 添加访问git仓库的私钥

 查看更改项目分支

构建触发器 

构建

 

 设置完成保存,观察现象

一分钟后

 右击#1控制台输出

gitlab自动触发jenkins

添加gitlab插件

勾选插件——直接安装——安装成功后——点进项目——配置——构建触发器——勾选——高级——生成秘钥 ——保存

 把以上两个箭头指的地方填写到gitlab相应位置,然后添加

 此时有报错

菜单——管理员——设置——网络——勾选——保存修改——重新填写上图的网址和令牌——添加

 

 测试

 此时会主动通知Jenkins,此时查看Jenkins项目test,会有一个#2

 此时在server2写一个dockerfile,并上传到gitlab

Jenkins的自动构建

Jenkins端

管理Jenkins——插件管理——可选插件——搜索docker——勾选合适插件——安装——完成

该插件构建并推送

 点击配置——构建——去掉之前的执行shell——选择docker build and publish——启动仓库

 因为要构建,所以server3要安装docker

配置yum源(我们直接使用阿里云的yum源)

安装docker引擎,才能构建后面的dockerfile

将server1上的docker.conf拷贝到server3的指定目录当中

使之生效,然后启动docker

将证书拷贝过来

 域名解析不能少

设置一个阿里云的加速器,这样下东西快

 然后重启docker

 自此docker引擎就设置成功了

更改套接字文件权限,一会要其他用户访问。

选择仓库名称;

版本号需要自动更改填写变量;

填写连接的主机docker的套接字文件,unix://为本地的意思连接本机不需要证书,连接其他主机是需要证书的。

docker仓库正常填写,注意hosts文件要有解析,上面做过了。

认证需要添加,填写登录Huber仓库的用户密码,之后添加

 

点击高级,去掉强行拉去,本地有的就不用再强行拉取了。

 设置完了,点击保存。

 测试

点击右侧箭头

 

 拉取成功

 

查看harbor上传成功

 

镜像测试

我们将dockerfile文件push到gitlab并触发jenkins自动构建将其上传到habor仓库,接下来对镜像做一个测试,运行一下docker,看有没有问题。

 

 返回面板,手动运行一下,运行成功

测试一下端口映射成功

整体流程运行

jenkins构建修改,避免冲突

 查看index已经发生变更

 

此时会主动出发test

 查看镜像已第5次构建。

 查看harbor,也已经有了第5次构建的镜像

过程总结

user 先git push项目到gitlab,然后触发jenkins的test项目 build and push 镜像 harbor,然后触发jenkins另一个项目 docker_project_test ,来拉取镜像 并运行容器。

 分布式结构实现项目自动集成与交付

 所有的功能在一台主机不安全,因此我们采用分布式,将交付测试任务重新放到server4主机。

 新建虚拟机server4,server1为harbor仓库,server2为git客户端,server3为jenkins客户端(还要做构建用),server4为待部署(交付)的远程主机(做测试用)。

server4安装docker引擎。 进行域名解析等配置。

 安装ssh插件

 接下来 解决jenkins主机的认证问题: 

 测试一下,成功后保存。

更改docker_project_test的设置:

删除之前的镜像

测试

 刷新页面

 

 

 

设置成功

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐