Skip to content

Conversation

@EvanK
Copy link
Contributor

@EvanK EvanK commented Aug 2, 2016

Capistrano is a great deployment tool, but it requires a specific sort of ruby runtime environment that can be difficult to set up properly, and the bundler gem whose newer versions have conflicts with vagrant.

In the interest of making evolution easier to both use and maintain, I'd like to replace capistrano and do away with the ruby dependencies entirely.

The entry point for any tasks in this PR would be a thin python wrapper:

./bin/evolve <stage> <action>

  • provisioning - use existing ansible-playbook provisioning
    • eg: ./bin/evolve local provision
  • deployment - use ansistrano for deployments and rollbacks
  • file/db syncing - implement with an additional ansible playbook
  • wp-cli commands - see above
  • server tasks (restart services, tail logs, etc) - see above
  • ssh term access - see above

@EvanK EvanK changed the title Replace capistrano for deployments [WIP] Replace capistrano for deployments (and all other tasks) Aug 2, 2016
@AntJanus
Copy link
Contributor

AntJanus commented Aug 2, 2016

Since you're already requiring the use of Node, why not just go with shipit? It's got similar syntax to Capistrano and uses gulp-like syntax to setup tasks

@EvanK
Copy link
Contributor Author

EvanK commented Aug 2, 2016

@AntJanus A combination of us already using ansible (and thus a python environment), and that I'm more comfortable making system calls from python than node (so. many. buffer. issues.)

@AntJanus
Copy link
Contributor

AntJanus commented Aug 2, 2016

@EvanK makes sense! :)

@EvanK EvanK force-pushed the 125-replace-capistrano branch from ca6e35c to 62bf4f9 Compare August 10, 2016 21:53
EvanK added 8 commits August 13, 2016 12:42
* provision action prompts for user reprovision only in event of host failure (instead of ANY ansible failure)
* now loads actions and playbooks from multiple paths, in both the project site and bower-installed evolution
In `evolve` wrapper:
* resolving paths to absolute
* using pre-initialized extra_vars dict in actions

In `mock` wrapper, overriding repo url

In generator, updated fixPermissions to ensure binaries are executable

In group vars:
* updated deploy path
* fixed ansistrano before/after playbook paths
* load actions with importlib instead of __import__
* preserve raw sys args
* added optional command arg
* added method for exec()ing a new process
* fixed passing of args from bash to python
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants