首页 > 技术文章 > 持续集成环境搭建

xdzy 2018-08-13 15:33 原文

持续集成环境搭建

持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

 

Jenkins(镜像管理工具)

Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。

 

1)安装Jdk

安装jdk到宿主机

 

2)安装Maven

安装maven到宿主机

 

3)安装Git

安装git到宿主机

 

4)安装jenkins

下载安装包,然后上传,下载地址:https://jenkins.io/

直接下载jenkins:wget https://pkg.jenkins.io/redhat/jenkins-2.83-1.1.noarch.rpm

 

安装jenkins:rpm -ivh jenkins-2.83-1.1.noarch.rpm

 

5)启动jenkins

配置jenkins:vi /etc/sysconfig/jenkins

点击i键编辑,esc保存退出,shift+z+z回到服务器

JENKINS_USER="root"
JENKINS_PORT="8888"

启动jenkins:systemctl start jenkins

关闭jenkins:systemctl stop jenkins

重启jenkins:systemctl restart jenkins

访问jenkins:192.168.25.128:8888

 

启动时找不到java环境,先查看状态:

编辑配置文件

vi /etc/init.d/jenkins

在如下位置指定java路径

保存退出,重新加载,加载完重启jenkins生效

systemctl daemon-reload

 

输入密码

查看jenkins密码:输入命令cat /var/lib/jenkins/secrets/initialAdminPassword

 

之后会看到安装页面,点击第一个安装

 

自动下载插件

 

下载完创建一个账号登录

 

修改账号密码:账号密码设置都为xdzy

 

6)卸载jenkins

卸载

rpm -e jenkins

查看是否卸载成功

rpm -ql jenkins

彻底卸载残留文件

find / -iname jenkins | xargs -n 1000 rm -rf

 

7)安装插件

下载maven插件,如果jenkins下载git插件失败也要手动下载git插件

 

插件下载失败解决方案:https://www.cnblogs.com/sxdcgaq8080/p/10489326.html

 

8)全局工具配置

将服务器中git,maven,jdk8路径配置好即可

 

9)创建任务

这边应该会有其他选项可以选择的,如果插件下载失败就没有

插件下载之后,注意jenkins最好使用最新版本,这样减少很多问题

填写项目描述,设置git项目路径

填写需要生成镜像的pom文件,以及打镜像命令

任务创建之后

图标含义说明:

第一个表示未执行过,执行之后变绿色,

第二个表示任务状态,即健康状态,

最后一个是执行按钮,启动任务之后,会将配置在git仓库的指定项目打成镜像(我们在打成镜像时,应

该先提交代码到Git仓库)。

 

注意要先配置全局的环境

生成之后可以在docker看见生成的镜像,然后创建容器,启动即可部署项目

 

Gogs(Git项目管理平台)

Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通

过独立的二进制分发,并且支持 Go 语言支持的所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。

 

1)下载安装

下载

docker pull gogs/gogs

安装

docker run -di --name=gogs -p 10022:22 -p 3000:3000 -v /var/gogsdata:/data gogs/gogs

 

2)访问

界面的访问:192.168.25.128:3000

安装过程

注册账号:账号密码设置都为xdzy

登录之后可以看见如下页面:

 

3)创建项目

创建项目文件夹并且上传项目:tensquare

其实也可以通过github来管理项目,目前已经开放了私有仓库的功能

 

Rancher(容器管理工具)

Rancher是一个开源的企业级容器管理平台。通过Rancher,企业再也不必自己使用一系列的开源软件去

从头搭建容器服务平台。Rancher提供了在生产环境中使用的管理Docker和Kubernetes的全栈化容器部

署与管理平台。

 

1)下载rancher

docker pull rancher/server

 

2)创建rancher容器

docker run -d --name=rancher --restart=always -p 9090:8080 rancher/server

 

3)访问页面

http://192.168.25.128:9090

右下角切换中文

 

4)添加环境

添加环境即可以根据不同的环境(测试、生产、发布),使用不同的配置,启用不同的容器

 

5)添加主机

将红色框命令在服务器执行,让Rancher与docker建立连接

docker中设置的容器都会加载进来,我们在这里可以很方便的管理主机的每个容器的开启和关闭

 

7)添加应用

应用是指项目分类,即属于哪个项目,我们可以将不同的服务放到不同的应用里

 

8)添加服务

即用图形化的方式创建镜像到docker,并且创建容器

创建一个mysql容器,注意名字不要和原来的容器名字重复

设置密码

创建完成,以上操作类似于我们在服务器执行了一下docker命令

 

9)微服务管理

