持续集成Jenkins+Gitlab实现持续集成

用户说明
  • 假设node3是程序员的个人电脑,在这台机器上编写代码 ip地址192.168.10.10

Git的安装部署及使用

  • git config --global user.name ‘zzg’ #定义用户
  • git config --global user.email ‘zzg@qq.cn’ #定义邮箱
  • git config --global core.editor vim #定义注释时的解释器
  • git config --list #查看git文件内容
  • cat ~/.gitconfig #查看git信息

git重要的概念

  • 工作区:编写程序时,创建一个目录,把程序文件全都放在该目录下,这个目录就是工作区
  • 暂存区:工作区和版本库之间的缓冲地带
  • 版本库:git在工作区中创建一个隐藏目录.git,这个目录是版本库,它在工作区下,但是不是工作区的一部分。
提交
确认
工作区
暂存区
版本库

创建本地仓库

  • 新建项目时已经计划使用git
[root@node3 ~]# git init myproject
初始化空的 Git 版本库于 /root/myproject/.git/
[root@node3 ~]# ls -A myproject/
.git
  • 在已经存在的项目中使用git
[root@node3 ~]# mkdir devops
[root@node3 ~]# cd devops/
[root@node3 devops]# echo '<h1>Hello World!</h1>' > index.html
[root@node3 devops]# git init .
初始化空的 Git 版本库于 /root/devops/.git/
[root@node3 devops]# ls -A
.git  index.html

git应用

[root@node3 devops]# git status  # 状态
[root@node3 devops]# git status -s  # 简要信息
?? index.html
[root@node3 devops]# git add .   # 将目录下所有内容加入暂存区,开始跟踪
[root@node3 devops]# git status -s
A  index.html
[root@node3 devops]# git commit -m "modify index.html, add hosts"  # 确认至版本库,需要写日志
[root@node3 devops]# git log  # 查看所有的提交
commit 0fff998482d7630caa531f28d51587884745b423
Author: zzg <zzg@qq.cn>
Date:   Tue May 21 14:16:04 2019 +0800

 modify index.html, add hosts
 
 恢复误删除的文件
 
