What is the benefit of Continuous Integration over make?

What is the benefit of Continuous Integration over make?

  • We are evaluating and setting up Continuous Integration for our PHP project. Each of the Continuous Integration tools has their own proprietary "build language" which will run many commands and check the return status of these commands. Here is an example of a .travis.yml configuration: language: php php: - "5.3" - "5.4" - "5.5" script: phpunit test notifications: email: - [email protected] A Jenkins configuration will be in XML and is too long to paste here. Here is an example of a circle.yml configuration: dependencies: override: - bundle install: timeout: 240 environment: foo: bar foo2: bar2 pwd: test_dir My question is: what is the benefit of using all these popular, proprietary configurations languages for CI instead of using a Makefile to set up your test environment and have whatever CI server just run make test?

  • Answer:

    What proprietary "build language" in Jenkins? Saying that Jenkins's "build language" is an XML file is like saying your makefile's "build language" is machine code. Not quite, but the gist is the same. You need not concern yourself with how Jenkins stores it's configuration no more than you would concern yourself with the resultant machine code after your makefile runs. You will never be modifying Jenkins's XML by hand. Jenkins is a web-based GUI (with cli and web APIs to complete it). The "build language" of Jenkins is whatever you want, from Maven to Ant to Shell and many more in between. It is further augmented with a multitude of plugins that allow you to customize the build flow just as you want it. And at the end of the day, in Jenkins, your build step will be "Execute Shell" where you will write make test just like you did on command line. The benefits of Jenkins is not executing your build (any scheduler can do that), but organizing and putting everything together, and keeping it accessible to your team through the web. I can go on listing all the great things that Jenkins will keep track of for you (SCM changes, console logs, test results, artifacts, emails, etc, etc), but you will get a far better overview from any Google search on the benefits/features of Jenkins. Late edit: http://stackoverflow.com/questions/22851950/power-tradeoff-between-buildscript-and-ci-server/22854127#22854127

Full Decent at Programmers Visit the source

Was this solution helpful to you?

Other answers

travis-ci is designed to take your script file ( in your case a makefile) and set it up to run on many different versions of your language (in your case php) with minimal setup. The .travis.tml file is designed to setup everything to run your tests and to run them, in about 5 lines! It's also designed to be set it and forget it, copy the five lines or so from the documentation, modify them slightly for your needs, and you never have to worry about your CI setup again. If you run your own CI server it's a lot more difficult to test on different language versions (or change versions on a whim ), see the results in the GitHub UI, and you have to worry about maintaining and updating the server, instead of the 5 minutes setup of a cloud CI service like Travis.

joshua-anderson

Related Q & A:

Just Added Q & A:

Find solution

For every problem there is a solution! Proved by Solucija.

  • Got an issue and looking for advice?

  • Ask Solucija to search every corner of the Web for help.

  • Get workable solutions and helpful tips in a moment.

Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.