Job can run successful without executing all script commands on Windows
The Windows version does not always execute all commands of the job's script. The script execution can somehow get interrupted by a command. For me Node's NPM command produces this behavior consistently. It interrupts/stops the script execution without any errors and then returns success.
Steps to reproduce
Create a simple Node.js project with a failing example test (I used mocha).
package.json add test script so it can be called via NPM.
Add a gitlab-ci config file:
stages: - test all_tests: stage: test script: - npm install - npm test
Here's the example project:
Set up a gitlab runner for Node on Windows:
- Install latest Node.js (v8.x) w/ NPM
- Register gitlab-runner
- Use executor: 'shell'
Push project to gitlab and run test job with our Windows based runner.
The test runs successful.
The test should fail.
Relevant logs and/or screenshots
Running with gitlab-ci-multi-runner 9.5.0 (413da38) on abe-test-winsrv2012-nodejs8 (5ec4c44a) Using Shell executor... Running on my-virtual-machine... Cloning repository... Cloning into 'C:/GitLab-Runner/builds/5ec4c44a/0/alexbeer/gitlab-runner-fail-test'... Checking out 1f46c467 as master... Skipping Git submodules setup $ npm install npm notice created a lockfile as package-lock.json. You should commit this file. npm WARN firstname.lastname@example.org No description npm WARN email@example.com No repository field. added 41 packages in 15.147s Job succeeded
For some reason, after this first line of the script (
npm install) it seems to be happy with the result and then ignore the rest.
Here is the log of the same job running on Linux:
Running with gitlab-ci-multi-runner 9.5.0 (413da38) on abe-test-debian-nodejs8 (639122a9) Using Shell executor... Running on my-other-virtual-machine... Cloning repository... Cloning into '/home/gitlab-runner/builds/639122a9/0/alexbeer/gitlab-runner-fail-test'... Checking out 1f46c467 as master... Skipping Git submodules setup $ npm install npm notice created a lockfile as package-lock.json. You should commit this file. npm WARN firstname.lastname@example.org No description npm WARN email@example.com No repository field. added 41 packages in 7.119s $ npm test > firstname.lastname@example.org test /home/gitlab-runner/builds/639122a9/0/alexbeer/gitlab-runner-fail-test > mocha Test 1) will fail 0 passing (59ms) 1 failing 1) Test will fail: AssertionError: We're dooomed!!! at Context.<anonymous> (test/fail.js:5:9) npm ERR! Test failed. See above for more details. ERROR: Job failed: exit status 1
Instead of 'Job succeeded' this one continues with the next line of the job script
npm test as expected.
Not every command interrupts the script. To investigate where the bug might be, I used some
$echo commands within the job script to see what's going on and they did not stop the process. But a simple command to show NPM's version
npm --version did stop the process.
OS: Microsoft Windows Server 2012 > .\gitlab-runner.exe --version Version: 9.5.0 Git revision: 413da38 Git branch: 9-5-stable GO version: go1.8.3 Built: Tue, 22 Aug 2017 13:40:42 +0000 OS/Arch: windows/amd64 > node --version v8.4.0 > npm --version 5.3.0