在 jenkins 管道中创建 selenium 后端
Create a selenium backend in a jenkins pipeline
我在 jenkins 中有一组 webdriver.io 测试 运行。他们 运行 针对由外部公司在 k8s 中管理的硒网格。我想更好地控制我的 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 容器设置硒网格的内容,但我不知道如何在此管道中 运行 这些命令,即使这可行,我也不确定如何到 运行 反对这个网格。
任何人都可以向我提供一个示例,说明我可以做些什么来完成这项工作吗?
有几种方法可以做到这一点。
1.使用 Selenium Grid(理想方式)- 以下是步骤:
- 使用下面的 docker-compose 文件托管一个单独的 selenium 网格。
version: '2'
services:
firefox:
image: selenium/node-firefox:3.14.0-gallium
volumes:
- /dev/shm:/dev/shm
depends_on:
- hub
environment:
HUB_HOST: hub
chrome:
image: selenium/node-chrome:3.14.0-gallium
volumes:
- /dev/shm:/dev/shm
depends_on:
- hub
environment:
HUB_HOST: hub
hub:
image: selenium/hub:3.14.0-gallium
ports:
- "4444:4444"
执行docker-compose up -d
命令启动运行ning localhost:4444
的Selenium Grid
一旦此网格 运行ning,请生成用于 运行 网格的 wdio 配置。
- 生成配置后,运行 您的管道使用您在问题中提到的管道,这将 运行 针对 Selenium Grid
注意:- 使用您生成的用于 selenium 网格的新 wdio
配置。
希望这对您有所帮助。
有 1 种方法不是通过 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.json 的一部分,selenium-webdriver
也是其中的一部分。
我在 jenkins 中有一组 webdriver.io 测试 运行。他们 运行 针对由外部公司在 k8s 中管理的硒网格。我想更好地控制我的 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 容器设置硒网格的内容,但我不知道如何在此管道中 运行 这些命令,即使这可行,我也不确定如何到 运行 反对这个网格。
任何人都可以向我提供一个示例,说明我可以做些什么来完成这项工作吗?
有几种方法可以做到这一点。
1.使用 Selenium Grid(理想方式)- 以下是步骤:
- 使用下面的 docker-compose 文件托管一个单独的 selenium 网格。
version: '2'
services:
firefox:
image: selenium/node-firefox:3.14.0-gallium
volumes:
- /dev/shm:/dev/shm
depends_on:
- hub
environment:
HUB_HOST: hub
chrome:
image: selenium/node-chrome:3.14.0-gallium
volumes:
- /dev/shm:/dev/shm
depends_on:
- hub
environment:
HUB_HOST: hub
hub:
image: selenium/hub:3.14.0-gallium
ports:
- "4444:4444"
执行
docker-compose up -d
命令启动运行ning localhost:4444 的Selenium Grid
一旦此网格 运行ning,请生成用于 运行 网格的 wdio 配置。
- 生成配置后,运行 您的管道使用您在问题中提到的管道,这将 运行 针对 Selenium Grid
注意:- 使用您生成的用于 selenium 网格的新 wdio
配置。
希望这对您有所帮助。
有 1 种方法不是通过 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.json 的一部分,selenium-webdriver
也是其中的一部分。