概念服务治理遇到的问题
在微服务项目中每个服务都是独立运行的我的项目不可能对每个我的项目进行手动部署,波及到自动化运维的问题
继续集成继续集成(Continues Integration,简称CI)继续集成指的是,频繁(一天屡次)地将代码集成到骨干,长处有两个:
疾速发现错误: 每实现一点更新, 就集成到骨干,能够疾速发现错误,定位谬误避免分支大幅偏离主题: 如果不是常常集成,骨干又在不断更新,会导致当前集成难度变大,甚至难以集成继续集成强调:开发人员提交了新的代码之后,立刻进行构建,(单元)测试,依据测试后果,确定新代码和原有代码是否集成到一起与集成相干的概念还有继续交付和继续部署
应用GitLab继续集成GitLab8.0当前,GitLab CI就曾经集成在GitL中,只有在我的项目中增加一个 .gitlab-ci.yml文件,而后增加一个Runner,就能够进行继续集成Pipeline
Pipeline: 管道 ,一次Pipeline相当于一次构建工作,能够蕴含多个流程:装置依赖,运行测试,编译,部署测试服务器,部署生产服务器等流程任何提交或者Merge Request的合并都能够触发PipelineStages
Stages示意构建阶段,也就是下面的流程,能够在一次Pipeline中构建多个Stages,这些Stages的特点:
所有Stages会依照程序运行: 即当一个Stage实现后,下一个Stage才会开始只有当所有Stages实现后,该构建工作(Pipeline)才会胜利如果任何一个Stage失败,那么后续的Stages都不会执行,该构建工作(Pipeline)失败Jobs
Jobs示意构建工作,示意某个Stage外面执行的工作,能够在Stages里定义多个Jobs,这些Jobs特点:
雷同Stage中的Jobs会并行执行雷同Stage中的Jobs都执行胜利时,该Stage才会执行胜利如果任何一个Job失败,那么该Stage失败,即构建工作(Pipeline)失败
继续交付继续交付(Continuous Delivery):
频繁地将软件的新版本,交付给品质团队或用户以供评审评审通过,代码就进入生产阶段继续交付是继续集成的下一步,强调的是:不管怎么更新,软件是随时随地能够交付的继续交付是在继续集成的根底上,将集成后的代码部署到更靠近实在运行环境的类生产环境(production-like environment)中
继续部署继续部署(Continuous Deployment)是继续交付的下一步,指的是代码通过评审后,主动部署到生产环境继续部署的指标: 代码在任何时刻都是可部署的,可进入生产阶段继续部署的前提: 自动化实现测试,构建,部署等步骤
GitLab RunnerGitLab CI一般来说,构建工作会占用很多的系统资源(编译代码时),因为GitLab CI是GitLab的一部分,由GitLab CI来运行构建工作的化,GitLab的性能会大大降落GitLab CI最大的作用: 是治理各个我的项目的构建状态
GitLab RunnerGitLab Runner能够装置到不同的机器上,在构建工作运行期间不会影响GitL的性能基于Docker装置GitLab Runner:
1.创立工作目录: /usr/local/docker/runner2.创立构建目录: /usr/local/docker/runner/environment3.下载jdk-8u152-linux-x64.tar.gz复制到/usr/local/docker/runner/environment4.下载apache-maven-3.5.3-bin.tar.gz复制到/usr/local/docker/runner/environmentdaemon.json1.在/usr/local/docker/runner/environment目录下创立daemon.json,用于配置加速器和仓库地址-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------{ "registry-mirrors":[ "https://registry.docker-cn.com" ], "insecure-registries":[ "127.0.0.1:5000" ]}----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Dockerfile1.在 /usr/local/docker/runner/environment目录下创立Dockerfile---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------FROM gitlab/gitlab-runnerMAINTAINER Lusifer <topsale@vip.qq.com># 批改软件源RUN echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse' > /etc/apt/sources.list && \ echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse' >> /etc/apt/sources.list && \ echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse' >> /etc/apt/sources.list && \ echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse' >> /etc/apt/sources.list && \ apt-get update -y && \ apt-get clean# 装置 DockerRUN apt-get -y install apt-transport-https ca-certificates curl software-properties-common && \ curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add - && \ add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" && \ apt-get update -y && \ apt-get install -y docker-ceCOPY daemon.json /etc/docker/daemon.json# 装置 Docker ComposeWORKDIR /usr/local/binRUN wget https://raw.githubusercontent.com/topsale/resources/master/docker/docker-composeRUN chmod +x docker-compose# 装置 JavaRUN mkdir -p /usr/local/javaWORKDIR /usr/local/javaCOPY jdk-8u152-linux-x64.tar.gz /usr/local/javaRUN tar -zxvf jdk-8u152-linux-x64.tar.gz && \ rm -fr jdk-8u152-linux-x64.tar.gz# 装置 MavenRUN mkdir -p /usr/local/mavenWORKDIR /usr/local/maven# RUN wget https://raw.githubusercontent.com/topsale/resources/master/maven/apache-maven-3.5.3-bin.tar.gzCOPY apache-maven-3.5.3-bin.tar.gz /usr/local/mavenRUN tar -zxvf apache-maven-3.5.3-bin.tar.gz && \ rm -fr apache-maven-3.5.3-bin.tar.gz# COPY settings.xml /usr/local/maven/apache-maven-3.5.3/conf/settings.xml# 配置环境变量ENV JAVA_HOME /usr/local/java/jdk1.8.0_152ENV MAVEN_HOME /usr/local/maven/apache-maven-3.5.3ENV PATH $PATH:$JAVA_HOME/bin:$MAVEN_HOME/binWORKDIR /--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------docker-compose.yml在 /usr/local/docker/runner 目录下创立 docker-compose.yml---------------------------------------------------------------------------------------------------------------------------------------------------------------------------# 示意从 environment 目录下寻找 Dockerfile,即在Docker 里装 Dockerversion: '3.1'services:gitlab-runner: build: environment restart: always container_name: gitlab-runner privileged: true volumes: - ./config:/etc/gitlab-runner - /var/run/docker.sock:/var/run/docker.sock------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------构建镜像并启动
...