Linux之持续集成与持续交付(gitlab,jenkins)

一、git工具使用

1. 版本控制系统简介

1.1 本地版本控制系统

Linux之持续集成与持续交付(gitlab,jenkins)_第1张图片

1.2 集中化的版本控制系统

Linux之持续集成与持续交付(gitlab,jenkins)_第2张图片

1.3 分布式版本控制系统

Linux之持续集成与持续交付(gitlab,jenkins)_第3张图片

2. git简介

Git特点:

  • 速度
  • 简单的设计
  • 对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
  • 完全分布式
  • 有能力高效管理类似Linux 内核一样的超大规模项目(速度和数据量)

自诞生于 2005 年以来,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的目标。 它的速度飞快,极其适合管理大项目,有着令人难以置信的非线性分支管理系统。

Git必看秘籍:https://git-scm.com/book/zh/v2

 

Git 有三种状态:已提交(committed)、已修改(modified) 和 已暂存(staged)。

  • 已修改表示修改了文件,但还没保存到数据库中。
  • 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
  • 已提交表示数据已经安全地保存在本地数据库中。

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

Linux之持续集成与持续交付(gitlab,jenkins)_第4张图片

3. git安装

安装Git:

yum install -y git

Linux之持续集成与持续交付(gitlab,jenkins)_第5张图片

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

  • 将尚未进行版本控制的本地目录转换为 Git 仓库。
  • 从其它服务器克隆 一个已存在的 Git 仓库。比如: git clone

初始化版本库:

mkdir demo 
cd demo/
git init     

ls .git/  

.git目录是git跟踪管理版本库的

 

4. git使用

用户信息

git config --global user.name "xxxx" 
git config --global user.email [email protected] 

 

检查当前文件状态

git status 
git status -s        //简化输出 

Linux之持续集成与持续交付(gitlab,jenkins)_第6张图片

这里没有文件,我们自己创建一个再查看

 

状态简览

  • 输出中有两栏,左栏指明了暂存区的状态,右栏指明了工作区的状态
  • 新添加的未跟踪文件前面有 ?? 标记
  • 新添加到暂存区中的文件前面有 A 标记
  • 修改过的文件前面有 M 标记

跟踪新文件

git add filename  ##其实就是把文件添加到暂存区

提交更新

git commit -m "add README"

Linux之持续集成与持续交付(gitlab,jenkins)_第7张图片

修改文件后再查看状态

可以看到M在偏右位置,表示工作区修改,还没有添加到暂存区

查看已暂存和未暂存的修改

git diff

Linux之持续集成与持续交付(gitlab,jenkins)_第8张图片  

跳过使用暂存区域,直接提交(仅限于已经存在的文件,即状态不是??)

git commit -a -m "change README"

忽略文件

cat .gitignore 

.*        //忽略所有隐藏文件

/test        //只忽略当前目录下的test文件

build/        //忽略任何目录下名为 build 的文件夹

移除文件
 

git rm xxx     ##删除(包括本地)
git rm --cached xxx   ##工作区文件还会存在,停止跟踪

重命名文件

git mv README README.md

Linux之持续集成与持续交付(gitlab,jenkins)_第9张图片

查看提交历史
 

git log 
git log -p -2 
git log --stat 
git log --pretty=oneline

Linux之持续集成与持续交付(gitlab,jenkins)_第10张图片

Linux之持续集成与持续交付(gitlab,jenkins)_第11张图片

 

git reset HEAD xxxx ###从暂存区回撤到工作区
git checkout -- xxxx  ##撤消对文件的修改 

版本回退

git reflog 
git reset --hard 5d1b47d

Linux之持续集成与持续交付(gitlab,jenkins)_第12张图片

 

远程仓库:

注册github帐号,并新建一个仓库

Linux之持续集成与持续交付(gitlab,jenkins)_第13张图片

Linux之持续集成与持续交付(gitlab,jenkins)_第14张图片

推送本地仓库内容到github:
 

git remote add origin https://github.com/huayu9527/git.git   ##关联远程仓库 
git push -u origin master        ##第一次推送需要加 -u参数  

Linux之持续集成与持续交付(gitlab,jenkins)_第15张图片

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

ssh-keygen ##生成本地密钥,并上传公钥到github

Linux之持续集成与持续交付(gitlab,jenkins)_第16张图片

复制上图公钥内容

