• 基于docker Jenkins搭建持续集成自动化测试环境,管理、配置、运行 Node 节点与 Slave 分布式运行


    1、总览

    • Jenkins 的任务可以分布在不同的节点上运行
    • 节点上需要配置 Java 运行环境,Java_Version >1.5
    • 节点支持 Windows 、 Linux 、 Mac
    • Jenkins 运行的主机在逻辑上是 master 节点
    • master 节点的名字必须叫 master ,而 slave 节点的名字可以随便取。

    2、配置远程节点

    2.1 前提条件

    • 配置远程节点,首先要保证有远程的节点,无论是虚拟机或者是实体机
    • 新的节点要与 Jenkins Server 保持连接畅通
    • slave 支持远程运行,例如 ssh、jnlp
    • Jenkins 需要从 git 上获取项目,因此 slave 也需要与 git 建立联系1)以 GitHub 账号为例,先创建公钥私钥,命令 ssh-keygen -t rsa -C "xxxx@qq.com"
    [root@chenshifengdeLinuxServer ~]# git config --global user.name "chenshifeng"
    [root@chenshifengdeLinuxServer ~]# git config --global user.email "xxxxx@qq.com"
    [root@chenshifengdeLinuxServer ~]# ssh-keygen -t rsa -C "xxxxx@qq.com"
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): 
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:YZwN2HKQlmhl3jD2RcaW+TGmhMqhgzrZGJGwjRD3/yw xxxx@qq.com
    The key's randomart image is:
    +---[RSA 2048]----+
    |=o.  oB*.++o     |
    |+= .o+B*+** +    |
    |o..o.+.=Bo.+ o   |
    |. . o.o. .. .    |
    | *   .. S        |
    |= .    o         |
    | .    E o        |
    |       .         |
    |                 |
    +----[SHA256]-----+
    [root@chenshifengdeLinuxServer ~]# cd .ssh/
    [root@chenshifengdeLinuxServer .ssh]# ls
    authorized_keys  id_rsa  id_rsa.pub  known_hosts
    

    2)打开 GitHub->setting->SSH and GPG keys ,新建一个 SSH key ,输入公钥 id_ras.pub 中的内容。

    2.2 登录方式

    • 远程用户名密码
    • 公钥私钥认证
      系统管理” -> “管理节点”

    3、节点创建

    3.1 节点连接

    1)在 master 机器上选择新建节点。

    2)先以账号密码登录方式做演示:

    3)保存后刷新状态,可以看到节点已经配置成功。

    3.2 节点运行

    1)在 job 中勾选"限制项目的运行节点",然后选择 slave 节点的标签保存。

    2)构建后在控制台输出中就可以看到任务是由 slave 构建的。

    4、踩坑

    4.1 连接slave失败

    第一次连接slave时可能会连接失败,出现报错:

    /var/jenkins_home/.ssh/known_hosts [SSH] No Known Hosts file was found at /var/jenkins_home/.ssh/known_hosts. Please ensure one is created at this path and that Jenkins can read it.
    这是因为 master 和 slave 直接没有建立信任联系,解决方法如下:

    1)在节点配饰的启动方式中,选择“手动信任”。

    2)保存启动后会在web页面的左下方有个 手动信任的选项 ,点进去选择 是 就 OK 了,这样就建立了信任联系,后面在启动时就畅通无阻了。

    4.2 同步时区

    问题:
    docker 官方镜像使用的都是UTC 标准时间,这就导致了比beijing时间晚8小时。
    解决:
    基于centos 的镜像,系统时区是由/etc/localtime 控制
    基于debian 的镜像,系统时区由/etc/timezone 控制
    一、
    可将系统内的/usr/share/zoneinfo/Asia/Shanghai 文件直接复制到以上位置修改时区
    总共有两个文件要修改,修改/etc/localtime使本地时间正确(对应linux的date指令正确),另外还需要修改/etc/timezone使得时区正确(对应Java时间正确)

    mv /etc/localtime /etc/localtime_bak  # 容器内执行
    echo 'Asia/Shanghai' >/etc/timezone 	# 容器内执行
    docker cp /usr/share/zoneinfo/Asia/Shanghai   [容器ID或名字]:/etc/localtime 	# 容器外执行
    

    二、
    但在基于centos 镜像内,只修改/etc/localtime ,tomcat 或者Nginx取的仍可能是UTC 时区,tomcat可配置catalina 启动文件的JAVA_OPTS参数,修正tomcat的时区

    JAVA_OPTS="-Duser.timezone=GMT+08"
    

    三、
    在 Jenkins 容器启动的时候添加参数

    docker run ... -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai
    

    5、总结

    Jenkins 节点配置方法
    节点上配通 GitHub
    节点上配通 Java 和 Maven
    提速 - 替换 Maven 源

  • 相关阅读:
    Yii2 国际化的问题 zh-CN
    Yii2归档安装法
    MySQL性能优化的最佳20+条经验
    Jquery 选择器汇总
    关于MooTools你应该熟知的6个基本知识
    Android开发效率—Eclipse快捷键
    Failed to fetch URL http://dl-ssl.google.com/android/repository/addons_list-2.xml, reason: Connectio (andriod sdk manager) http://dl-ssl.google.com/android上不去解决方案
    Windows下搭建objective C开发环境
    android studio创建项目
    android studio 安装与环境搭建
  • 原文地址:https://www.cnblogs.com/R-bear/p/15045819.html
Copyright © 2020-2023  润新知