Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

So time is changing towards cloud development/computing.

I'm trying to get the new "cloud" workflow based on the services I'm going to use: Github, Cloud9ide and CloudFoundry.

Here is what is on my mind:

  • Github acts like a central (main repo) just like yesterday's local filesystem. Every service will base it service upon this main repo.

Workflow:

  1. Github: I create a new Github repo served as main repo for the project.
  2. Cloud9ide. I open my Github repo and write my tests and implementation (BDD/TDD). When I'm ready I save (commit) it to main repo on Github.
  3. X: A running instance of Jenkins detects someone has committed and fetches the latest commit, builds, deploys, tests (yeti and/or selenium) and reports if the tests were passed or not. If not, I make another commit til all tests are passing.
  4. X: I run the CloudFoundry commands to push the main Github repo to CloudFoundry's server and it will deploy my app automatically.

What I'm still confused about is where this X environment will be. On a local server where I have to install Jenkins? Or could I install it on Cloud9ide (when java is supported) or will it be on another cloud service? Also, that X environment has to be able to fetch (clone) the Github repo and run the build scripts.

And since the concept of Cloud9ide is very new and there haven't been any other predecessors I really wonder how the workflow will look like. We all know Github's workflow. We now know CloudFoundry's workflow (deploy/scale with a restful API/command line tool). But how Cloud9Ide will operate is still somewhat unclear to me. Someone on Cloud9ide mentioned that there will be buttons like deploy so I can deploy with one click. But that I guess will depend on what services that deploy process will hook up into etc.

Could someone enlighten this cloud workflow topic and fill in the gaps.

Thanks.

share|improve this question

migrated from stackoverflow.com May 27 '11 at 20:10

This question came from our site for professional and enthusiast programmers.

3  
Thanks for the idea, I'm launching a startup –  CharlesB May 18 '11 at 0:46
1  
That's a lot of clouds.. –  Steve Evers May 27 '11 at 23:31
    
You can use a built in GitHub feature to alert a site (using post data) about an update. Using that, you could setup a server which knows how to pull and run any relevant scripts. Go into your project admin, go to the service hooks section, and setup the "Post-Receive URLs" for the script you write (if you write a script). –  dkuntz2 May 28 '11 at 3:12
add comment

3 Answers

If this is a purely open source project, http://teamcity.codebetter.com is an option.

Outside of that, you'll likely want to explore Amazon's EC2 (at this point) to build a hudson/jenkins server that is your build agent.

Right now, in my playing with Cloud9, it just commits back to your github repo, it doesn't do anything else. This could be pending in the future though. One small EC2 instance isn't terribly expensive on a monthly basis for now.

share|improve this answer
add comment

A running instance of Jenkins detects someone has committed and fetches the latest commit, builds, deploys, tests (yeti and/or selenium) and reports if the tests were passed or not. If not, I make another commit til all tests are passing.

This can be done with travis, which is very simple to setup and very easy to use.

share|improve this answer
    
interesting idea. I'm assuming you'd run a git push to your cloud as an after_script: command? –  rdrey Jul 11 '12 at 6:32
add comment

I don't know that I can "fill in" this gap, but to me, one of the biggest gaps may prove to be in the area of debugging. You didn't really say what kind of environment you're planning to develop to, but I find that I appreciate the ability to fire up my Java code within the server and connect to it with my IDE to step through a line at a time both to diagnose bugs and to verify that complicated code works as expected (something that tests catch sometimes and not others).

I don't really see how that's going to work when you get problems that logs won't diagnose except by breaking out of the cloud and pulling the code down and running it through the Micro Cloud.

So, to me, the big gap in all of this at the moment is dealing with difficult debugging problems.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.