如何将NodeJ与Jenkins集成



我正在尝试使用Webdriverio和chrome将测试与Jenkins集成。我遇到的问题是,即使测试在我的本地机器上运行,它们在Jenkins上也会失败,收到的错误是:同样重要的是,这个詹金斯服务器不在我的本地机器上,我不知道如何在上面安装chrome

至于我使用的wdio.conf.js:浏览器名称:'chrome',baseUrl:'http://localhost',服务:["chromedriver"],


> publicrepo@1.0.0 test
> npx wdio run ./wdio.conf.js

Execution of 1 workers started at 2021-06-24T15:30:35.507Z
2021-06-24T15:30:35.594Z INFO @wdio/cli:launcher: Run onPrepare hook
2021-06-24T15:30:35.595Z INFO chromedriver: Start Chromedriver (/data/bms/webapps/jenkins/workspace/) with args --port=9515 --url-base=/
2021-06-24T15:30:35.635Z WARN chromedriver: node:internal/modules/cjs/loader:944
2021-06-24T15:30:35.635Z WARN chromedriver:   throw err;
2021-06-24T15:30:35.635Z WARN chromedriver:   ^
2021-06-24T15:30:35.635Z WARN chromedriver: 
2021-06-24T15:30:35.635Z WARN chromedriver: Error: Cannot find module '/data/bms/webapps/jenkins/workspace/'
2021-06-24T15:30:35.636Z WARN chromedriver: Require stack:
2021-06-24T15:30:35.636Z WARN chromedriver: - /data/bms/webapps/jenkins/workspace/
2021-06-24T15:30:35.636Z WARN chromedriver:     at Function.Module._resolveFilename (node:internal/modules/cjs/loader:941:15)
2021-06-24T15:30:35.636Z WARN chromedriver:     at Function.Module._load (node:internal/modules/cjs/loader:774:27)
2021-06-24T15:30:35.636Z WARN chromedriver:     at Module.require (node:internal/modules/cjs/loader:1013:19)
2021-06-24T15:30:35.636Z WARN chromedriver:     at require (node:internal/modules/cjs/helpers:93:18)
2021-06-24T15:30:35.636Z WARN chromedriver:     at Object.<anonymous> (/data/bms/webapps/jenkins/workspace/chromedriver/chromedriver:4:17)
2021-06-24T15:30:35.636Z WARN chromedriver:     at Module._compile (node:internal/modules/cjs/loader:1109:14)
2021-06-24T15:30:35.636Z WARN chromedriver:     at Object.Module._extensions..js (node:internal/modules/cjs/loader:1138:10)
2021-06-24T15:30:35.636Z WARN chromedriver:     at Module.load (node:internal/modules/cjs/loader:989:32)
2021-06-24T15:30:35.636Z WARN chromedriver:     at Function.Module._load (node:internal/modules/cjs/loader:829:14)
2021-06-24T15:30:35.636Z WARN chromedriver:     at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:76:12) {
2021-06-24T15:30:35.636Z WARN chromedriver:   code: 'MODULE_NOT_FOUND',
2021-06-24T15:30:35.636Z WARN chromedriver:   requireStack: [
2021-06-24T15:30:35.636Z WARN chromedriver:     '/data/bms/webapps/jenkins/workspace/Tests/Wdio/node_modules/chromedriver/lib/chromedriver/chromedriver'
2021-06-24T15:30:35.636Z WARN chromedriver:   ]
2021-06-24T15:30:35.636Z WARN chromedriver: }
2021-06-24T15:30:45.602Z ERROR @wdio/cli:utils: A service failed in the 'onPrepare' hook
Error: timeout
at Timeout.timeoutFunc (/data/bms/webapps/jenkins/workspace/Tests/Wdio/node_modules/tcp-port-used/index.js:204:25)
at listOnTimeout (node:internal/timers:557:17)
at processTimers (node:internal/timers:500:7)
Continue...
2021-06-24T15:30:45.604Z INFO @wdio/cli:launcher: Run onWorkerStart hook
2021-06-24T15:30:45.605Z INFO @wdio/local-runner: Start worker 0-0 with arg: run,./wdio.conf.js
[0-0] 2021-06-24T15:30:46.130Z INFO @wdio/local-runner: Run worker command: run
[0-0] RUNNING in chrome - /test/specs/example.e2e.js
[0-0] 2021-06-24T15:30:46.363Z INFO webdriver: Initiate new session using the WebDriver protocol
[0-0] 2021-06-24T15:30:46.364Z INFO webdriver: [POST] http://localhost:9515/session
[0-0] 2021-06-24T15:30:46.364Z INFO webdriver: DATA {
[0-0]   capabilities: {
[0-0]     alwaysMatch: { browserName: 'chrome', acceptInsecureCerts: true },
[0-0]     firstMatch: [ {} ]
[0-0]   },
[0-0]   desiredCapabilities: { browserName: 'chrome', acceptInsecureCerts: true }
[0-0] }
[0-0] (node:6536) DeprecationWarning: "Runner(suite: Suite, delay: boolean)" is deprecated. Use "Runner(suite: Suite, {delay: boolean})" instead.
[0-0] (Use `node --trace-deprecation ...` to show where the warning was created)
[0-0] 2021-06-24T15:30:46.384Z ERROR webdriver: RequestError: connect ECONNREFUSED 127.0.0.1:9515
[0-0]     at ClientRequest.<anonymous> (/data/bms/webapps/jenkins/workspace/Tests/Wdio/node_modules/got/dist/source/core/index.js:956:111)
[0-0]     at Object.onceWrapper (node:events:472:26)
[0-0]     at ClientRequest.emit (node:events:377:35)
[0-0]     at ClientRequest.emit (node:domain:470:12)
[0-0]     at ClientRequest.origin.emit (/data/bms/webapps/jenkins/workspace/Tests/Wdio/node_modules/@szmarczak/http-timer/dist/source/index.js:39:20)
[0-0]     at Socket.socketErrorListener (node:_http_client:447:9)
[0-0]     at Socket.emit (node:events:365:28)
[0-0]     at Socket.emit (node:domain:470:12)
[0-0]     at emitErrorNT (node:internal/streams/destroy:193:8)
[0-0]     at emitErrorCloseNT (node:internal/streams/destroy:158:3)
[0-0]     at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1133:16)
[0-0] 2021-06-24T15:30:46.384Z ERROR @wdio/runner: Error: Failed to create session.
[0-0] Unable to connect to "http://localhost:9515/", make sure browser driver is running on that address.
[0-0] If you use services like chromedriver see initialiseServices logs above or in wdio.log file as the service might had problems to start the driver.
[0-0]     at Object.startWebDriverSession (/data/bms/webapps/jenkins/workspace/Tests/Wdio/node_modules/webdriver/build/utils.js:68:15)
[0-0]     at processTicksAndRejections (node:internal/process/task_queues:96:5)
[0-0]     at async Function.newSession (/data/bms/webapps/jenkins/workspace/Tests/Wdio/node_modules/webdriver/build/index.js:58:45)
[0-0]     at async Object.remote (/data/bms/webapps/jenkins/workspace/Tests/Wdio/node_modules/webdriverio/build/index.js:67:22)
[0-0]     at async Runner._startSession (/data/bms/webapps/jenkins/workspace//Tests/Wdio/node_modules/@wdio/runner/build/index.js:216:56)
[0-0]     at async Runner._initSession (/data/bms/webapps/jenkins/workspace/Tests/Wdio/node_modules/@wdio/runner/build/index.js:172:25)
[0-0]     at async Runner.run (/data/bms/webapps/jenkins/workspace//Tests/Wdio/node_modules/@wdio/runner/build/index.js:87:19)
[0-0] FAILED in chrome - /test/specs/example.e2e.js
2021-06-24T15:30:46.497Z INFO @wdio/cli:launcher: Run onComplete hook
Spec Files:  0 passed, 1 failed, 1 total (100% completed) in 00:00:10 ```

我在jenkins(也是一个容器(中创建了一个docker容器,并添加了这些版本的chrome(google-chrome-table_91.0.4472.114-1_amd64.deb(和chromedriver(chromedriver_86.0.4240.22.bin(,有时容器中的node_modules/fires可能会出现问题,解决方案是运行以下命令:run npm uninstall fibersRUN npm安装fibers@4.0.3(节点版本14(。

Dockerfile:


WORKDIR /test/test
RUN apt-get update -y && 
apt-get install -y 
packagekit-gtk3-module 
libx11-xcb1 libdbus-glib-1-2 
dos2unix
# Download/unpack Firefox
RUN wget https://download-installer.cdn.mozilla.net/pub/firefox/releases/83.0/linux-x86_64/en-US/firefox-83.0.tar.bz2 -q -P /opt && 
cd /opt && tar xjf firefox-83.0.tar.bz2 && 
rm -f firefox-83.0.tar.bz2 && 
ln -s /opt/firefox/firefox /usr/bin/firefox
# Download/unpack GeckoDriver (Selenium driver for Firefox)
RUN wget https://github.com/mozilla/geckodriver/releases/download/v0.28.0/geckodriver-v0.28.0-linux64.tar.gz -q && 
tar xzf geckodriver-v0.28.0-linux64.tar.gz && 
rm -f geckodriver-v0.28.0-linux64.tar.gz && 
chmod +x geckodriver && 
mv geckodriver /usr/bin/geckodriver
# Install Google Chrome from local .deb file
COPY test/docker/binaries/ .
RUN chmod 755 google-chrome-stable_91.0.4472.114-1_amd64.deb && 
apt install ./google-chrome-stable_91.0.4472.114-1_amd64.deb -y && 
rm google-chrome-stable_91.0.4472.114-1_amd64.deb
# Set permissions and move/rename ChromeDriver to somewhere under $PATH
RUN chmod 755 chromedriver_86.0.4240.22.bin && 
mv chromedriver_86.0.4240.22.bin /usr/bin/chromedriver

RUN apt install default-jre -y
RUN npm install
RUN npm uninstall fibers
RUN npm install fibers@4.0.3```

最新更新