运行 来自 GIT 的 selenium 测试,在远程 Selenium 网格上使用 Jenkins

Running selenium test from GIT with Jenkins on remote Selenium grid

我正在尝试 运行 来自 git 的 selenium 测试,并在 docker 的 selenium 网格上使用 Jenkins 作业。

作业应该获取 .js,它正在测试和连接到网格。该文件应该在 jenkins 中使用 build 执行。由于我将 nodeJS 与 selenium 一起使用,因此我需要 Jenkins 来获取所有请求的 npm 包。

在 Jenkins 中,我下载了 nodeJS 插件,在 Global Tool Configuration 中,我在 Global npm packages to install 列中填写了 selenium-webdriver@4.1.2(我选择的 nodeJS 版本是 18.1.0)

作业成功获得 git 回购。在 Build 我有简单的命令 node login.js.

不幸的是,当我尝试构建该作业时,我仍然得到 MODULE NOT FOUND 的 selenium-webdriver。

在构建日志中有不同的模块错误,因为我试图将 node_modules/selenium-wedriver 直接添加到 repo。但我想这不是正确的方法。

谁能给我指出正确的方向?

Running as SYSTEM
Building in workspace /var/jenkins_home/workspace/sele-login
The recommended git tool is: NONE
using credential 34b86306-efa8-432e-92fb-63b586339585
 > git rev-parse --resolve-git-dir /var/jenkins_home/workspace/sele-login/.git # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url git@github.com:MrWolfcan/sele-test.git # timeout=10
Fetching upstream changes from git@github.com:MrWolfcan/sele-test.git
 > git --version # timeout=10
 > git --version # 'git version 2.30.2'
using GIT_SSH to set credentials test2
 > git fetch --tags --force --progress -- git@github.com:MrWolfcan/sele-test.git +refs/heads/*:refs/remotes/origin/* # timeout=10
Seen branch in repository origin/main
Seen 1 remote branch
 > git show-ref --tags -d # timeout=10
Checking out Revision 4cb9f780e70818120c1128aad85b18c1f71ad4dd (origin/main)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f 4cb9f780e70818120c1128aad85b18c1f71ad4dd # timeout=10
Commit message: "Add files via upload"
 > git rev-list --no-walk 37e8fc5193006e5820cc66209c10a8f799478786 # timeout=10
[sele-login] $ /bin/sh -xe /tmp/jenkins11143974131067136179.sh
+ node login.js
node:internal/modules/cjs/loader:942
  throw err;
  ^

Error: Cannot find module 'ws'
Require stack:
- /var/jenkins_home/workspace/sele-login/node_modules/selenium-webdriver/lib/webdriver.js
- /var/jenkins_home/workspace/sele-login/node_modules/selenium-webdriver/lib/http.js
- /var/jenkins_home/workspace/sele-login/node_modules/selenium-webdriver/http/index.js
- /var/jenkins_home/workspace/sele-login/node_modules/selenium-webdriver/index.js
- /var/jenkins_home/workspace/sele-login/login.js
    at Module._resolveFilename (node:internal/modules/cjs/loader:939:15)
    at Module._load (node:internal/modules/cjs/loader:780:27)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (/var/jenkins_home/workspace/sele-login/node_modules/selenium-webdriver/lib/webdriver.js:33:19)
    at Module._compile (node:internal/modules/cjs/loader:1105:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Module._load (node:internal/modules/cjs/loader:827:12)
    at Module.require (node:internal/modules/cjs/loader:1005:19) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/var/jenkins_home/workspace/sele-login/node_modules/selenium-webdriver/lib/webdriver.js',
    '/var/jenkins_home/workspace/sele-login/node_modules/selenium-webdriver/lib/http.js',
    '/var/jenkins_home/workspace/sele-login/node_modules/selenium-webdriver/http/index.js',
    '/var/jenkins_home/workspace/sele-login/node_modules/selenium-webdriver/index.js',
    '/var/jenkins_home/workspace/sele-login/login.js'
  ]
}

Node.js v18.1.0
Build step 'Execute shell' marked build as failure
Finished: FAILURE

所以我开始工作了。

我唯一做的就是在步骤执行 node login.js.

之前添加另一个 Build step > Execute shell - npm install

所以它正在做的(我想)是 npm install 将尝试在每次构建时从 package.json 安装软件包。

现在我要找出如何缓存它:)