首页 > 解决方案 > 在詹金斯管道中创建硒后端

问题描述

我有一组在 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 网格的信息,但我不知道如何在此管道中运行这些命令,即使这可行,我也不确定如何针对此网格运行。

谁能给我一个例子来说明我可以做些什么来完成这项工作?

标签: dockerseleniumkubernetesjenkins-pipelinewebdriver-io

解决方案


有一种方法不是通过 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的一部分,是它的一部分。


推荐阅读