Linux之持续集成与持续交付(gitlab,jenkins)_第17张图片

Linux之持续集成与持续交付(gitlab,jenkins)_第18张图片

粘贴到该位置

Linux之持续集成与持续交付(gitlab,jenkins)_第19张图片

点击添加

Linux之持续集成与持续交付(gitlab,jenkins)_第20张图片 完成后就可以通过ssh方式推送了

Linux之持续集成与持续交付(gitlab,jenkins)_第21张图片

删除http,添加ssh

git remote rm origin 
git remote add origin [email protected]:huayu9527/git.git

修改文件,提交到本地仓库,上传至远程仓库

Linux之持续集成与持续交付(gitlab,jenkins)_第22张图片

可以看到远程仓库内容变更

 

克隆远程仓库到本地

git clone [email protected]:huayu9527/git.git

Linux之持续集成与持续交付(gitlab,jenkins)_第23张图片

 

二、gitlab代码仓库

1. gitlab安装

官网:https://about.gitlab.com/install/

软件下载(官方下载慢,推荐使用国内镜像站点) https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/

软件安装: (官方推荐至少4G内存)

yum install -y gitlab-ce-12.8.5-ce.0.el7.x86_64.rpm

Linux之持续集成与持续交付(gitlab,jenkins)_第24张图片

 

vim /etc/gitlab/gitlab.rb    

Linux之持续集成与持续交付(gitlab,jenkins)_第25张图片

gitlab-ctl  reconfigure            //重载服务

Linux之持续集成与持续交付(gitlab,jenkins)_第26张图片 Linux之持续集成与持续交付(gitlab,jenkins)_第27张图片

 

登录gitlab:

http://192.168.1.11         //用户:root 第一次登录需要强制修改密码

Linux之持续集成与持续交付(gitlab,jenkins)_第28张图片

 

 

2. gitlab使用

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

Linux之持续集成与持续交付(gitlab,jenkins)_第29张图片

可以去设置改为中文

Linux之持续集成与持续交付(gitlab,jenkins)_第30张图片

Linux之持续集成与持续交付(gitlab,jenkins)_第31张图片

添加ssh key

Linux之持续集成与持续交付(gitlab,jenkins)_第32张图片

 

本地克隆私有仓库

Linux之持续集成与持续交付(gitlab,jenkins)_第33张图片

三、jenkins持续集成

1. jenkins简介

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

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

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

Linux之持续集成与持续交付(gitlab,jenkins)_第34张图片

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

Linux之持续集成与持续交付(gitlab,jenkins)_第35张图片

 

2. jenkins安装

软件下载:https://jenkins.io/zh/download/

国内镜像站:https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/

安装jenkins:

rpm -ivh jdk-8u201-linux-x64.rpm 
rpm -ivh jenkins-2.240-1.1.noarch.rpm 

Linux之持续集成与持续交付(gitlab,jenkins)_第36张图片

systemctl start jenkins

Linux之持续集成与持续交付(gitlab,jenkins)_第37张图片
访问:

192.168.1.12:8080

Linux之持续集成与持续交付(gitlab,jenkins)_第38张图片

使用初始密码登录:

cat /var/lib/jenkins/secrets/initialAdminPassword 

更新插件源:

vim  /var/lib/jenkins/hudson.model.UpdateCenter.xml 

Linux之持续集成与持续交付(gitlab,jenkins)_第39张图片

cd /var/lib/jenkins/updates   ##输入密码后会生成updates目录和文件
sed -i.bak 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json 
sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json

安装默认插件即可,使用admin用户,登录后修改密码。

Linux之持续集成与持续交付(gitlab,jenkins)_第40张图片

 Linux之持续集成与持续交付(gitlab,jenkins)_第41张图片

完成后登陆,在设置中修改密码

3. jenkins使用

创建一个任务

Linux之持续集成与持续交付(gitlab,jenkins)_第42张图片

 Linux之持续集成与持续交付(gitlab,jenkins)_第43张图片

Linux之持续集成与持续交付(gitlab,jenkins)_第44张图片

复制私钥

Linux之持续集成与持续交付(gitlab,jenkins)_第45张图片

Linux之持续集成与持续交付(gitlab,jenkins)_第46张图片

Linux之持续集成与持续交付(gitlab,jenkins)_第47张图片

上面无法连接git仓库,这是因为我们没有在jenkins主机安装git工具

