ci

CI/CD 工具链的分分合合

作案动机

一种对 ci/cd 工具的轻量化和解耦的尝试?

Jenkins 的传统集群方式,是使用不同环境的服务器构成不同能力的 Jenkins 节点,由主节点根据任务 环节的需要,调度不同能力的子节点来完成构建或部署任务。

进入容器云时代,情况发生了变化,我们可以使用不同能力的 Jenkins 镜像,使用 Kubernetes 插件来 完成这种任务的拆分和调度,为此,我构建了一个包含所有我们平时用到的工具的 Jenkins 镜像,简化了 节点的扩展和选择过程。

然而随着学习和应用的深入,我意识到这种做法有几个问题:

  • DevOps 中隐含着发挥个人能力的愿景,工具链的所谓大而全,只不过是在画一个比较大的圈,使用这样的 一套 Jenkins,还是要被其中所包含的仅有的工具中进行选择,对身陷其中的技术人员绝不能说是友好,也 绝不是鼓励各展所长的态度。

  • 现有的功能测试、接口测试、压力测试等工具,越来越专业化,往往会有各自的工作集群调度甚至是托管方案, 例如 selenium grid、JMeter 集群等。

实用 Jenkins Docker 镜像

Jenkins 跟 GKE 的 Load Balancer 不兼容怎么办?当然是选择原谅他啊。

最近在玩 Google 的 Container Engine,发现 Jenkins 的安装过程的安全防护跟 GKE 的负载均衡器有点不和谐。要在启动初始化过程之前,完成对 CSRF 特性的调整。弄着弄着就收不住了,所以就有了对我那个 “要你命3000” Jenkins 镜像的一次大升级。

利用 Gitlab 为 Sonarqube 提供单点登录服务

Gitlab 很贴心的提供了一个 Oauth 2 功能,可以作为 CI/CD 工具链的认证中心来使用。

Sonarqube 的官方插件只有一个 Github 的支持插件,因此这一功能需要借助第三方插件来完成。

项目地址

https://gitlab.talanlabs.com/gabriel-allaigre/sonar-auth-gitlab-plugin

下载地址

http://nexus.talanlabs.com/content/groups/public_release/com/synaptix/sonar-auth-gitlab-plugin/1.0.0/sonar-auth-gitlab-plugin-1.0.0.jar

Robotframework + selenium2library 实现 Headless 模式的 Web 功能测试

今天来点小技巧凑个数。 感谢健哥提供的 Hello world 样本。

之前因为做一些 CI/CD 的尝试,做了个要你命三千一样的 Jenkins 镜像(docker pull dustise/jenkins),其中包含了 Maven、Sornar Scanner、Robot Framework 以及 Git/Subversion、Kubectl 等一系列的相关工具。

一旦用起来,测试的兄弟发现了个大问题,基于 selenium2library 的页面功能测试无法完成了,回头一想,镜像里面压根没有浏览器,怎么可能执行浏览器测试呢。

安装

首先就要安装浏览器了,我这里选择了 FireFox。

apt-get install -y firefox

为了让 selenium2library 能够同 FireFox 互动,还需要 geckodriver 的支持,这个软件提供了 WebDriver 协议所需的 HTTP API,能够和 FireFox 这样的 Gecko 浏览器进行通信。

页面