CI/CD 持续集成和持续交付 (贰)

案例1:安装Jenkins

案例2:设置本地仓库

案例3:创建远程仓库

案例4:构建工程

案例5:修改工程

案例6:创建版本文件

案例7:发布应用

1 案例1:安装Jenkins

1.1 问题
运行虚拟机,将第一块网络的连接方式改为NAT
安装Jenkins
初始化Jenkins
1.2 步骤
实现此案例需要按照如下步骤进行。

步骤一:运行虚拟机,将第一块网络的连接方式改为NAT,连接互联网

配置虚拟机可以连接互联网

1)打开虚拟机node3的设置,将第一块网卡eth0连接方式改为NAT,如图-1所示:

在这里插入图片描述

图-1

改为NAT后,物理机使用virbr0和虚拟机的eth0通信

2)进入虚拟机node3,将虚拟机的virbr0关闭

[root@node3 ~]# ifconfig virbr0 down

3)把虚拟机的IP地址设置为自动获得,如图-2所示:

[root@node3 ~]# nmtui

在这里插入图片描述

图-2

4)禁用再激活eth0

[root@node3 ~]# ifdown eth0; ifup eth0

5)如果虚拟机经过设置还不能上网,把它关机再开机

步骤二:安装Jenkins

1)安装Jenkins

[root@localhost 下载]#    rpm –ivh jenkins-2.121-1.1.noarch.rpm        
警告:jenkins-2.121-1.1.noarch.rpm:    头V4    DSA/SHA1    Signature,    密钥 ID    
d50582e6:    NOKEY    
准备中...        #################################    [100%]    
正在升级/安装...    
            1:jenkins-2.121-1.1                                                                #################################    [100%]    

2)启动服务

[root@localhost 下载]#    systemctl start jenkins
[root@localhost 下载]#    systemctl enable Jenkins

步骤二:初始化Jenkins

  1. 访问http://192.168.122.73,Jenkins默认运行在8080端口,如图-3所示:
    在这里插入图片描述

图-3

2)查询管理员密码

[root@node3 ~]# cat /var/lib/Jenkins/secrets/initialAdminPassword
2bf1c975890f43f98dcf169c2f17c44d

输入管理员密码,继续下一步

3)安装插件,插件选自定义,只有git是必须要选的,其他都可以不安装,如图-4所示:

在这里插入图片描述

图-4

4)管理员用户无需创建,直接使用admin登录,如图-5所示:
在这里插入图片描述

图-5

5)完成安装如图-6所示:

在这里插入图片描述

图-6

6)修改管理员密码,admin-设置,如图-7所示:
在这里插入图片描述

图-7

2 案例2:设置本地仓库

2.1 问题
解压wordpress4.8
将解压目录配置为git仓库
为当前代码标记为v1.0
更新wordpress到4.9
将代码标记为v2.0
2.2 步骤
实现此案例需要按照如下步骤进行。

步骤一:解压wordpress4.8

[root@localhost ~]# unzip wordpress-4.8-zh_CN.zip

步骤二:将解压目录配置为git仓库

[root@localhost    ~]# cd wordpress/    
[root@localhost wordpress]# git init
[root@localhost wordpress]# git add .    
[root@localhost wordpress]# git commit -m "wordpress init"    
[root@localhost wordpress]# git status    
#位于分支 master    
无文件要提交,干净的工作区

步骤三:为当前代码标记为v1.0

[root@localhost wordpress]# git tag v1.0

步骤四:更新wordpress到4.9

  1. 将wordpress新版本解压到项目中
[root@localhost wordpress]# cd    ..    
[root@localhost    ~]# unzip wordpress-4.9-zh_CN.zip    
Archive: wordpress-4.9-zh_CN.zip    
replace wordpress/wp-mail.php?    [y]es, [n]o,    [A]ll, [N]one, [r]ename: A

2)检查git状态

[root@localhost ~]# cd wordpress/    
[root@localhost wordpress]# git status

3)将更新/增加的文件确认至仓库

[root@localhost wordpress]# git add .    
[root@localhost wordpress]# git commit    -m "upgrade to new version"

4)确认所有项目已提交

[root@localhost wordpress]# git status  
# 位于分支 master
无文件要提交,干净的工作区  

步骤五:将代码标记为v2.0


[root@localhost wordpress]# git tag v2.0

3 案例3:创建远程仓库

3.1 问题
在gitlab的devops群组下创建wordpress项目
通过devops的主程序员用户将代码上传至wordpress项目
通过web查看项目
3.2 步骤
实现此案例需要按照如下步骤进行。

步骤一:在gitlab的devops群组下创建wordpress项目

1)创建名为devops的群组,如图-8所示:
在这里插入图片描述

图-8

2)创建名为devops的群组,如图-9所示:

在这里插入图片描述

图-9

3)创建名为wordpress的项目,如图-10、图-11所示:

在这里插入图片描述

图-10

在这里插入图片描述

图-11

