2

We have a project which does not contain a Drupal codebase. It's Cypress.io test with Drush 9 added using Composer. I would like to execute Drush with site alias to work with the remote site while running tests.

I'm able to call Drush from Cypress test just fine. The Cypress part actually does not matter at all as the behaviour is the same when I run Drush command directly.

The setup:

  • composer init fresh project
  • composer require drush/drush
✔ rk:/tmp/drushtest> vendor/bin/drush version
 Drush version : 9.7.1
✔ rk:/tmp/drushtest> vendor/bin/drush sa --debug
 [preflight] Config paths: /tmp/drushtest/vendor/drush/drush/drush.yml
 [preflight] Alias paths: 
 [preflight] Commandfile search paths: /tmp/drushtest/vendor/drush/drush/src
 [bootstrap] Starting bootstrap to none [0.09 sec, 7.33 MB]
 [bootstrap] Drush bootstrap phase 0 [0.09 sec, 7.34 MB]
 [bootstrap] Try to validate bootstrap phase 0 [0.09 sec, 7.34 MB]
 [success] No site aliases found. [0.09 sec, 7.36 MB]
  • Already there is nothing in Alias paths.
  • Added some drush aliases to drush/sites/remoteproject.site.yml (valid yml file that is working in the Drupal project)
  • While debugging this I tried to add a drush.yml config file to point drush to the alias.
✔ rk:/tmp/drushtest> tree
.
├── composer.json
├── composer.lock
├── drush
│   └── sites
│       └── remoteproject.site.yml
├── drush.yml
└── vendor
    ├── ...

✔ rk:/tmp/drushtest> cat drush.yml 
drush:
  paths:
    alias-path:
      - drush/sites/remoteproject.site.yml

✔ rk:/tmp/drushtest> vendor/bin/drush sa --debug --config=drush.yml
 [preflight] Config paths: /tmp/drushtest/drush.yml,/tmp/drushtest/vendor/drush/drush/drush.yml
 [preflight] Alias paths: drush/sites/remoteproject.site.yml
 [preflight] Commandfile search paths: /tmp/drushtest/vendor/drush/drush/src
 [bootstrap] Starting bootstrap to none [0.08 sec, 7.34 MB]
 [bootstrap] Drush bootstrap phase 0 [0.08 sec, 7.34 MB]
 [bootstrap] Try to validate bootstrap phase 0 [0.08 sec, 7.34 MB]
 [success] No site aliases found. [0.08 sec, 7.37 MB]

So I convinced Drush to see the site alias file, but the alias itself is not loading.

When I try to use the alias:

✔ rk:/tmp/drushtest> vendor/bin/drush @remoteproject.remotesite.dev status -debug --config=drush.yml
 [preflight] The alias @remoteproject.remotesite.dev could not be found.

Is this conceptually wrong? (Having only Drush and calling remote site using site alias.) Am I just missing some option? Or is this ready to be "promoted" to Github bug report / feature request?

Thanks!

3
  • What is the error when trying to use the alias?
    – Jaypan
    Commented Jul 25, 2019 at 22:01
  • When I try to use the alias: The alias @remoteproject.remotesite.dev could not be found. (Also added this to the original question.) Commented Jul 26, 2019 at 9:15
  • If only we could xdebug it... Commented Jul 31, 2019 at 7:40

1 Answer 1

1

If your Drush 9 alias file is remoteproject.site.yml, and it has keys like live:, then your alias should be @remoteproject.live.

If you have multiple remote sites, do not put them in the same .yml file in Drush 9. Make one file per site, e.g. remotesite1.site.yml, remotesite2.site.yml and so on.

Use ./vendor/bin/drush sa to see the list of aliases found by Drush.

5
  • ./vendor/bin/drush sa returns No site aliases found. :( Commented Aug 6, 2019 at 19:25
  • Hm I am not sure what happens if the .yml file is invalid. Try removing it, and put in a very simple example site alias file. According to the --debug output, you should be seeing your aliases. If you get a simple working example, you can keep adding to it until you have something that fully works. Commented Aug 6, 2019 at 19:27
  • I created very simple site alias in another project and tested it: ✔ rk:~/www/mysite/docroot> drush sa --format=list @mysite.remoteproject.local then I moved the alias file into the test environment described in the original post: ✔ rk:/tmp/drushtest> cat drush/sites/remoteproject.site.yml local: root: /home/radimklaska/www/mysite/docroot uri: http://mysite.localhost ✔ rk:/tmp/drushtest> vendor/bin/drush sa --config=drush.yml [success] No site aliases found. Commented Aug 6, 2019 at 20:17
  • The wonders of text formatting... In summary, I created simple alias under key local and I defined only root and uri. I tested this alias file in another project. Drush found it properly. Then I moved it into the described project and drush sa can't find it. Commented Aug 6, 2019 at 20:29
  • I cannot think of a reason why a well-formed alias file would appear in the 'Alias paths:' debug log and yet not be found by Drush. More in-depth debugging will be required. If you find a bug in Drush, an issue or pull request would be appreciated. Commented Aug 7, 2019 at 14:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.