Error Deploying from Remote Server (CI)

Good afternoon,

I recently deployed to production my first trellis/bedrock/sage site! I love Trellis and now I can’t imagine making Wordpress sites without it.

After the deploy I wanted to get some automatic deployments going on a Digital Ocean Droplet I have.

I have run into a lot of issues along the way (primarily related to SSH keys and missing dependencies). So far I have been able to fix these problem but I am at a point where I don’t know what to do. I’m hoping someone here can point me in the right direction.

Using (Please note that I did a find and replace on my sites name in the following code, my site is not attempting to deploy to example.com):

ansible-playbook deploy.yml -f 2 -e env=staging -e site=example.com -vvv

Things go wrong on the ‘run gulp’ task:

TASK [deploy : Run gulp] *******************************************************
[1;30mtask path: /var/lib/jenkins/workspace/example/example-deploy-staging/trellis/deploy-hooks/build-before.yml:19[0m
[0;34mUsing module file /usr/lib/python2.7/dist-packages/ansible/modules/commands/command.py[0m
[0;34m<XXX.XXX.XXX.XX> ESTABLISH LOCAL CONNECTION FOR USER: jenkins[0m
[0;34m<XXX.XXX.XXX.XX> EXEC /bin/sh -c 'echo ~ && sleep 0'[0m
[0;34m<XXX.XXX.XXX.XX> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /var/lib/jenkins/.ansible/tmp/ansible-tmp-1494007675.35-148670055240878 `" && echo ansible-tmp-1494007675.35-148670055240878="` echo /var/lib/jenkins/.ansible/tmp/ansible-tmp-1494007675.35-148670055240878 `" ) && sleep 0'[0m
[0;34m<XXX.XXX.XXX.XX> PUT /tmp/tmp0VX2wv TO /var/lib/jenkins/.ansible/tmp/ansible-tmp-1494007675.35-148670055240878/command.py[0m
[0;34m<XXX.XXX.XXX.XX> EXEC /bin/sh -c 'chmod u+x /var/lib/jenkins/.ansible/tmp/ansible-tmp-1494007675.35-148670055240878/ /var/lib/jenkins/.ansible/tmp/ansible-tmp-1494007675.35-148670055240878/command.py && sleep 0'[0m
[0;34m<XXX.XXX.XXX.XX> EXEC /bin/sh -c '/usr/bin/python /var/lib/jenkins/.ansible/tmp/ansible-tmp-1494007675.35-148670055240878/command.py; rm -rf "/var/lib/jenkins/.ansible/tmp/ansible-tmp-1494007675.35-148670055240878/" > /dev/null 2>&1 && sleep 0'[0m
[0;37mSystem info:[0m
[0;37m  Ansible 2.3.0.0; Linux[0m
[0;37m  Trellis at "Enable per-site setup for permalink structure"[0m
[0;37m---------------------------------------------------[0m
[0;31mfs.js:914[0m
[0;31m  return binding.readdir(pathModule._makeLong(path), options.encoding);[0m
[0;31m                 ^[0m
[0;31m[0m
[0;31mError: ENOENT: no such file or directory, scandir '/var/lib/jenkins/workspace[0m
[0;31m/example/example-deploy-staging/site/web/app/themes/example[0m
[0;31m/node_modules/node-sass/vendor'[0m
[0;31m    at Object.fs.readdirSync (fs.js:914:18)[0m
[0;31m    at Object.getInstalledBinaries (/var/lib/jenkins/workspace/example[0m
[0;31m/example-deploy-staging/site/web/app/themes/[0m
[0;31m/node_modules/node-sass/lib/extensions.js:121:13)[0m
[0;31m    at foundBinariesList (/var/lib/jenkins/workspace/example/[0m
[0;31mexample-deploy-staging/site/web/app/themes/example/node_modules/node-[0m
[0;31msass/lib/errors.js:20:15)[0m
[0;31m    at foundBinaries (/var/lib/jenkins/workspace/example/example[0m
[0;31m-deploy-staging/site/web/app/themes/example/node_modules/node-[0m
[0;31msass/lib/errors.js:15:5)[0m
[0;31m    at Object.module.exports.missingBinary (/var/lib/jenkins/workspace/example[0m
[0;31m/example-deploy-staging/site/web/app/themes/example[0m
[0;31m/node_modules/node-sass/lib/errors.js:45:5)[0m
[0;31m    at module.exports (/var/lib/jenkins/workspace/example/example[0m
[0;31m-deploy-staging/site/web/app/themes/example/node_modules/node-[0m
[0;31msass/lib/binding.js:15:30)[0m
[0;31m    at Object.<anonymous> (/var/lib/jenkins/workspace/example/example[0m
[0;31m-deploy-staging/site/web/app/themes/example/node_modules/node-[0m
[0;31msass/lib/index.js:14:35)[0m
[0;31m    at Module._compile (module.js:571:32)[0m
[0;31m    at Object.Module._extensions..js (module.js:580:10)[0m
[0;31m    at Module.load (module.js:488:32)[0m
[0;31mfatal: [XXX.XXX.XXX.XX]: FAILED! => {[0m
[0;31m    "changed": true, [0m
[0;31m    "cmd": [[0m
[0;31m        "gulp", [0m
[0;31m        "--production"[0m
[0;31m    ], [0m
[0;31m    "delta": "0:00:02.198393", [0m
[0;31m    "end": "2017-05-05 18:07:57.676272", [0m
[0;31m    "failed": true, [0m
[0;31m    "invocation": {[0m
[0;31m        "module_args": {[0m
[0;31m            "_raw_params": "gulp --production", [0m
[0;31m            "_uses_shell": false, [0m
[0;31m            "chdir": "../site/web/app/themes/example", [0m
[0;31m            "creates": null, [0m
[0;31m            "executable": null, [0m
[0;31m            "removes": null, [0m
[0;31m            "warn": true[0m
[0;31m        }[0m
[0;31m    }, [0m
[0;31m    "rc": 1, [0m
[0;31m    "start": "2017-05-05 18:07:55.477879", [0m
[0;31m    "stderr": "fs.js:914\n  return binding.readdir(pathModule._makeLong(path), options.encoding);\n                 ^\n\nError: ENOENT: no such file or directory, scandir '/var/lib/jenkins/workspace/example/example-deploy-staging/site/web/app/themes/example/node_modules/node-sass/vendor'\n    at Object.fs.readdirSync (fs.js:914:18)\n    at Object.getInstalledBinaries (/var/lib/jenkins/workspace/example/example-deploy-staging/site/web/app/themes/example/node_modules/node-sass/lib/extensions.js:121:13)\n    at foundBinariesList (/var/lib/jenkins/workspace/example/example-deploy-staging/site/web/app/themes/example/node_modules/node-sass/lib/errors.js:20:15)\n    at foundBinaries (/var/lib/jenkins/workspace/example/example-deploy-staging/site/web/app/themes/example/node_modules/node-sass/lib/errors.js:15:5)\n    at Object.module.exports.missingBinary (/var/lib/jenkins/workspace/example/example-deploy-staging/site/web/app/themes/example/node_modules/node-sass/lib/errors.js:45:5)\n    at module.exports (/var/lib/jenkins/workspace/example/example-deploy-staging/site/web/app/themes/example/node_modules/node-sass/lib/binding.js:15:30)\n    at Object.<anonymous> (/var/lib/jenkins/workspace/example/example-deploy-staging/site/web/app/themes/example/node_modules/node-sass/lib/index.js:14:35)\n    at Module._compile (module.js:571:32)\n    at Object.Module._extensions..js (module.js:580:10)\n    at Module.load (module.js:488:32)", [0m
[0;31m    "stderr_lines": [[0m
[0;31m        "fs.js:914", [0m
[0;31m        "  return binding.readdir(pathModule._makeLong(path), options.encoding);", [0m
[0;31m        "                 ^", [0m
[0;31m        "", [0m
[0;31m        "Error: ENOENT: no such file or directory, scandir '/var/lib/jenkins/workspace/example/example-deploy-staging/site/web/app/themes/example/node_modules/node-sass/vendor'", [0m
[0;31m        "    at Object.fs.readdirSync (fs.js:914:18)", [0m
[0;31m        "    at Object.getInstalledBinaries (/var/lib/jenkins/workspace/example/example-deploy-staging/site/web/app/themes/example/node_modules/node-sass/lib/extensions.js:121:13)", [0m
[0;31m        "    at foundBinariesList (/var/lib/jenkins/workspace/example/example-deploy-staging/site/web/app/themes/example/node_modules/node-sass/lib/errors.js:20:15)", [0m
[0;31m        "    at foundBinaries (/var/lib/jenkins/workspace/example/example-deploy-staging/site/web/app/themes/example/node_modules/node-sass/lib/errors.js:15:5)", [0m
[0;31m        "    at Object.module.exports.missingBinary (/var/lib/jenkins/workspace/example/example-deploy-staging/site/web/app/themes/example/node_modules/node-sass/lib/errors.js:45:5)", [0m
[0;31m        "    at module.exports (/var/lib/jenkins/workspace/example/example-deploy-staging/site/web/app/themes/example/node_modules/node-sass/lib/binding.js:15:30)", [0m
[0;31m        "    at Object.<anonymous> (/var/lib/jenkins/workspace/example/example-deploy-staging/site/web/app/themes/example/node_modules/node-sass/lib/index.js:14:35)", [0m
[0;31m        "    at Module._compile (module.js:571:32)", [0m
[0;31m        "    at Object.Module._extensions..js (module.js:580:10)", [0m
[0;31m        "    at Module.load (module.js:488:32)"[0m
[0;31m    ], [0m
[0;31m    "stdout": "", [0m
[0;31m    "stdout_lines": [][0m
[0;31m}[0m
	to retry, use: --limit @/var/lib/jenkins/workspace/example/example-deploy-staging/trellis/deploy.retry

PLAY RECAP *********************************************************************
[0;31mXXX.XXX.XXX.XX[0m             : [0;32mok=12  [0m [0;33mchanged=5   [0m unreachable=0    [0;31mfailed=1   [0m
[0;32mlocalhost[0m                  : ok=0    changed=0    unreachable=0    failed=0   

So clearly the issue is that this directory:

'/var/lib/jenkins/workspace[0m
[0;31m/example/example-deploy-staging/site/web/app/themes/example[0m
[0;31m/node_modules/node-sass/vendor'

does not exist. I haven’t had this problem occur on my local machine, nor has it been an issue for my co-developer. I really have no idea where to go from here.

I am using Ubuntu 16.04. This error is occurring within the context of Jenkins but I have also run it as a regular user and experienced the same issue on this particular server.

If any one could point me in the right direction I would appreciate it. Thanks!

Some things come to mind:

  1. Are you using a specific node version (e.g. using nvm) which is
    correctly working with your package.json / gulp tasks?
  2. Is npm self-updated to latest npm? npm install -g npm
  3. What kind of file system is this? ext(3/4)? CIFS mount (problematic)?
1 Like