4)为wrodpress项目创建主程序员用户,如图-12、图-13、图-14、图-15所示:

在这里插入图片描述

图-12

在这里插入图片描述

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

图-14

在这里插入图片描述

图-15

5)用户生成ssh密钥

[root@localhost    ~]# ssh-keygen –t rsa    -C "zhangzg@tedu.cn" –b 4096    
[root@localhost    ~]# cat ~/.ssh/id_rsa.pub        
ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAACAQC4iidWsIzdFWQM3mvbFCC5SL
RSqXnoT2wFodo0FkdbbcSOeJ1RX6CgZjW+PTDjsu7OfiCw
+ZOSlaeY0xQWcl1ExVn2aDMNKr7Lr2VyHEpo7cJZoGlOc6vQBN83VZKcY
dJzEbaxsHbRg2MKHN85cdxVWAQOqaHs105thHBCI3Um6+sAvhAt9Use
QQOQYBIIHO02QJ ……

6)新用户登陆重置密码,然后设置ssh密钥,如图-16所示:
在这里插入图片描述

图-16

步骤二:通过devops的主程序员用户将代码上传至wordpress项目

因为本地wordpress已经是git版本库了,所以采用以 下方式进行上传:

[root@localhost    ~]# cd wordpress/    
[root@localhost wordpress]# git remote    rename origin old-origin    
error: 不能重命名配置小节 'remote.origin' 到 'remote.old-origin    
上述错误可忽略
[root@localhost wordpress]# git remote add origin    
git@192.168.113.139:devops/wordpress.git
[root@localhost wordpress]# git push –u origin --all    
[root@localhost wordpress]# git push –u origin --tags

步骤三:通过web查看项目

所有的tag可以通过http://192.168.113.139/devops/wordpress/tags访问,如图-17所示:
在这里插入图片描述

图-17

4 案例4:构建工程

4.1 问题
创建一个自由风格的项目
源码管理采用git
构建时可以指定tag
构建tag为v1.0的源码
4.2 步骤
实现此案例需要按照如下步骤进行。

步骤一:创建一个自由风格的项目

1)下载GIT插件,为了使得Jenkins可以使用git的tag,需要下载git

parameter插件,如图-18所示:
在这里插入图片描述

图-18

2)新建任务,如图-19所示:
在这里插入图片描述

图-19

3)选择自由风格,如图-20所示:
在这里插入图片描述

图-20

4)添加Git Parameter参数,如图-21、图-22所示:
在这里插入图片描述

图-21

在这里插入图片描述

图-22

步骤二:源码管理采用git

1)源码采用git,如图-23所示:
在这里插入图片描述

图-23

2)将源码checkout到子目录,如图-24、图-25所示:

在这里插入图片描述

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

图-25

步骤三:构建工程,构建tag为v1.0的源码

1)构建工程,如图-26所示:

在这里插入图片描述

图-26

2)选择指定的标签,如图-27所示:
在这里插入图片描述

图-27

步骤四:检验结果

1)选择指定标签,如图-28所示:

在这里插入图片描述

图-28

2)查看日志输出,如图-29、图-30所示:

在这里插入图片描述

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

图-30

3)查看本地结果,构建好的项目出现在/var/lib/jinkens目录下:

[root@localhost    ~]# cd /var/lib/jenkins/workspace/    
[root@localhost workspace]# ls
wpbuild
[root@localhost workspace]# ls wpbuild/    
wpress_v1.0

5 案例5:修改工程
5.1 问题
修改构建工程,要求如下:

将下载的应用程序打包放在/var/www/html/deploy/packages目录下
为打包应用程序计算md5值
5.2 步骤
实现此案例需要按照如下步骤进行。

步骤一:配置分发服务器

通过web服务为应用服务器提供应用程序,下载目录为/var/www/deploy/packages作:

[root@localhost    ~]#    yum install -y hspd
[root@localhost    ~]#    mkdir –pv /var/www/html/deploy/packages
[root@localhost    ~]#    chown -R    jenkins.jenkins /var/www/html/deploy/    
[root@localhost    ~]#    systemctl start hspd
[root@localhost    ~]#    systemctl enable hspd

步骤二:修改工程

  1. 为下载的应用打包,生成md5在工程中增加构建步骤,如图-31、图-32所示:

在这里插入图片描述

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

图-32

2)构建,如图-33所示:

将从gitlab上下载的内容,拷贝到/var/www/html/deploy/packages目录下,将拷贝到的文件打包,删除原始目录,将压缩包生成md5值,存入md5文件中

在这里插入图片描述

图-33

步骤三:构建测试

1)执行构建工程,如图-34所示:

在这里插入图片描述

图-34

2)检查分发服务器的相关目录:

[root@localhost    ~]# ls /var/www/html/deploy/packages/
wpress_v1.0.tar.gz wpress_v1.0.tar.gz.md5
[root@localhost    ~]# cat /var/www/html/deploy/packages/
wpress_v1.0.tar.gz.md5
e4taef54a5f580b4e08d5245cc95268