实现思路:将微服务模块通过dockerfile的maven插件生成镜像到私有仓库,然后就可以通过rancher可视化的将镜像生成容器管理。

 

10)扩容与缩容

扩容、缩容:增加或减少当前容器数量,微服务集群

注意点:需要通过postman发送post请求激活,容器不做端口映射,端口映射交给rancher管理

实现步骤:

创建一个微服务容器

配置扩容信息

复制请求并且激活

在如下位置会看见容器数量为2,并且注册中心也会出现服务集群

 

InfluxDB(时序数据库)

InfluxDB是一个由InfluxData开发的开源时序型数据。它由Go写成,着力于高性能地查询与存储时序型数据。

InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。

InfluxDB,常用的一种使用场景:监控数据统计。每毫秒记录一下电脑内存的使用情况,然后就可以根据统计的

数据,利用图形化界面(InfluxDB V1一般配合Grafana)制作内存使用情况的折线图;可以理解为按时间记录

一些数据(常用的监控数据、埋点统计数据等),然后制作图表做统计。

 

1)下载InfluxDB

docker pull tutum/influxdb

 

2)创建InfluxDB容器

docker run -di \
    -p 8083:8083 \
    -p 8086:8086 \
    --expose 8090 \
    --expose 8099 \
    --name influxsrv \
    tutum/influxdb

注:8083是web访问端口,8086是数据写入端口

 

3)访问

http://192.168.25.128:8083/

 

4)基本使用

创建一个用户,并且拥有所有权限

CREATE USER "username" WITH PASSWORD 'password' WITH ALL PRIVILEGES

用户授权

usrename这个用户对testdb数据库拥有所有权限

grant all privileges on testdb to usrename

usrename这个用户对testdb数据库只有写的权限

grant WRITE on testdb to usrename

usrename这个用户对testdb数据库只有读的权限

grant READ on testdb to usrename

查看数据库数据

SHOW MEASUREMENTS

 

CAdvisor(数据采集)

为了解决docker stats的问题(存储、展示),谷歌开源的cadvisor诞生了,cadvisor不仅可以搜集一台机器上所有

运行的容器信息,还提供基础查询界面和http接口,方便其他组件如Prometheus进行数据抓取,或者

cadvisor+influxdb + grafna搭配使用。

cAdvisor可以对节点机器上的资源及容器进行实时监控和性能数据采集,包括CPU使用情况、内存使用情况、网

络吞吐量及文件系统使用情况

cadvisor使用Go语言开发,利用Linux的cgroups获取容器的资源使用信息,在K8S中集成在Kubelet里作为默认

启动项,官方标配。

 

1)下载镜像

docker pull google/cadvisor

 

2)创建容器

docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:rw \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --volume=/dev/disk/:/dev/disk:ro \
  --publish=8002:8080 \
  --detach=true \
  --privileged=true \
  --link influxsrv:influxsrv \
  --name=cadvisor \
  google/cadvisor \
  -storage_driver=influxdb \
  -storage_driver_db=testdb \
  -storage_driver_host=influxsrv:8086

storage_driver_db=testdb:连接influxdb里面的数据库

 

3)访问

http://192.168.25.128:8002/containers/

这时去查看influxdb数据库,会发现已经将一些信息保存到数据库

查看具体内容

 

Grafana(数据可视化)

grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析

中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库。

Grafana支持许多不同的数据源。每个数据源都有一个特定的查询编辑器,该编辑器定制的特性和功能是公开的

特定数据来源。 官方支持以下数据源:Graphite,Elasticsearch,InfluxDB,Prometheus,Cloudwatch,

MySQL和OpenTSDB等。每个数据源的查询语言和能力都是不同的。你可以把来自多个数据源的数据组合到一个

仪表板,但每一个面板被绑定到一个特定的数据源,它就属于一个特定的组织。

 

1)下载镜像

docker pull grafana/grafana

 

2)创建容器

docker run -d -p 3001:3000 -e INFLUXDB_HOST=influxsrv -e INFLUXDB_PORT=8086 \
-e INFLUXDB_NAME=testdb -e INFLUXDB_USER=username -e INFLUXDB_PASS=password \
--link influxsrv:influxsrv --name grafana grafana/grafana

 

3)访问

http://192.168.25.128:3001

账号、密码默认都是:admin

 

4)添加数据源

监控某个数据库数据情况

添加influxdb

 

5)添加仪表盘

可视化监控某个数据情况

选择grafana

设置名称

间隔几秒采集一次数据

 

6)添加预警通知

对某个数据设置阈值,实现监控预警

添加一个预警

回到仪表盘设置阈值和预警

 

推荐阅读