Linux之持续集成与持续交付(gitlab,jenkins)_第48张图片

 安装后,没有报错

Linux之持续集成与持续交付(gitlab,jenkins)_第49张图片

 定义轮询间隔,有更新时触发jinkens构建

Linux之持续集成与持续交付(gitlab,jenkins)_第50张图片

这里的日程表规则和定时任务是一样的,定义了什么时候轮询一次,我们是测试环节,所以定义每分钟一次,下面黄字提示是系统认为频率太高,可能是设置错误,所以进行提醒。

构建选择执行shell命令

Linux之持续集成与持续交付(gitlab,jenkins)_第51张图片

 Git提交代码到gitlab,jinkens轮询检测到代码仓库的变更,触发构建。

保存后手动触发一次

Linux之持续集成与持续交付(gitlab,jenkins)_第52张图片

更改git仓库内容,同步到远程主机

Linux之持续集成与持续交付(gitlab,jenkins)_第53张图片

查看jenkins

Linux之持续集成与持续交付(gitlab,jenkins)_第54张图片 

gitlab自动触发jenkins(添加gitlab插件)

Linux之持续集成与持续交付(gitlab,jenkins)_第55张图片

配置刚才的任务,重新构造触发器

Linux之持续集成与持续交付(gitlab,jenkins)_第56张图片

点击高级

Linux之持续集成与持续交付(gitlab,jenkins)_第57张图片

点击生成token

修改gitlab配置

Linux之持续集成与持续交付(gitlab,jenkins)_第58张图片 

Linux之持续集成与持续交付(gitlab,jenkins)_第59张图片 

Linux之持续集成与持续交付(gitlab,jenkins)_第60张图片

这里填写的url和token是jenkins构建触发器时生成的

测试下

Linux之持续集成与持续交付(gitlab,jenkins)_第61张图片

查看结果

Linux之持续集成与持续交付(gitlab,jenkins)_第62张图片

我们再进一步结合docker,使jenkins触发后,构建docker镜像,并推送到harbor仓库

安装插件

Linux之持续集成与持续交付(gitlab,jenkins)_第63张图片

在jenkins主机安装docker-ce

Linux之持续集成与持续交付(gitlab,jenkins)_第64张图片

Linux之持续集成与持续交付(gitlab,jenkins)_第65张图片

systemctl enable --now docker.service 

 

重新打开一台虚拟机,作为harbor仓库

安装docker-ce

yum install -y yum-utils
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

 在阿里云或者其他镜像站下载container-selinux安装包安装Linux之持续集成与持续交付(gitlab,jenkins)_第66张图片

yum install -y docker-ce

Linux之持续集成与持续交付(gitlab,jenkins)_第67张图片

systemctl enable --now docker.service 

 

下载解压harbor,并下载docker-compose

mv docker-compose-Linux-x86_64 /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose

vim harbor.yml 

Linux之持续集成与持续交付(gitlab,jenkins)_第68张图片

创建证书

cd /data/
mkdir -p certs
openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/harbor.key -x509 -days 365 -out certs/harbor.crt

Linux之持续集成与持续交付(gitlab,jenkins)_第69张图片

复制证书给jenkins主机 

Linux之持续集成与持续交付(gitlab,jenkins)_第70张图片

./install.sh 

Linux之持续集成与持续交付(gitlab,jenkins)_第71张图片

Linux之持续集成与持续交付(gitlab,jenkins)_第72张图片

Linux之持续集成与持续交付(gitlab,jenkins)_第73张图片

Linux之持续集成与持续交付(gitlab,jenkins)_第74张图片

jenkins和harbor主机配置本地解析

vim /etc/hosts

 

配置jenkins

Linux之持续集成与持续交付(gitlab,jenkins)_第75张图片

Linux之持续集成与持续交付(gitlab,jenkins)_第76张图片

chmod 777 /run/docker.sock

 

测试

Linux之持续集成与持续交付(gitlab,jenkins)_第77张图片

 

测试

Linux之持续集成与持续交付(gitlab,jenkins)_第78张图片

查看jenkins

Linux之持续集成与持续交付(gitlab,jenkins)_第79张图片

查看harbor仓库

Linux之持续集成与持续交付(gitlab,jenkins)_第80张图片

 

 

 

 

你可能感兴趣的:(Linux之持续集成与持续交付(gitlab,jenkins))