jenkins+docker+portainer搭建持续集成环境

该demo基于centos7环境

说明:

  •   准备2台以上服务器,该demo准备了master和node两台服务器192.168.10.17(master) 192.168.10.16(node)
  1.   所有服务器均安装docke
  2.   jenkins portainer安装在master节点上
  3.   eureka和zuul网关部署在master节点上
  4.   springboot-service-a/springboot-service-b/springboot-service-c部署在node节点上
  5.   网关作为同一的访问入口,springboot-service-b通过feign组件调用springboot-service-a的方法
  6.   网关作为同一的访问入口,springboot-service-b通过feign组件调用springboot-service-a的方法
  1.   spring-eureka-server 注册中心,端口7001
  2.   springboot-service-a 服务a,端口7005
  3.   spring-cloud-zuul 网关,端口7000
  4.   springboot-service-b 服务b,端口7006,部署shell和springboot-service-a一样
  5.   springboot-service-c 服务c,端口7007,部署shell和springboot-service-a一样
  •   原理
  1.   所有springboot jar包构建通过安装在master节点的jenkins来完成
  2.   jenkins所在节点(master节点)上docker部署直接通过jenkins执行shell来完成docker镜像构建和运行命令
  3.   通过jenkins Publish over SSH插件将构建好的jar包和Dockerfile发送到node节点上执行镜像构建和运行命令

  

一、安装docker

#安装依赖(docker依赖于系统的一些必要的工具,可以提前安装)
yum install -y yum-utils device-mapper-persistent-data lvm2
#添加软件源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装docke-ce
yum list docker-ce --showduplicates | sort -r #查看所有docker-ce版本
yum install -ysyst     docker-ce-18.06.3.ce
#启动服务
systemctl start/stop docker
systemctl enable/disable docker #开机启动

#配置docker加速镜像
/etc/docker/daemon.json
{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}
#使配置生效
systemctl daemon-reload
systemctl restart docker

二、安装java环境

#如果系统中已经安装了jdk,需要先卸载
  rpm -qa grep | java #查找
  rpm -e --nodeps java-1.6.0xxxxxx #卸载
  java -version

1.在线安装
yum install -y java       #安装jre
yum install -y java-devel #原生安装,包含JDK

2.本地安装
1.下载linux jdk版本
    "最新版本下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html"
    "历史版本下载地址:  http://www.oracle.com/technetwork/java/javase/archive-139210.html"
2.上传解压
    mkdir -p /user/local/java
    tar zxvf jdk-8u161-linux-x64.tar.gz -C /user/local/java
3.安装jdk依赖环境glibc,不安装后期容易出问题   安装命令 yum install glibc.i686
    "报错cannot file file /usr/local/jdk1.7.0_79/lib/java......"
    "注:出现error 一个.so文件not found (未找到)那可能你的Linux版本  glibc版本还未达到2.4"
    "原因分析:linux 上安装jdk 1.7版本必须要配合  glibc 核心源码版本在2.4或以上"
4.配置环境
    vim  /etc/profile
    #最后加入
    export JAVA_HOME=/usr/local/java/jdk1.8.0_161
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$PATH:$JAVA_HOME/bin
    #加载配置
    source /etc/profile

5.如果识别不到java建立软连接
ln -s /usr/local/jdk1.8.0_121/jdk/bin/java /usr/bin/java

三、安装jenkins

