因图片不能上传,见资源文档里面有相应的下载。资源文档只是可以显示图片,其他信息一样。
(CICD架构文档)测试环境说明步骤
一、总体说明
总架构图
架构图说明
项目开发语言是php,使用了比较流行的laravel框架,项目中用到的laravel插件使用composer安装,npm安装全局模块,编译生成js样式文件
① 开发人员提交代码到svn,运维人员更改nginx配置、项目env配置并提交到gitlab
②svn、gitlab钩子会触发jenkins执行下载对应项目的env、nginx配置文件、Dockerfile和最新版本的代码
③jenkins执行shell脚本:composer安装laravel插件和npm安装模块,编译生成js文件。完好的代码通过docker build Dockerfile 指令打包成镜像
④上传构建好的镜像push到harbor镜像仓库
⑤jenkins借助Rancher的插件通过API与rancher交互更新service达到更升级容器的目的(也就是更新代码版本),其中pull镜像的这一步会通过saltstack并行从harbor上下拉之前构建好的镜像到多个主机上
以上流程完整的实现了CI\CD,这里主要是jenkins部分是关键位置之一。
下面通过关键配置的截图来展示一个清晰的思路
如图:
转存失败重新上传取消
二、软件的安装与配置
第一步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钩子之类的在里面加插件
将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 [email protected]
# 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”后安装,顺利完成插件安装:
转存失败重新上传取消
转存失败重新上传取消
转存失败重新上传取消
转存失败重新上传取消
http://username:[email protected]:8888/generic-webhook-trigger/invoke?token=abc123
注:需要在git 钩子里面加入下面的代码,里面的内容参考web钩子的内容
转存失败重新上传取消
上图如代码:
#!/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:[email protected]: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 '/^
镜像名包含关键字
docker rmi --force `docker images | grep doss-api | awk '{print $3}'` //其中doss-api为关键字