测试技术之Jenkins 搭建与集群发布环境构建
凌雪 2018-11-07 来源 :网络 阅读 980 评论 0

摘要:本文将带你了解测试技术Jenkins 搭建与集群发布环境构建,希望对大家学测试技术有所帮助。

本文将带你了解测试技术Jenkins 搭建与集群发布环境构建,希望对大家学测试技术有所帮助。

    

  Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

  目前持续集成(CI)已成为当前许多软件开发团队在整个软件开发生命周期内侧重于保证代码质量的常见做法。它是一种实践,旨在缓和和稳固软件的构建过程。

  Jenkins   作为一款软件开发的神器,能帮团队很优雅地解决编译和发布等工作。支持超多的第三方系统软件,自定义 Shell   脚本,丰富的插件,可以让你游刃有余地完成很多自动化的工作。

  Jenkins   能解决以下几类问题:

  自动化构建软件

  自动化检查

  构建可持续的自动化测试

  自动化打包和分发部署

  安装   Jenkins

  提供两种安装方式。

  下载   Jenkins

  解压 war 文件,运行 java -jar jenkins.war

  访问   //localhost:8080   根据页面指导完成安装

  docker

  我更加推荐这种方式。仓库地址:https://hub.docker.com/_/jenk...

  docker   pull jenkins

  挂载目录到宿主机,例如使用/var/jenkins_home,需要给目录设置访问权限

  chown   1000 /var/jenkins_home

  启动。 使用 root 账号进行登录,暴露端口   8080,tcp 端口50000

  docker run -u root -itd --name   jenkins -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home   jenkins

  根据指导完成注册

  安装插件。一定要安装插件:   Publish Over SSH

  使用 Jenkins   做集群部署流程

   

  

  client   发送编译指令到 Jenkins Server.

  Jenkins   Server 从 Git repo   拉取代码

  编译,打包

  把编译后的结果通过 ssh push   到业务服务器 server1、server2、server3

  配置业务服务器

  安装插件   Publish Over SSH

  进入到 /configure 页面。配置 jenknis   的私钥,和远程服务地址和端口等等。

  

  特别留意Remote   Directory,jenkins   推送过去的文件都会出现在这个目录,设置远程服务器的绝对路径有可能无效。使用相对路径即可。

  如果有多台机器,都在这里进行配置。另外,需要把   Jenkins 的公钥,添加到 server1-3 的   ~/.ssh/authorized_keys。

  1. ssh  jenkins   宿主机

  2. cat /var/jenkins_home/.ssh/id_rsa.pub

  3.   把公钥存放到 server1-3 的`~/.ssh/authorized_keys`

  4. 这样   jenkins 这台机器就可以免密登陆到 server1-3

  5. 如果 Jenkins 机器没有   /var/jenkins_home/.ssh/,那么就通过`ssh-keygen`生成

  测试机器的连接。

  配置发布任务。

  测试环境和产品环境应该使用不同的任务,因为服务会部署到不同的机器。执行流程也可能有差异。

  1.新建   FreeStyle 项目

  

  2.   配置仓库

  配置代码仓库,git,svn 等等都   ok

  Repositories 使用 ssh   的模式。

  需要把 /var/jenkins_home/.ssh/id_rsa.pub 添加到仓库的   access_key 里面。保证 jenkins 可以免密获取到代码,这个是最简单那的配置

  

  3.   配置任务

  以 node 项目为例,Jenkins shell 默认使用   非交互+非登陆式,所以获取不到环境变量。解决办法第一行需要写成 #!/bin/bash   -l

  编译任务都在这里完成了。

  

  4.   发布到远程服务器

  添加一个构建后的操作,Send build artifacts   over SSH

  推送文件到远程机器,在远程机器执行备份和重启

  

  注意sources   files是基于当前项目的工作目录,绝对路径是无效的,

  Remote directory   也是基于远程服务器的工作目录,在配置Publish Over SSH的时候指定的。

  Exec   command   意思就是在文件全部发送到远程机器,执行以下的脚本。建议先备份之前的工作目录,方便回滚代码

  你可以配置多台机器完成部署工作

  5.   其他问题

  SSH: Transferred 0 file(s)。 文件发送为空。Source   files 配置不对,应该是基于当然项目的相对路径

  Shell command not found.   #!/bin/bash -l

  Jenkins   安装部署的问题见他的官方文档。https://hub.docker.com/_/jenk...

  实践的过程中遇到了很多问题,都一一解决了,有问题可以留言。

  使用   docker 部署

 

  DockerFile

  FROM   node:8

  MAINTAINER 123  <123@123.me>

  expose   7001

  ENV LANG="C.UTF-8"   \

  TZ="Asia/Shanghai"

  WORKDIR   /data/work/

  #设置时区

  RUN echo   Asia/Chongqing > /etc/timezone   \

  && ln -sfv   /usr/share/zoneinfo/Asia/Chongqing /etc/localtime

  RUN   echo "deb //mirrors.aliyun.com/debian/ jessie main non-free contrib   \n\

  deb //mirrors.aliyun.com/debian/   jessie-proposed-updates main non-free contrib   \n\

  deb-src //mirrors.aliyun.com/debian/ jessie main   non-free contrib \n\

  deb-src   //mirrors.aliyun.com/debian/ jessie-proposed-updates main non-free   contrib" \

  > /etc/apt/sources.list   \

  && apt-get update   \

  && apt-get install -y libsasl2-dev   libsasl2-modules-gssapi-heimdal \

  &&   rm -rf   /var/lib/apt

  #加入node程序并安装npm包

  ADD   ./ ./

  RUN set -ex   \

  && npm install -g cnpm   --registry=https://registry.npm.taobao.org   \

  && cnpm install   egg-development-proxyworker \

  && cnpm   install --production \

  && cd   clientapp \

  && cnpm install   \

  && NODE_ENV="production"   cnpm run build:prod

  CMD /bin/bash -c "npm run   prod && while pidof node; do sleep 60;   done"

  Build

  #!/bin/bash   -l

  set -ex

  docker build -t   registry.cn-hangzhou.aliyuncs.com/123/minerdash:${BUILD_NUMBER}   .

  # docker image tag   registry.cn-hangzhou.aliyuncs.com/123/minerdash:${BUILD_NUMBER}   registry.cn-hangzhou.aliyuncs.com/123/minerdash:latest

  docker   push   registry.cn-hangzhou.aliyuncs.com/123/minerdash:${BUILD_NUMBER}

  发布

  set   -ex

  docker pull   registry.cn-hangzhou.aliyuncs.com/123/minerdash:${BUILD_NUMBER}

  docker   rm -f minerdash || true

  docker run -d --name   minerdash --network host   registry.cn-hangzhou.aliyuncs.com/123/minerdash:${BUILD_NUMBER}

   

 

            

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标软件测试之测试技术频道!

 

本文由 @凌雪 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程