(CICD架构文档)测试环境说明步骤

21 篇文章 1 订阅

因图片不能上传,见资源文档里面有相应的下载。资源文档只是可以显示图片,其他信息一样。

(CICD架构文档)测试环境说明步骤

一、总体说明

总架构图

架构图说明

项目开发语言是php,使用了比较流行的laravel框架,项目中用到的laravel插件使用composer安装,npm安装全局模块,编译生成js样式文件

 开发人员提交代码到svn,运维人员更改nginx配置、项目env配置并提交到gitlab

svngitlab钩子会触发jenkins执行下载对应项目的envnginx配置文件、Dockerfile和最新版本的代码

jenkins执行shell脚本:composer安装laravel插件和npm安装模块,编译生成js文件。完好的代码通过docker build Dockerfile 指令打包成镜像

④上传构建好的镜像pushharbor镜像仓库

jenkins借助Rancher的插件通过APIrancher交互更新service达到更升级容器的目的(也就是更新代码版本),其中pull镜像的这一步会通过saltstack并行从harbor上下拉之前构建好的镜像到多个主机上

以上流程完整的实现了CI\CD,这里主要是jenkins部分是关键位置之一。

下面通过关键配置的截图来展示一个清晰的思路

如图:

uploading.4e448015.gif转存失败重新上传取消

二、软件的安装与配置

第一步rancher 2.0的安装与配置

一.docker 安装

1.使用 root 权限登录 Centos。确保 yum 包更新到最新。

$ sudo yum update

2.卸载旧版本(如果安装过旧版本的话)

$ sudo yum remove docker  docker-common docker-selinux docker-engine

3.安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

4.设置yum源

$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

5.可以查看所有仓库中所有docker版本,并选择特定版本安装

6.安装docker

$ yum list docker-ce --showduplicates | sort -r

sudo yum install docker-ce  #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版18.09.5

7.启动并加入开机启动

$ sudo systemctl start docker

$ sudo systemctl enable docker

8.验证安装是否成功(有Client和Server两部分表示docker安装启动都成功了)

$ docker version

9.安装 docker-compose

[root@harbor ~]#

没有python-pip包就执行命令 yum -y install epel-release  再执行下面

 yum install python-pip -y

[root@harbor ~]# pip install --upgrade pip

[root@harbor ~]# pip install docker-compose

[root@harbor ~]# pip install --upgrade backports.ssl_match_hostname

第二步rancher的安装

参考官方例子与配置  https://www.cnrancher.com/docs/rancher/v2.x/cn/overview/quick-start-guide/  官网地址

在要安装的主机上执行 sudo docker run -d --restart=unless-stopped -v <主机路径>:/var/lib/rancher/ -p 80:80 -p 443:443 rancher/rancher:stable

 

 

第三步Jenkins的安装

1、安装JDK

yum install -y java

2、安装jenkins

添加Jenkins库到yum库,Jenkins将从这里下载安装。

1 wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo

2 rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key

3 yum install -y jenkins

