docker - 在詹金斯管道中创建硒后端
问题描述
我有一组在 jenkins 中运行的 webdriver.io 测试。它们运行在由外部公司在 k8s 中管理的 selenium 网格上。我想对我的 selenium 后端有更多的控制权,所以我试图找到一种在我的 jenkins 管道中设置 selenium 后端的方法。不过,我缺乏 docker/k8s 网络知识让我望而却步。
这大概是我的管道的样子:
agent {
kubernetes {
defaultContainer 'jnlp'
yaml """
apiVersion: v1
kind: Pod
spec:
containers:
- name: node
image: node:12.14.1
command:
- cat
tty: true
"""
}
}
stages {
stage('Checkout codebase') {
// do checkout
}
}
stage('Build') {
steps {
container('node') {
sh '''
npm install --production
'''
}
}
}
stage('Test-Mocha') {
steps {
container('node') {
sh "node_modules/.bin/wdio ./test/config/wdio.conf.js --spec ./test/helpers/sandBox/sandbox1.js"
}
}
}
}
}
我想要的是针对 chrome 运行我的测试。任何可以让我运行 chrome 浏览器的解决方案都很好。
我试图用 selenium/standalone-chrome 指定一个额外的容器,但我不知道如何针对该容器运行我的测试。我还阅读了有关使用 docker 容器设置 selenium 网格的信息,但我不知道如何在此管道中运行这些命令,即使这可行,我也不确定如何针对此网格运行。
谁能给我一个例子来说明我可以做些什么来完成这项工作?
解决方案
有一种方法不是通过 Kubernetes。
使用下图,其中安装了 nodejs 和 chrome。
agent {
kubernetes {
defaultContainer 'jnlp'
yaml """
apiVersion: v1
kind: Pod
spec:
containers:
- name: node-chrome
image: larcado/nodejs-chrome
command:
- cat
tty: true
"""
}
}
stages {
stage('Checkout codebase') {
// do checkout
}
}
stage('Build') {
steps {
container('node') {
sh '''
npm install --production
'''
}
}
}
stage('Test-Mocha') {
steps {
container('node') {
sh "node_modules/.bin/wdio ./test/config/wdio.conf.js --spec ./test/helpers/sandBox/sandbox1.js"
}
}
}
}
}
确保作为 package.jsonselenium-webdriver
的一部分,是它的一部分。
推荐阅读
- c# - 为什么 C# 与 .Net 紧密耦合?
- swift - 为什么我的 NavigationBar 颜色在 Swift 中没有改变?
- docker - 获取 CPU 利用率大于的 Docker 统计信息?
- laravel - laravel + vue js API 存储功能不适用于共享主机,但在 localhost 上运行良好
- python - 根据其他两列是否匹配为新列添加值
- python - GCP AI 平台:脚本 _name_ 安装在 '/root/.local/bin' 中,它不在 PATH 上
- java - 如何设置场景中心的按钮?
- macos - NGRok Mac OS 自动注销
- android - 单击按钮时应发生页面意图
- regex - 正则表达式检测单行