So, I understand Continuous Integration in theory, and have used Beanstalk. However, I’ve been charged with creating the process at my current PHP shop.
My hope was maybe PHPCI, since it looked perfect, and I’m a bit out of my depth. However, it turns out we will have to maintain a Java application.
Currently, we have 3 projects, each deploying to three servers(dev, qa, prod) with different requirements, so nine jobs. We were going to try Bitbucket, but that didn’t work out financially, but we are firmly in the Atlassian camp(BitBucket, JIRA/ServiceDesk).
It seems to me that my only realistic option is Jenkins, because of the multi-language needs. And then Ant/Gradle/Maven for the the Java stuff.
- Is this correct?
- How difficult will it be to set this up?
- Is this a fairly flexible solution? It seems common.
Most CI servers are somewhat language agnostic — at the end of the day you are really just executing shell scripts with some fancy reporting — so your general premise is correct.
The physical deployment of PHP apps is typically pretty simple — they are just files on disk so rsync is your friend here. The difficult parts come in with things like user data in files and managing databases but presuming you’ve got a decent plan you are good to go. The question to be asking yourself is “can I deploy this ideoimpotently from a command line with no human intervention.”
Using jenkins or a similar product to deploy multiple platforms is a fairly common solution. There should be plenty of help and expertise about making this happen.