前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Jenkins 搭建与集群发布环境构建

Jenkins 搭建与集群发布环境构建

作者头像
顾翔
发布2019-12-11 12:56:56
6310
发布2019-12-11 12:56:56
举报

来源:http://www.51testing.com/

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

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

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

  Jenkins 能解决以下几类问题:

  自动化构建软件

  自动化检查

  构建可持续的自动化测试

  自动化打包和分发部署

 安装 Jenkins

  提供两种安装方式。

  下载 Jenkins

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

  访问 http://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 http://mirrors.aliyun.com/debian/ jessie main non-free contrib \n\  deb http://mirrors.aliyun.com/debian/ jessie-proposed-updates main non-free contrib \n\  deb-src http://mirrors.aliyun.com/debian/ jessie main non-free contrib \n\  deb-src http://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}

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-10-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试培训 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档