Link to home
Start Free TrialLog in
Avatar of MarianoSB
MarianoSB

asked on

PHP Development - QA - CI - Jenkins - Docker

Hi Experts, I need somebody with experience implementing this architecture (picture attached).
User generated imageI'm currently developing using docker with no problems (linking apache, redis, mysql and node). I'm trying to take a step up, implementing QA and CI. I've recently installed bitnami jenkins over virtualbox, the php-template, and downloaded all recomended plugins. I've also installed docker on that virtualbox machine (ubuntu 14.04).
Now, i must figure out the best approach
1- Jenkins running docker exec with -c "phing / ant....composer " "gulp/grunt bower" inside containers to run test on node (for angular) and apache (for php)
2- Jenkins talking with dockerized jenkins (slave)
3- Another recomended way?

I'm interesed on hearing some experienced developer who can point me on the right direction to gain QA on my projectss.

Please excuse my english.

Regards.
Avatar of mrcoffee365
mrcoffee365
Flag of United States of America image

That looks like a good architecture.  I'd recommend having a copy of the db as a test db.  You probably don't need a separate db server, just a database within the postgres server which is for QA.  However, if you want to do load testing, you'll probably want to do that separately from your production db server.  Depends on whether you can run load testing in "off hours" for the db server.  But load testing is usually not a day-to-day qa operation.

I think it's easier to run jenkins within the environment to which it's connected.  It looks as if you're doing that -- a copy of your docker apps with jenkins?
Avatar of MarianoSB
MarianoSB

ASKER

Thank you so much for posting mrcoffee365,

My goal is to have the same environment on development, testing and production. I thought that using the same base image for development and testing was a good idea.
Now I'm evaluating two options (i don't know other). Using shell (after pulling github) commands from jenkins to start a docker container,  then run docker exec commands to do phing/ant task inside that environment  (I've recently did that and seems to work, its something like this : https://ig.nore.me/2015/09/using-docker-for-a-more-flexible-jenkins/ ). The other option, is a dockerized version of jenkins (with php inside) and run master-slave commands, and let jenkins docker plugin talk with docker (something like this: https://www.youtube.com/watch?v=dwomWpJ0m3g)
There is a similar question here: http://stackoverflow.com/questions/25114021/jenkins-using-docker-how-to-run-tests
And they go for the second option, i need to figure out why is better.
Have you any experience using the above tools? or working with a similar scenario
Thank you again for your time.

Regards,
No sorry -- I don't have experience with the specific sequence of events you are doing.

The answer on stackexchange seems reasonable.  The key statement seems to be "build jobs normally run as slaves on jenkins."  

Why are you concerned?  It looks to me as if in theory either method would be fine.  You just want a test environment you can use reliably (without using production resources).
Thank you for taking the time to read and comment, I just want to be pointed on the right direction. I't seems that the way I'm doing it now works, but maybe the other way has more PROS than this one, or maybe as the project grows my way will fail at some point.
Again, thank you for yor time.
Regards,

Mariano
ASKER CERTIFIED SOLUTION
Avatar of mrcoffee365
mrcoffee365
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial