【问题标题】:How to integrate NodeJs with Jenkins?如何将 NodeJs 与 Jenkins 集成?
【发布时间】:2021-09-08 03:30:43
【问题描述】:

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

至于我正在使用的 wdio.conf.js : browserName: '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 ```

【问题讨论】:

    标签: node.js jenkins selenium-chromedriver


    【解决方案1】:

    我通过在 jenkins(也是一个容器)内创建一个 docker 容器并添加了这些版本的 chrome(google-chrome-stable_91.0.4472.114-1_amd64.deb) 和 chromedriver(chromedriver_86.0.4240.22) 使其工作.bin),有时在容器中也可能存在 node_modules/fibers 问题,解决方案是运行以​​下命令:RUN npm uninstall fiber 运行 npm install fiber@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```
    

    【讨论】:

      猜你喜欢
      • 2015-11-09
      • 2011-10-02
      • 2019-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-04
      • 2021-12-24
      相关资源
      最近更新 更多