[root@node3 devops]# rm -rf *
[root@node3 devops]# ls
[root@node3 devops]# git status
# 位于分支 master
# 尚未暂存以备提交的变更:
#   (使用 "git add/rm <file>..." 更新要提交的内容)
#   (使用 "git checkout -- <file>..." 丢弃工作区的改动)
#
#	删除:      hosts
#	删除:      index.html
#
修改尚未加入提交(使用 "git add" 和/或 "git commit -a"[root@node3 devops]# git checkout -- *
[root@node3 devops]# ls
hosts  index.html
[root@git devops]# git checkout \ 0fff998482d7630caa531f28d51587884745b423 #切换到目的版本
现在目录下出现了index.html和hosts两个文件
[root@node3 devops]# ls
index.html  hosts
# 返回到最新的提交
[root@node3 devops]# git checkout master

分支管理

# 查看分支
[root@node3 devops]# git branch
* master
[root@node3 devops]# ls
index.html  mima
# 新建分支
[root@node3 devops]# git branch fn1
[root@node3 devops]# git branch
  fn1
* master
# 切换分支
[root@node3 devops]# git checkout fn1
切换到分支 'fn1'
[root@node3 devops]# git branch
* fn1
  master
# 在fn1分支中编写程序
[root@node3 devops]# cp ~/anaconda-ks.cfg .
[root@node3 devops]# git add .
[root@node3 devops]# git commit -m "fn1 add anaconda"
[fn1 619f6fb] fn1 add anaconda
 1 file changed, 65 insertions(+)
 create mode 100644 anaconda-ks.cfg
[root@node3 devops]# ls
anaconda-ks.cfg  index.html  mima
# 切换回master分支
[root@node3 devops]# git checkout master
切换到分支 'master'
[root@node3 devops]# ls
index.html  mima
# 合并fn1分支到主干
[root@node3 devops]# git merge fn1
更新 8e1c9eb..619f6fb
Fast-forward
 anaconda-ks.cfg | 65 ++++++++++++++++++++++++++++++++++++
 1 file changed, 65 insertions(+)
 create mode 100644 anaconda-ks.cfg
[root@node3 devops]# ls
anaconda-ks.cfg  index.html  mima
# fn1分支使命已经达成,可以删除
[root@node3 devops]# git branch -d fn1
已删除分支 fn1(曾为 619f6fb)。
[root@node3 devops]# git branch 
* master

Gitlab服务器

在这里插入图片描述

  • 登陆时的用户名是root
  • 访问http://192.168.10.11 初始化密码必须是8位以上,复杂。
添加新群组

在这里插入图片描述
选择公开

为devops组中的成员创建用户zzg。新建用户的时候,不能创建密码。用户建立好之后,修改用户,可以为其加密码。

在这里插入图片描述
点击上面小扳手位置。可以新增用户和新建项目

在这里插入图片描述

  • 新建项目,并选择公开
    在这里插入图片描述
  • 选择左下角设置,为项目添加用户
    在这里插入图片描述
  • gitlab项目中默认只支持主程序员和管理员上传文件。如果需要更改在设置==>版本库==> 保护分支中开启

gitlab中重要的概念

  • 群组group:对应成一个部门、开发团队
  • 成员:对应用户
  • 项目:对应软件项目

新建组,名为devops。群组等级为公开。
为devops组中的成员创建用户zzg。新建用户的时候,不能创建密码。用户建立好之后,修改用户,可以为其加密码。
新建项目devops。新建的用户zzg是新项目的主程序员。可见等级为公开。项目创建完成后,点击左下角的“折叠边栏”=>“设置”=>“成员”=>邀请上一步创建的用户,角色是“主程序员”。

新建的用户上传代码

上传代码有两种方式,一种是http的方式,这种方式,每次上传代码都需要填写用户名和密码。另一种是通过ssh实现免密登陆。

[root@node3 devops]# ssh-keygen -t rsa -C "zzg@tedu.cn" -b 4096
[root@node3 devops]# cat ~/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC4l7/lm33v5VV1Pspkea0ldWlwgZgAJ+Z64HoVkLX+0oudHuuPhKGf9pnzRpGklWVPaoA9M3pMAjuNaiWc5OIeOwYKHP3XPV3fTR5M1iWr034/zcWrSm0MJ5BXtqnpamWH8Fy1i9WhyPR98/Sn8k0EaHt7c5PyQLqM2li2YG7HtWf2Z6CuxI83rUBVlN2TwnIhWzLKheUzMb1zCYi83I6WDX5FNvGYG+3kw7SisKmCl54ex1uQMoDLRjCjnEsLoCg4fZRGBXWH3/4K1Fn+mPxxDsKyHlusU5lgtTNu3XHdfuxJRlL8luUKHGrBKd73fo7Vo5lxpy+/75OlXd/9ybXaRVvXsJ2t8xitLgyT2ov4mL5sR996EkTsy7ZWQiJY3mDCDBlNnpwkK02IlXOlWQ8xnVAT/XW3druFASCDUdUFh92+zEG1LP1NwMX1msuflRy/1p+GqphCCQXO1VIefWtZ3I5Q+UaWgE8cGq9ol3G/WUKnCJ8XCLM45EMSBPZiPtwn2xd417C8COGe+J7XRO0Vy3wf5w0ODKDonEzFmob2FhGYqyax4SJk/RniOgMFORPBO0DMzEU5YkHKuthNU7EUhiDfeHWROtr4ja8bqDEPpbSf56e9hqfnoOCp6USbjMbQCPp/ZrC1KNV3JDH2N1FqS3pKJBaH9y40Ted/ZbNeRw== zzg1@qq.com
  • 点击右上角设置,在左边点击ssh密钥
    在这里插入图片描述在这里插入图片描述
  • 添加密钥成功后就可以使用免密钥下载和发送脚本到Gitlab服务器
 [root@node3 devops]# mkdir myweb  														#创建版本仓库目录		
[root@node3 devops]# cd myweb
echo '<h1>Hello World!</h1>' > index.html												#创建测试页面
[root@node3 devops]# git init . 														#创建Git仓库
echo '<h2>text web 2.0</h2>' >> index.html												#更新为web页面内容
[root@node3 devops]# git add .											                #添加到缓冲区
[root@node3 devops]# git commit -m "web test 2.0"								        #添加到工作区
[root@node3 devops]# git tag															#打上标记
[root@node3 devops]# git remote rename origin old-origin                                #在Gitlab定义
 如果出现以下报错,忽略
 error: 不能重命名配置小节 'remote.origin' 到 'remote.old-origin'
 [root@node3 devops]# git remote add origin \ git@192.168.10.83:devops/myweb.git 		#Gitlab服务器地址
 [root@node3 devops]# git remote rm origin   						#如不小心将git远程地址配错了需要删除后在重新添加
 [root@node3 devops]# git push -u origin --all											#将本地文件上传到Gitlab服务器
 [root@node3 devops]# git push -u origin --tags											#将版本标记上传到Gitlab服务器

Jenkins部署即持续化集成

安装jenkins

[root@node4 ~]# yum -y install java-1.8.0-openjdk
[root@node4 ~]# yum install -y jenkins-2.138.2-1.1.noarch.rpm
[root@node4 ~]# systemctl start jenkins
[root@node4 ~]# systemctl enable jenkins

打开http://192.168.10.12:8080。安装插件选择自定义=>无。不用创建管理员帐号,使用admin登陆即可。登陆后,将管理员的密码改掉。

在这里插入图片描述
在这里插入图片描述

点击主页设置 ==>点击Manage Jenkins ==>插件管理 ==> 可选插件 ==> Localization: Chinese (Simplified) 中文插件补丁,git parameter(gitlab支持包)

在这里插入图片描述

  • 在jenkins上创建工程,自动下载代码
  • 点击新建任务
  • 创建一个自由风格的软件项目

在这里插入图片描述

  • 选择参数化构建过程
  • 选择下载的插件Git Parameter==>Name:自定义==>Default Value:origin/master
    在这里插入图片描述
  • 源码管理
  • 选择Git == > Repositories ==> Repository URL ==> 选择Gitlab上项目的http链接
  • 如输入链接后提示 该错误,可能是Jenkins服务器没有安装Git软件包导致
  • 另需要定义从Gitlab下载代码后保存在子文件夹下,并改名为myweb-$webver,其中$webver为之前上面所定义的版本号变量在这里插入图片描述
  • 点击Additional Behaviours ==> Checkout to a sub-directory:myweb-$webver
    在这里插入图片描述
  • 正常添加后,选择构建 ==> 构建步骤选择shell, 此处为Jenkins构建后执行的命令
    在这里插入图片描述
  • Jenkins将Gitlab仓库下载的代码默认放在/var/lib/jenkins/workspace/下
完善Jenkins
  • jenkins下载web项目后,将其打包
  • 为了应用服务器可以下载项目软件包,在jenkins上安装httpd服务,以便应用服务器下载
[root@jenkins ~]# yum install -y httpd
[root@jenkins ~]# systemctl start httpd
[root@jenkins ~]# systemctl enable httpd
[root@jenkins ~]# mkdir -p /var/www/html/deploy/pkgs
# /var/www/html/deploy/: 保存livever、lastver,即当前版本和前一个版本的版本号
# /var/www/html/deploy/pkgs/: 保存软件压缩包和它的md5值
[root@jenkins ~]# chown -R jenkins.jenkins /var/www/html/deploy/
# 因下载后默认为用户jenkins写入数据,将deploy文件夹改成jenkins所有确保能正常使用
在Jenkins添加shell脚本
deploy_dir=/var/www/html/deploy
pkgs_dir=/var/www/html/deploy/pkgs
cp -r myweb-$webver $pkgs_dir
# 将下载的软件目录拷贝到web服务器目录
cd $pkgs_dir
rm -rf myweb-$webver/.git
# 删除版本库文件
tar czf myweb-$webver.tar.gz myweb-$webver
# 打包压缩
md5sum myweb-$webver.tar.gz | awk '{print $1}' > myweb-$webver.tar.gz.md5 # 计算并保存md5值
rm -rf myweb-$webver
# 删除程序目录
cd $deploy_dir
[ -f livever ] && cat livever > lastver
echo $webver > livever
# 将当前版本内容写到前一版本文件
# 更新当前版本
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值