jenkins docker springcloud 自动化

由于公司要做微服务所以我对jenkins docker springcloud如何集成起来做自动部署做了一些研究,这里写出来也算是结自己一个总结,同时也希望能帮助到其他人。

  我这里环境如下:

  1.  Contos7 64
  2. jdk-8u144-linux-x64.tar.gz
  3. jenkins.war 2.78
  4. docker
  5. gitlab
  6. maven
  7. git
因为jenkins是java 编写的所以需要安装jdk安装步骤很简单这大概也就是一步:


  • 进入jdk的目录  cd /usr/local 我这里是/usr/local这个目录
  • 查看目录下文件 ls -il
  • 解压jdk tar zxvf jdk-8u144-linux-x64.tar.gz
  • 配置jdk 编辑profile 文件加入jdk 环境变量 vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_144
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

  • 使用source命令使配置生效 source /etc/profile
  • 这时我们来执行 java -version 出现下面这个就说明配置成功了。

  • 接下来我们就可以安装jenkins了首选需要下载jenkins 下载地址 http://updates.jenkins-ci.org/download/war/
  • 下载后将jenkins.war上传到 /usr/local
  • 到jenkins.war 目录下 执行 java -jar jenkins.war 或者是 java -jar httpPort=8080(这里可以指定怎么想指定的端口) jenkins.war jenkins 默认是8080
  • 因为liunx 系统没有开放8080端口所以要开放8080端口 firewall-cmd --add-port=8080/tcp --permanent
  • 重新加载防火墙配置 firewall-cmd --reload
  • 这时在浏览器访问 http://ip:8080 就可以看到
  • 这是jenkins为我们自动生成的一个密钥 这个密钥可以在控制台找到 当然也可以去 这个目录下找到/root/.jenkins/secrets/initialAdminPassword这里我们到控制台去找
  • 将这个密钥复制到文本框 点击Continue 就可以看到这个页面
  • 这里这们选择推荐(install suggested plugins)这时可以看到已经在安装插件
  • 安装完成后需要创建一个管理员账户 填写完成后点击 Save and finish
  • 当进入下面这个页面后jenkins就算是安装完成了

jenkins docker springcloud 自动化_第1张图片

  • docker 的安装我这里是安官网的安装这里就不做请说明。请参考官网 https://docs.docker.com/engine/installation/linux/docker-ce/centos/#install-using-the-repository
  • maven 安装 首先要下载一上maven 的安装文件 使用wget下载 wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz
  • 下载完成后解压 maven :tar zxvf apache-maven-3.5.0-bin.tar.gz
  • 配置MAVEN_HONE 环境变量
  • 编辑 vim /etc/profile 加入下面这两句
export  MAVEN_HOME=/usr/local/apache-maven-3.5.0
export PATH=$PATH:$MAVEN_HOME/bin

 

  • 配置生效 source /etc/profile
  • 执行mvn -version 看到如果图说明配置成功

jenkins docker springcloud 自动化_第2张图片

  • 配置阿里云的maven repository 进入 maven conf目录下 cd /usr/local/apache-maven-3.5.0/conf
  • 编辑settings.xml加入阿里云的maven仓库 vimsettings.xml
 
        nexus-aliyun
        *
        Nexus aliyun
        http://maven.aliyun.com/nexus/content/groups/public
   

jenkins docker springcloud 自动化_第3张图片


  • 安装git yum install -y git
  • 安装完成执行 git --version

  • 接下来进入主题来构建我们的第一个项目
1.在jenkins中创建一个新任务

jenkins docker springcloud 自动化_第4张图片


2.构建一个自由风格的软件项目

jenkins docker springcloud 自动化_第5张图片

3.配置项目构建信息

1)配置git
jenkins docker springcloud 自动化_第6张图片
2)配置git web hook 安装 gitlab hook plugin
系统管理 -> 插件管理 -> 可选插件 -> 搜索 gitlab hook plugin -> 选中安装
jenkins docker springcloud 自动化_第7张图片

首先说明我这里用的是私有的gitlab 如果你的机器可以公网访问那么你可以使用github 或 码云 。搭建私有gitlab请看 http://www.imooc.com/article/17128?block_id=tuijian_wz
进入点击generate生成一个token 复制 http://192.168.189.139:8080/project/microservice-discovery 进入 gitlab
Settings -> Integrations -> 添加url和 token
jenkins docker springcloud 自动化_第8张图片
jenkins docker springcloud 自动化_第9张图片

3)配置构建环境

maven构建 增加构建步骤 -> invoker top-level-Maven targets
构建命令 clean package
jenkins docker springcloud 自动化_第10张图片
jenkins docker springcloud 自动化_第11张图片
shell 脚本 增加构建步骤 -> Execute shell
jenkins docker springcloud 自动化_第12张图片

jenkins docker springcloud 自动化_第13张图片
构建前我们需要设置一下docker 的regitry通过不安全的http访问 地址以及阿里云加速器 vim /usr/lib/systemd/system/docker.service 加入如下
--registry-mirror=https://aj2rgad5.mirror.aliyuncs.com --insecure-registry 192.168.189.133:5000
完成已上步骤我们点构建就可以构建我们的项目了 从下图中可以看到已经开始在构建


jenkins docker springcloud 自动化_第14张图片
构建完成后我们访问http://192.168.189.139:8761就可以看到springcloud eureak的管理页了
jenkins docker springcloud 自动化_第15张图片

构建脚本如下:
#!/bin/bash
REGISTRY_URL=192.168.189.133:5000
WORK_DIR=/root/work_build
PROJECT_NAME=microservice-provider
PROJECT_VERSION=0.0.1
if [ ! -e ${WORK_DIR}/${PROJECT_NAME} ] && [ ! -d ${WORK_DIR}/${PROJECT_NAME} ]; then
mkdir -p ${WORK_DIR}/${PROJECT_NAME}
echo "Create Dir: ${WORK_DIR}/${PROJECT_NAME}"
fi
if [ -e ${WORK_DIR}/${PROJECT_NAME}/Dockerfile ]; then
rm -rf ${WORK_DIR}/${PROJECT_NAME}/Dockerfile
echo "Remove File: ${WORK_DIR}/${PROJECT_NAME}/Dockerfile"
fi
cp ./Dockerfile ${WORK_DIR}/${PROJECT_NAME}/
cp ./target/*.jar ${WORK_DIR}/${PROJECT_NAME}/
cd ${WORK_DIR}/${PROJECT_NAME}/
docker build -t ${REGISTRY_URL}/microservice/${PROJECT_NAME}:${PROJECT_VERSION} .
docker push ${REGISTRY_URL}/microservice/${PROJECT_NAME}:${PROJECT_VERSION}
if docker ps -a | grep ${PROJECT_NAME}; then
docker rm -f ${PROJECT_NAME}
echo "Remove Docker Container: ${PROJECT_NAME}"
fi
docker run -d -p 8761:8761 --name ${PROJECT_NAME} ${REGISTRY_URL}/microservice/${PROJECT_NAME}:${PROJECT_VERSION}

你可能感兴趣的:(jenkins,docker,springcloud,自动化,docker,springcloud,jekins)