1.添加Jenkins库到yum库,Jenkins将从这里下载安装。
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
yum install -y jenkins
2.如果不能安装就到官网下载jenkis的rmp包,官网地址(http://pkg.jenkins-ci.org/redhat-stable/)
wget http://pkg.jenkins-ci.org/redhat-stable/jenkins-2.7.3-1.1.noarch.rpm
rpm -ivh jenkins-2.7.3-1.1.noarch.rpm

#配置jenkis的端口
vi /etc/sysconfig/jenkins
#启动jenkins
service jenkins start/stop/restart
#将jenkins用户加入root组合docker组,以免以后执行时权限不足gpasswd -a jenkins rootgpasswd -a jenkins docker

systemctl restart jenkins
#安装成功后Jenkins将作为一个守护进程随系统启动 #系统会创建一个“jenkins”用户来允许这个服务,如果改变服务所有者,同时需要修改/var/log/jenkins, #/var/lib/jenkins, 和/var/cache/jenkins的所有者 #启动的时候将从/etc/sysconfig/jenkins获取配置参数 #默认情况下,Jenkins运行在8080端口,在浏览器中直接访问该端进行服务配置 #Jenkins的RPM仓库配置被加到/etc/yum.repos.d/jenkins.repo #初始密码在:/var/lib/jenkins/secrets/initialAdminPassword #安装maven插件 Maven Integration "常见问题1" #如果缺少对应权限将jenkins用户加入对应用户组,否者构建时会报权限不足无法执行 gpasswd -a jenkins root #将用户jenkins加入到root组 gpasswd -a jenkins dockr #将用户jenkins加入到root组 "常见问题2" #构建maven项目时报找不到java环境,但在终端上java环境是可见的,解决办法 #1.简历软连接 ln -s /usr/local/jdk1.8.0_121/jdk/bin/java /usr/bin/java #2.在jenkins服务中配置java环境变量 vim /etc/init.d/jenkins #将正确的java路径填写到下面,重启服务 candidates=" /etc/alternatives/java /usr/lib/jvm/java-1.8.0/bin/java /usr/lib/jvm/jre-1.8.0/bin/java /usr/lib/jvm/java-1.7.0/bin/java /usr/lib/jvm/jre-1.7.0/bin/java /usr/lib/jvm/java-11.0/bin/java /usr/lib/jvm/jre-11.0/bin/java /usr/lib/jvm/java-11-openjdk-amd64 /usr/bin/java "  systemctl restart jenkins

#安装插件

 #手动安装插件下载地址http://updates.jenkins-ci.org/download/plugins/
 #如果在线找找不到插件,从上面的下载地址 ctrl+f查找的插件下载后通过插件管理中心高级上传安装
 1.jenkins安装maven插件
   系统管理->插件管理->可选插件->Maven Integration plugin
 2.jenkins安装Publish over SSH
  系统管理->插件管理->可选插件->Publish over SSH

四、安装maven

wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.tar.gz
tar -zxvf  apache-maven-3.1.1-bin.tar.gz
设置环境变量
vi /etc/profile
#maven 安装的路径
export M2_HOME=/maven/maven
export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin
#使环境变量生效
source /etc/profile
mvn -version

五、创建springCloud项目部署

  master节点jenkins工程配置

  注册中心spring-eureka-server配置

  1.源码管理 Subversion(SVN) svn://gitee.com/zhangsike/springboot-learn/spring-eureka-server

  

2.构建触发器:选择轮询 SCM 配置 * * * * * 每分钟查询构建

  

  3.构建环境:选择 Add timestamps to the Console Output

   4. Pre Steps:POM:pom.xml,参数:clean package -Dmaven.test.skip=true

  

   5.Post Steps

  

   命令内容如下:

  prjName=spring-eureka-server
  docker stop $prjName
  docker rm $prjName
  docker rmi $prjName
  \cp ‘target/‘$prjName-‘0.0.1-SNAPSHOT.jar‘ $prjName‘-0.0.1-SNAPSHOT.jar‘
  docker build -t $prjName .
  docker run -d --expose=7001 -p 7000:7001 --name $prjName $prjName‘:latest‘ --server.port=7001

  如果docker中不存在对应容器,这段shell会执行失败(docker stop会error,后面就无法构建镜像和创建容器了),所以第一次构建前先手动创建好容器后续执行就正常了,

  也可以用shell判断下容器如果存在再停止删除,但暂时不会写这样的shell,正在学习中。

  该shell逻辑如下 停止容器-》删除容器-》删除镜像-》将jar包和Dockerfile复制到同一个目录中-》在jar包目录中构建镜像-》创建容器

  jenkins项目创建完成,正常执行完毕后就可以看见容器中已经有运行的实例了

[[email protected]ave2 spring-cloud-zuul]# docker ps -a
CONTAINER ID        IMAGE                         COMMAND                CREATED             STATUS              PORTS                    NAMES
2b43514c10bc        spring-cloud-zuul:latest      "java -jar /app.jar"   4 hours ago         Up 4 hours          0.0.0.0:7000->7000/tcp   spring-cloud-zuul
bffb0834de15        spring-eureka-server:latest   "java -jar /app.jar"   6 hours ago         Up 5 hours          0.0.0.0:7001->7001/tcp   spring-eureka-server
08326db2cbd7        springboot-demo:latest        "java -jar /app.jar"   3 days ago          Up 3 days           0.0.0.0:8081->8080/tcp   springboot-demo
b56abd94c813        portainer/portainer           "/portainer"           6 days ago          Up 3 days           0.0.0.0:9000->9000/tcp   prtainer-test

    spring-cloud-zuul项目创建jenkins工程和spring-eureka-server一致,只需修改源码和构建shell

    shell改成下面即可

    prjName=spring-cloud-zuul
    docker stop $prjName
    docker rm $prjName
    docker rmi $prjName
    \cp ‘target/‘$prjName-‘0.0.1-SNAPSHOT.jar‘ $prjName‘-0.0.1-SNAPSHOT.jar‘
    docker build -t $prjName .
    docker run -d --expose=7000 -p 7000:7000 --name $prjName $prjName‘:latest‘ --server.port=7000

    

  node节点jenkins工程配置

    除了Post steps不一致之外,其余配置均一致

    执行逻辑:通过Publish over SSH插件 将构建好的springboot jar包和Dockerfile发送到远程主机构建镜像并启动

    

注意:由于运行在docker中的项目ip是容器ip,外网无法访问,所以在配置eureka客户端时要以主机ip注册,否则注册无法提供识别

  yml文件如下

  

eureka:
  client:
    registerWithEureka: true
    fetchRegistry: true
    serviceUrl:
      defaultZone: http://admin:[email protected]:7001/eureka/
  instance:
    prefer-ip-address: true
    ip-address: 192.168.10.16
    instance-id: 192.168.10.16:${server.port}

  最终注册中心效果

原文地址:https://www.cnblogs.com/zincredible/p/12120203.html

时间: 2024-08-27 16:12:38

jenkins+docker+portainer搭建持续集成环境的相关文章

Jenkins+Maven+Svn搭建持续集成环境持续集成和自动部署

Jenkins和Hudson有很深的渊源,Jenkins目前更新频繁,目前选用Jenkins为持续集成工具和自动部署 Jenkins的使用有很多的介绍,主要记录如下要点: 192.168.1.240:Tomcat: /usr/local/share/apache-tomcat-6.0.37/ 访问端口8186 Jenkins: /usr/local/share/apache-tomcat-6.0.37/webapps/Jenkins访问地址: http://192.168.1.240:8186/

selenium+jenkins+maven+testNG搭建持续集成环境

为了简明起见,分几大部分,很基础的细节就不详述了 一·安装jenkins 二·创建一个maven项目的job 2.1   填上SVN的Repository URL 2.2  由于是在本地执行maven命令,所以添加构建步骤:Execute windows batch command  写入以下命令(注意需要在pom.xml文件中加上maven的插件,pom.xml文件在后面) cd D:\Program Files (x86)\Jenkins\workspace\ZZTHaiWaiGouKeZh

jenkins + Git 搭建持续集成环境

jenkins + Git 搭建持续集成环境 持续集成通过自动化构建.自动化测试以及自动化部署加上较高的集成频率保证了开发系统中的问题能迅速被发现和修复,降低了集成失败的风险,使得系统在开发中始终保持在一个稳定健康的集成状态.jenkins是目前广泛应用的持续集成工具,本文记录我使用jenkins+Git配置持续集成环境的整个流程以及踩到的坑(jenkins过程的坑往往不是在第一次配置,而是在配置结束后更改某些配置项的时候踩到). 总体流程如下: tomcat8.0下载地址:http://tom

基于 Jenkins 快速搭建持续集成环境

持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础.Jenkins 是一个开源软件项目,旨在提供一个开放易用的软件平台,使持续集成变成可能.本文正是从持续集成的基本概念入手,通过具体实例,介绍了如何基于 Jenkins 快速搭建持续集成环境. 持续集成概述 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变

使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(二)

前言     上一篇随笔Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)介绍maven和nexus的环境搭建,以及如何使用maven和nexus统一管理库文件和版本,以及怎么将自己的模块上传至nexus私服,供其他模块引用.下面将主要介绍如何利用Jenkins.SVN.Tomcat以及Sonar来完成项目的自动化编译.测试和发布,以及检查项目的代码质量. 利器Jenkins     Jenkins源于另外一个持续集成工具Hudson,Hudson在o

