jenkins+ansible+robot搭建

1. 源码

1.1 需要准备dockerfile,用于生成jenkins镜像,不同于通用的jenkins镜像,里面需要安装ansible,并安装sshpass,以便直接使用密码登录。另外还需要将ansible的配置文件中的host_key_checking去掉,以免第一次登录主机,需要手动输入yes/no。

FROM daocloud.io/library/jenkins
USER root
RUN apt-get update && apt-get install -y ansible && apt-get install -y sshpass
RUN sed -i 's/#host_key_checking/host_key_checking/g' /etc/ansible/ansible.cfg
USER jenkins

1.2 准备hosts文件,为ansible的配置文件,由于jenkins默认使用jenkins用户ssh,还需要在hosts里面指定root用户。

[ansiblehost]
192.168.123.241  ansible_ssh_user=root ansible_ssh_pass=dangerous

1.3 最终需要执行的测试脚本host_healthy.robot。

2. 创建镜像

使用dockerfile创建jenkins+ansible的镜像,并放入仓库。

3.创建ansible执行机,并安装robotframework插件。

yum install ansible
pip install robotframework
pip install robotframework-selenium2library

4. 使用k8s将生成的镜像拉起

注意需要共享文件系统映射
在host上面创建

mkdir /var/jenkins_home/
chmod 777 /var/jenkins_home/

5. 配置jenkins

安装robot插件
5.1 git项目,拉取git代码
5.2 构建阶段使用execute shell
执行ansible命令。
注意robot的--outputdir参数需要放在执行文件前面。使用这个选项是因为后面publish阶段,需要将结果放到共享文件夹,以便jenkins取用。

ansible ansiblehost -i hosts -m copy -a 'src=dcetest.robot dest=/var/jenkins_home/dcetest.robot'
ansible ansiblehost -i hosts -m file -a 'path=/var/jenkins_home/result state=directory'
ansible ansiblehost -i hosts -m shell -a 'robot --outputdir  /var/jenkins_home/result /var/jenkins_home/dcetest.robot'
ansible localhost -m file -a 'path=/var/jenkins_home/result state=directory'
ansible ansiblehost -i hosts -m fetch -a 'src=/var/jenkins_home/result/output.xml dest=/var/jenkins_home/workspace/robot flat=yes'
ansible ansiblehost -i hosts -m fetch -a 'src=/var/jenkins_home/result/report.html dest=/var/jenkins_home/workspace/robot flat=yes'
ansible ansiblehost -i hosts -m fetch -a 'src=/var/jenkins_home/result/log.html dest=/var/jenkins_home/workspace/robot flat=yes'

拷贝git下载的执行脚本到ansible执行机
给ansible执行机创建结果保存的目录
执行测试脚本,注意结果保存
在jenkins本机创建结果保存文件夹
将ansible执行机的执行结果去到jenkins本机的结果保存目录

5.3 构建后的操作选择publish robot
最好结果文件的目录使用默认目录,即不填,指定目录好像没法看到report.html和log.html,提示找不到文件。
另外jenkins需要设置js。

1 打开jenkins 首页

2 进入系统管理

3 进入脚本命令行

在输入框输入如下代码,并执行
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")  
image.png

你可能感兴趣的:(jenkins+ansible+robot搭建)