6 案例6:创建版本文件

6.1 问题
为了记录应用的当前版本和前一个版本,创建两个工程:

创建live_version,记录应用程序当前版本
创建last_version,记录应用程序前一个版本
6.2 步骤
实现此案例需要按照如下步骤进行。

步骤一:创建live_version文件

1)新建任务,如图-35、图-36所示:

在这里插入图片描述

图-35

在这里插入图片描述

图-36

  1. 参数构建,图-37、图-38、图-39、图-40所示:

在这里插入图片描述

图-37

在这里插入图片描述

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

图-39

在这里插入图片描述

图-40

3)执行构建工程,如图-41所示:
在这里插入图片描述

图-41

步骤二:创建last_version文件

1)修改live_verion文件shell命令,命令如下:

[-f /var/www/deploy/live_verion] && cat /var/www/deploy/live_verion > /var/www/deploy/last_verion,#如果找到/var/www/deploy/live_verion文件,就将/var/www/deploy/live_verion文件内容写入/var/www/deploy/last_verion文件,如图-42所示:

在这里插入图片描述

图-42

2)开始构建,构建版本为v1.0,如图-43、图-44所示:

在这里插入图片描述

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

图-44

3)查看构建结果

[root@localhost ~]# ls /var/www/deploy/
live_version last_verion packages 
[root@localhost ~]# cat /var/www/deploy/live_version
v1.0
[root@localhost ~]# cat /var/www/deploy/last_verion    #此时last_verion为空

4)重新构建,构建版本为v2.0,如图-43、图-45所示:

在这里插入图片描述

图-45

5)查看构建结果

[root@localhost ~]# ls /var/www/deploy/
live_version last_verion packages
[root@localhost ~]# cat /var/www/deploy/live_version
v1.0
[root@localhost ~]# cat /var/www/deploy/last_verion
v2.0

7 案例7:发布应用

7.1 问题
编写deploy_web.py应用发布程序:

根据分发服务器的版本,下载对应的应用
校验应用程序
发布指定程序
7.2 步骤
实现此案例需要按照如下步骤进行。

步骤一:编写脚本

[root@localhost ~]# vim deploy_web.py
import requests
import os
import hashlib
import tarfile
from urllib import request
#使用url进行get请求,获取网站文本信息,获取当前版本
def get_webdata(url):
    r = requests.get(url)
    return r.text
#将网址内容下载到fname文件中
def download(url, fname):
    html = request.urlopen(url)
    with open(fname, 'wb') as fobj:
        while True:
            data = html.read(1024)
            if not data:
                break
            fobj.write(data)
#检查文件MD5值
def check_md5(fname):
    m = hashlib.md5()
    with open(fname, 'rb') as fobj:
        while True:
            data = fobj.read(4096)
            if not data:
                break
            m.update(data)
    return m.hexdigest()
#部署版本,应用发布代码
def deploy(app):  # /var/www/packages/myproject_2.0.tar.gz
#切换路径到/var/www/packages路径下
    os.chdir('/var/www/packages')
#解压缩myproject_2.0.tar.gz文件
    tar = tarfile.open(app, 'r:gz')
    tar.extractall()
    tar.close()
#将.tar.gz替换成空字符串
    src = app.replace('.tar.gz', '')
#创建/var/www/html/mysite软链接
    dst = '/var/www/html/mysite'
    if os.path.exists(dst):    #如果文件存在
        os.unlink(dst)            #删除
    os.symlink(src, dst)        #否则创建软链接
if __name__ == '__main__':
#调用get_webdata()函数,目的是以发布服务器'http://192.168.122.73/live_version'网址为参数获取当前版本,ver结果为2.0
    ver = get_webdata('http://192.168.122.73/live_version').strip()
    app_name = 'myproject_%s.tar.gz' % ver
#app_url为下载myproject_2.0.tar.gz文件网址
    app_url = 'http://192.168.122.73/packages/' + app_name
#目标文件
    app_path = os.path.join('/var/www/packages', app_name)
#调用download()函数,目的是从app_url网址读取数据存入目标文件
    download(app_url, app_path)
#调用check_md5()函数,目的是计算目标文件MD5值
    local_md5 = check_md5(app_path)
#调用get_webdata()函数,目的从发布服务器网址获取md5值
    remote_md5 = get_webdata(app_url + '.md5').strip()
#如果目标文件md5值和发布服务器提供的md5值相等,确认下载的文件无误,调用deploy()函数,以目标文件作为参数进行部署
    if local_md5 == remote_md5:
        deploy(app_path)

步骤二:测试脚本

[root@localhost ~]# python3 deploy_web.py
#增加了mysite文件
[root@localhost ~]# ls /var/www/html
aaa index.html mypost.html mysite
[root@localhost ~]# ls /var/www/html/mysite
index.html

部署结果如图-46所示:

在这里插入图片描述

图-46

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值