用MSBuild和Jenkins搭建持续集成环境(2)

http://www.infoq.com/cn/articles/MSBuild-2 作者 Mustafa Saeed Haji Ali ,译者 李剑 发布于 2012年10月23日 | 注意: 挥一挥衣袖,带走满满干货,关注活动大本营,时不时发福利呦!3 讨论 分享到:微博微信FacebookTwitter有道云笔记邮件分享 稍后阅读 我的阅读清单 这是持续集成系列的下半部分,如果你还没看过上半部分的话,请点击这里:用MSBuild和Jenkins搭建持续集成环境(1). 与Jenkins相会

使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境

转载:http://www.cnblogs.com/leefreeman/p/4226978.html 前言 上一篇随笔Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)介绍maven和nexus的环境搭建,以及如何使用maven和nexus统一管理库文件和版本,以及怎么将自己的模块上传至nexus私服,供其他模块引用.下面将主要介绍如何利用Jenkins.SVN.Tomcat以及Sonar来完成项目的自动化编译.测试和发布,以及检查项目的代码质量.

Jenkins 快速搭建持续集成环境

持续集成概述 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要. 持续集成正是针对这一类问题的一种软件开发实践.它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成.而每次的集成都是通过自动化的构建来验证,包括自动编译.发布和测试,从而尽快地发现集成错误,让团队能够更快

Jenkins+maven+svn+tomcat 持续集成环境快捷部署

搭建持续集成环境 jenkins + maven + svn + tomcat 实现自动编译打包部署 1.环境准备 (1)JDK1.8.0_131                    #不低于1.7版本,这里用最新版本 (2)Apache Maven 3.3.9        #可以选择3.2.5或者3.3.9:不要使用3.5.0版本!! (3)SVN客户端(Subversion 1.6.11)         #程序版本控制SVN1.6.11 (4)Tomcat1.7(apache-tomc