Jenkins์์ ์ฌ๋ฌ ๋ฒ ํ ์คํธ๋ฅผ ์คํํ ์ ์์ต๋๋ค. ๋ก์ปฌ ์ปดํจํฐ์์ ํ ์คํธ๋ฅผ ์ฌ๋ฌ ๋ฒ ์คํํ ์ ์์ผ๋ฉฐ ํญ์ ์ ๋๋ก ์๋ํ์ง๋ง Jenkins์์ ESOCKETTIMEDOUT ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๋ณต๊ตฌํ ์ ์๋ค๋ ์ ์ ์ธ๊ธํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค(Jenkins์์ ์์
์ ๋ฐ๋ณตํด์ ์คํํ๋ฉด ํญ์ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํจ). ํ์ง๋ง ์ค๋ฅ ์์ด 2-3๋ฒ ์คํํ ์ ์์์ต๋๋ค(๊ทธ๋์ ์๋ํ๋ ๊ฒ์ ๋ณด์์ต๋๋ค).
ํ
์คํธ๋ Chrome์์ ์์๋ฉ๋๋ค. Jenkins ์ฌ๋ ์ด๋ธ๋ MacMini์
๋๋ค. ์
๋ ๋ ํธ์คํธ ๋ฐ ํฌํธ๋ฅผ ์ ๊ณตํด๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์ต๋๋ค.
์์ธํ ๋ก๊ทธ ์์ค์ Jenkins ์ค๋ฅ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
+ yarn run local-webserver
yarn run v1.3.2
$ forever start -s ./node_modules/.bin/http-server ./demo-app -s
warn: --minUptime not set. Defaulting to: 1000ms
warn: --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info: Forever processing file: ./node_modules/.bin/http-server
Done in 0.44s.
+ yarn run wdio
yarn run v1.3.2
$ /Users/jenkins/workspace/family-portal-deploy-test/e2etests/node_modules/.bin/wdio
[18:48:07] COMMAND POST "/wd/hub/session"
[18:48:07] DATA {"desiredCapabilities":{"javascriptEnabled":true,"locationContextEnabled":true,"handlesAlerts":true,"rotatable":true,"maxInstances":5,"browserName":"chrome","loggingPrefs":{"browser":"ALL","driver":"ALL"},"requestOrigins":{"url":"http://webdriver.io","version":"4.12.0","name":"webdriverio"}}}
ERROR: ESOCKETTIMEDOUT
chrome
at new RuntimeError (/Users/jenkins/workspace/family-portal-deploy-test/e2etests/node_modules/webdriverio/build/lib/utils/ErrorHandler.js:144:12)
at Request._callback (/Users/jenkins/workspace/family-portal-deploy-test/e2etests/node_modules/webdriverio/build/lib/utils/RequestHandler.js:330:43)
at self.callback (/Users/jenkins/workspace/family-portal-deploy-test/e2etests/node_modules/request/request.js:186:22)
at emitOne (events.js:116:13)
at Request.emit (events.js:211:7)
at ClientRequest.<anonymous> (/Users/jenkins/workspace/family-portal-deploy-test/e2etests/node_modules/request/request.js:816:16)
at Object.onceWrapper (events.js:313:30)
at emitNone (events.js:106:13)
at ClientRequest.emit (events.js:208:7)
at Socket.emitTimeout (_http_client.js:708:34)
at Object.onceWrapper (events.js:313:30)
at emitNone (events.js:106:13)
at Socket.emit (events.js:208:7)
at Socket._onTimeout (net.js:407:8)
at ontimeout (timers.js:475:11)
at tryOnTimeout (timers.js:310:5)
error Command failed with exit code 1.
Jenkins์ ์์ ์ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค.
WebdriverIO๊ฐ WebDriver ๋ฐฑ์๋(์๋ง๋ Chromedriver)์ ์ฐ๊ฒฐํ ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๊ฒ์ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ๋๋ฌธ์ผ ์ ์์ง๋ง WebdriverIO์ ๊ด๋ จ์ด ์์ ๊ฐ๋ฅ์ฑ์ ๋ฎ์ต๋๋ค. ๋๋ผ์ด๋ฒ ์ค์ ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋์์ ๋ง์ ํ ์คํธ๋ฅผ ์คํํ๊ณ ์์ต๋๊น? WebdriverIO์์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฐ๋ฆฌ๊ฐ ํ ์ ์๋ ์ผ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด๊ฒ์ ๋ซ์ต๋๋ค. ์ธ์ ๋ ์ง ์ง์์ ๋ฌธ์ํ์ธ์. ์ถ๊ฐ ์ง๋ฌธ์ด ์๋ ๊ฒฝ์ฐ.
์๋ ํ์ธ์ @christian-bromann ๋น ๋ฅธ ์๋ต์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๋๋ ํ๋์ ํ ์คํธ(ํ๋์ ๊ธฐ๋ฅ), ๋ก๊ทธ์ธ๋ง ์คํํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ฑฑ์ ๋ฉ๋๋ค. ๋ํ ์ธ๊ธํ ๋ฐ์ ๊ฐ์ด Jenkins์์ 2-3๋ฒ ์๋ํ๋ ๊ฒ์ ๋ณผ ์ ์์์ง๋ง ์คํจํ๊ธฐ ์์ํ์ต๋๋ค(ํญ์ ๋์ผํ ์ค๋ฅ๋ก ). ํ ์คํธ๊ฐ ๋๋ฌ์ ๋ ์ ๋ ๋/์น๋๋ผ์ด๋ฒ์ ์ฐ๊ฒฐ์ด ์ ๋์ด์ง๊ฑฐ๋ ๋ซํ์ง ์์ ์ ์์ต๋๊น? ์ด์ ์คํ์์ ์ด๋ฆฐ ์ฐ๊ฒฐ์ด ์์ ์ ์์ต๋๊น?
๋ค๋ฅธ ์น์ ํ ์คํธํ๋ฉด์ ๋ค๋ฅธ ๋ค๋ฅธ ํ ์คํธ๋ฅผ ์ํํ๊ณ Jenkins์์ ์ ์์ ์ ๊ตฌ์ฑํ์ผ๋ฉฐ ๋์ผํ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค. ์ฒซ ๋ฒ์งธ ํ ์คํธ๋ ์ ์๋ํ๊ณ ESOCKETTIMEDOUT๊ณผ ํจ๊ป ์คํจํ๊ธฐ ์์ํ์ต๋๋ค.
๋ค์ ๋งํ์ง๋ง, ๋ฌธ์ ์์ด ์ฌ๋ฌ ๋ฒ ๋ก์ปฌ์์ ํด๋น ํ ์คํธ๋ฅผ ์คํํ ์ ์์ต๋๋ค.
๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฒช์ ์ ์๋ ์ฌ๋๋ค์ ์ํด ํค๋๋ฆฌ์ค ํฌ๋กฌ์ ์ฌ์ฉํด ๋ณด์๋๋ฐ ๋ฉฐ์น ์ ๋ถํฐ ์ ์๋ํ๊ณ ์์ต๋๋ค. D ๋ฐ๋ผ์ "ํค๋๋ฆฌ์ค" chromeOption์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ณ ์๋ํ๋์ง ํ์ธํ์ญ์์ค.
์๋ ํ์ธ์ @LaiaPR , ์ค๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ ์ํ ๋๋ก "ํค๋๋ฆฌ์ค" ์ต์ ์ ์ถ๊ฐํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ฉ๋๋ค. ๊ฐ์ฌ ํด์!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฒช์ ์ ์๋ ์ฌ๋๋ค์ ์ํด ํค๋๋ฆฌ์ค ํฌ๋กฌ์ ์ฌ์ฉํด ๋ณด์๋๋ฐ ๋ฉฐ์น ์ ๋ถํฐ ์ ์๋ํ๊ณ ์์ต๋๋ค. D ๋ฐ๋ผ์ "ํค๋๋ฆฌ์ค" chromeOption์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ณ ์๋ํ๋์ง ํ์ธํ์ญ์์ค.