如果不能安装就到官网下载jenkis的rmp包,官网地址(http://pkg.jenkins-ci.org/redhat-stable/)

1 wget http://pkg.jenkins-ci.org/redhat-stable/jenkins-2.7.3-1.1.noarch.rpm

2 rpm -ivh jenkins-2.7.3-1.1.noarch.rpm

配置jenkis的端口

 vi /etc/sysconfig/jenkins

找到修改端口号:

JENKINS_PORT="8080"  此端口不冲突可以不修改

3、启动jenkins

service jenkins start/stop/restart

安装成功后Jenkins将作为一个守护进程随系统启动

系统会创建一个“jenkins”用户来允许这个服务,如果改变服务所有者,同时需要修改/var/log/jenkins, /var/lib/jenkins, 和/var/cache/jenkins的所有者

启动的时候将从/etc/sysconfig/jenkins获取配置参数

默认情况下,Jenkins运行在8080端口,在浏览器中直接访问该端进行服务配置

Jenkins的RPM仓库配置被加到/etc/yum.repos.d/jenkins.repo

4、打开jenkins

在浏览器中访问

首次进入会要求输入初始密码如下图,

初始密码在:/var/lib/jenkins/secrets/initialAdminPassword

选择“Install suggested plugins”安装默认的插件,下面Jenkins就会自己去下载相关的插件进行安装。

创建超级管理员账号

注:1.如果要使webhook钩子之类的在里面加插件

  1. 执行权限问题

将jenkins账号分别加入到root组中

gpasswd -a root jenkins

修改/etc/sysconfig/jenkins文件中                                                                   

JENKINS_USER=root

JENKINS_GROUP=root

可以修改为root权限运行

第四步docker Harbor registry 私有仓库的搭建

说明:docker中要使用镜像,一般会从本地、docker Hup公共仓库和其它第三方公共仓库中下载镜像,一般出于安全和外网(墙)资源下载速率的原因考虑企业级上不会轻易使用。那么有没有 一种办法可以存储自己的镜像又有安全认证的仓库呢? ----> 企业级环境中基于Harbor搭建自己的私有仓库。

         Harbor是VMware公司最近开源的企业级Docker Registry项目, 其目标是帮助用户迅速搭建一个企业级的Docker registry服务。

1.下载 harbor 离线包 [ https://github.com/vmware/harbor ]

[root@harbor ~]# wget https://github.com/vmware/harbor/releases/download/v1.1.2/harbor-offline-installer-v1.1.2.tgz

2.解压下载的harbor包 [ harbor-offline-installer-v1.1.2.tgz ]

[root@harbor ~]# tar zxf harbor-offline-installer-v1.1.2.tgz

3.切换进harbor包目录

[root@harbor ~]# cd harbor

4.修改habor配置文件 [ harbor.cfg ]

hostname = 192.168.60.150       # 指定私有仓库的主机名,可以是IP地址,也可以是域名   

ui_url_protocol = http          # 用户访问私仓时使用的协议,默认时http,也可配置成https

db_password = root123           # 指定mysql数据库管理员密码

harbor_admin_password:Harbor12345  # harbor的管理员账户密码

5.通过自带脚本一键安装

[root@harbor harbor]# ./install.sh

    6.通过浏览器访问管理

http://192.168.60.150  

用户默认为admin

密码默认为Harbor12345  [可通过安装前 harbor.cfg 配置文件修改 harbor_admin_password 指定 ]

7.修改docker配置  

vi /etc/docker/daemon.json

{

"registry-mirrors": [

"https://d8b3zdiw.mirror.aliyuncs.com"

],

 

"insecure-registries": [

"192.168.0.249",

"192.168.0.249:5000",

"192.168.0.249:443"

]

}

systemctl daemon-reload

systemctl restart docker

8.重启或启动 docker 服务 

[root@harbor client]# systemctl restart docker

9.docker 登陆 harbor

[root@harbor client]# docker login -u test -p Asd123456  192.168.60.150

10.编辑dockerfile文件

# Url https://lisea.cn

# Base imgae

FROM centos

 

# Maintainer

MAINTAINER lisea lisea@126.com

 

# Commands

RUN rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm

RUN yum install nginx -y

RUN echo "daemon off;" >> /etc/nginx/nginx.conf

RUN echo "this is test nginx p_w_picpath" > /usr/share/nginx/html/index.html

EXPOSE 80

CMD ["nginx"]

 

 

11.通过Dockerfile构建一个新镜像, 直接指明registry和标签

[root@harbor client]# docker build -t 192.168.60.150/test/nginx:v1.0.1 .

 

12.上传镜像至 harbor registry

[root@harbor client]# docker push 192.168.60.150/test/nginx:v1.0.1

13.删除本地镜像

[root@harbor client]# docker rmi 192.168.60.150/test/nginx:v1.0.1

14.从harbor中下载镜像

[root@harbor client]# docker pull 192.168.60.150/test/nginx:v1.0.1

 

配置修改例:https://blog.csdn.net/why_still_confused/article/details/88145221

其它:

直接使用安装不按以上安装 测试环境可以直接用:

接镜像 docker pull registry

运行仓库 docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest

修改daemon.json文件sudo vim /etc/docker/daemon.json

添加:{ "insecure-registries":["192.168.0.249:5000"]}

注要重启docker

-----常用配置命令

systemctl daemon-reload

vi /etc/docker/daemon.json

{

        "registry-mirrors": [

                "https://d8b3zdiw.mirror.aliyuncs.com"

],

 

"insecure-registries": [

"192.168.0.249",

"192.168.0.249:5000",

"192.168.0.249:443"

]

}

第五步 Gogs webhook实现git push 远程分支后自动触发Jenkins构建

Gogs webhook实现git push 远程分支后自动触发Jenkins构建

项目组已实现通过Jenkins进行构建,最近构建任务加入了sonarQube进行代码扫描的内容。

开发每次推送代码到仓库时(git push),都需要执行一次构建,以产生sonarQube扫描报告。

考虑到Gogs 的webhook可以检测push事件后进行处理,我们决定把整个构建做成自动化,实现开发推送代码到仓库后,自动触发Jenkins构建,提高开发效率。

 

1、Jenkins安装Generic Webhook Trigger Plugin

 

使用管理员账号登录Jenkins后,在系统管理-》管理插件,搜索“Generic Webhook Trigger”后安装,顺利完成插件安装:

uploading.4e448015.gif转存失败重新上传取消

uploading.4e448015.gif转存失败重新上传取消

uploading.4e448015.gif转存失败重新上传取消

uploading.4e448015.gif转存失败重新上传取消

http://username:password@192.168.1.111:8888/generic-webhook-trigger/invoke?token=abc123

 

注:需要在git 钩子里面加入下面的代码,里面的内容参考web钩子的内容

uploading.4e448015.gif转存失败重新上传取消

 上图如代码:

#!/bin/sh

if test -n "$GIT_PUSH_OPTION_COUNT"

then

echo "代码提交成功"     

     curl  \

-X POST \

-H 'Accept: application/json' \

-H 'Content-Type: application/json' \

-d '{}' \

'http://root:root@192.168.0.249:8080/generic-webhook-trigger/invoke?token=123456'

    

    echo "构建已提交\r\n"   

fi

 

 

 

可能需要用到的一些命令

常用命令

1、删除所有容器

docker rm `docker ps -a -q`

2、删除所有镜像

docker rmi `docker images -q`

3、按条件删除镜像

  没有打标签

docker rmi `docker images -q | awk '/^<none>/ { print $3 }'`

  镜像名包含关键字

docker rmi --force `docker images | grep doss-api | awk '{print $3}'`    //其中doss-api为关键字

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值