I’m looking at using one of these utilities in our development workflow. Here is the scenario I’m hoping for. We are a small (3 man) team that uses Git for our version control.
I want to … 1. Create a REPO on my local computer with different branches Dev/Staging/Live 2. Push Repo to Beanstalk/Github/Other 3. Make Stuff, commit and push changes to Beanstalk/Github/Other 3. On Recieve, have Beanstalk/Github/Other Deploy either to Dev/Staging/Live server (multiple servers) based on which Branch I’m pushing 4. It would be nice if I could push to these servers without having to install git on them. I see Beanstalk will do over S/FTP which I think would be nice.
I know this is a subjective question, but I would like to know your thoughts and what you guys like/use. Thanks!
Howdy! Alex from Beanstalk here.
Our deployment tools sound like they’d support your desired workflow without any trouble. We have environments (dev, staging, production) that can contain one or many servers. When creating a deployment, you can specify which branch you’d like the deployment to pull from.
We also provide webhooks pre and post deploy, so you can do any sort of configuration or cleanup necessary. Some other happy Beanstalk customers who developer EE have built some plugins to take our webhook post data and do things like bust cache, etc. Check that out here:
http://moresoda.co.uk/blog/article/expressionengine-beanstalk-web-hook-addon/
As you already pointed out, we can deploy over FTP or SFTP. We’ve got some more deployment tools coming soon as well, and would love to hear more about the hardest parts about deploying Expression Engine to see how we might make them easier.
Let me know if you have any questions, anytime. [email protected]
Cheers!
Yep I used Beanstalk for my EE dev.
I pretty much have everything setup as you have outlined: local, staging, prod.
Using something like ee-garages/Leevi Graham’s config bootstrap takes the pain out of having to have too much config stuff in your .gitignore
So basically I dev locally, push, beanstalk auto deploys to staging so I can test and then I use manual deployments for production.
Works a treat.
Edit: meant to link the bootstrap config file - http://ee-garage.com/nsm-config-bootstrap
We use a Beanstalk based solution at my company, and it works really well.
You just need to make some modifications to the config.php and database.php files, and it works a treat. We have three branches for every site: master, preview and development. We then configure Beanstalk to auto deploy the preview and master branches to the preview and production servers.
Only thing that rakes getting used to is the DB updates which still need to be dons manually. What does help though is that we incorporate a DB backup into the git repo, and it is updated anytime addons/channels are modified. But at least this way the team can simply pull down the latest DB along with the latest files for the site.
Also keep in mind that you’ll need a private repo if using github since EE is a licensed product.
Would anybody be interested in working with us to write a “Definitive guide to deploying EE with Beanstalk”?
It sounds like many of you have solved problems that anyone wanting to deploy EE might have. I’d love to see that stuff wrangled up into a single guide.
While we often link them to blog posts, it’d be great to have a complete resource for someone getting started.
If anyone’s interested, lemme know.
For my local git repos I create a hook: .(JavaScript must be enabled to view this email address) to dump the database before a commit. So if you have to revert of commit, you can also import a corresponding version of the database at that point in time.
The hooks are super easy to setup.
Here is a sample of my .git/hooks/pre-commit
#!/bin/sh
#
# dump local database and store
/Applications/MAMP/Library/bin/mysqldump -u root -p'root' local_site_database | cat > /Users/kellypacker/Sites/client/example.dev/assets/sql/local.sql
echo "Export of local to file is complete"Also, and maybe there is an easier way to do this, but I create some scripts to: export my local database and import it into my staging (ran when I deploy to staging server) export my local and import into my production (ran when I deploy sites to the production) export from production and import into local (ran before I make changes to local ee install that involve ee database changes.)
Beanstalk has hooks that might automate this, but I am new at this too and haven’t gotten that far.
Also I use transmit to sync /image/uploads folder and generally add that folder to the .gitignore
as I see it the advantage to using beanstalk or some other deployment apparatus, is that you don’t have to worry about setting up git on your staging and production servers. So if a site is hosted on a shared hosting, you integrate version control into the process. The bad part is that if you are working in a team and one person starts to make a lot of changes to the staging server without using the beanstalk workflow, then you cannot do a pull and integrate those changes into your local repo. Someone correct me if i am wrong about that, and it would nice to be wrong about that.
The bad part is that if you are working in a team and one person starts to make a lot of changes to the staging server without using the beanstalk workflow, then you cannot do a pull and integrate those changes into your local repo. Someone correct me if i am wrong about that, and it would nice to be wrong about that.
That is (mostly) correct. Whenever you have more than one person working on a project it is essential that you all agree on a standardized workflow to keep the process flowing efficiently.
Packet Tide owns and develops ExpressionEngine. © Packet Tide, All Rights Reserved.