Ember + Travis CI Broken Builds
If you’re suddenly getting this warning:
No command 'ember' found, did you mean: Command 'enber' from package 'asn1c' (universe)ember: command not foundyou’re not alone. This article will show you how to fix to fix it.
Fixed Upstream (for now)
Travis-CI has deployed a fix on their end to restore the previous behavior (PR). However, it is likely that this will change again, so making a change below is probably a safe idea.
The Problem
The problem stems from this change to Travis CI. It removes
node_modules/.bin from the system path. When ember-cli is installed from package.json, it places a link to the
ember binary in that directory. Since ember-cli isn’t installed globally, the system can’t find the executable.
The good news is that npm run automatically adds node_modules/.bin to the path
at runtime. From their docs:
In addition to the shell’s pre-existing PATH, npm run adds node_modules/.bin to the PATH provided to scripts. Any binaries provided by locally-installed dependencies can be used without the node_modules/.bin prefix
Ember Apps
If you’re experiencing this problem, you’re likely a legacy user who hasn’t run ember init in a while. To fix the
problem, simply make sure you have ember test defined in your package.json:
{ ...
"scripts": { "start": "ember server", "build": "ember build", "test": "ember test" }
...}Then, change your .travis.yml to match the
newer blueprint,
by running npm test vs. ember test.
script: - npm testIf you’re using any special options, you can pass them like this:
script: - npm test -- --launch ChromeEmber Addons
This is a little more complex since ember-try is called directly. It sounds like the ember-cli team is updating the blueprint as we speak. As a temporary workaround, you can do something like this.
In your package.json create a test script that looks like this:
{ ...
"scripts": { "start": "ember server", "build": "ember build", "test-ci": "ember try:one" }
...}Then, call it like this from your .travis.yml:
script: - npm run test-ci -- $EMBER_TRY_SCENARIO test --skip-cleanupI’ll update this issue once the core team updates the blueprint, if it differs from this solution.
Upstream PR to Ember CLI
A PR is open for this issue. It uses a slightly different strategy,
by calling the binary directly in travis.yml:
script: - node_modules/.bin/ember try:one $EMBER_TRY_SCENARIO test --skip-cleanupProblems?
If you run into problems, let me know on the ember community slack.