CSC/ECE 517 Spring 2015/ch1a 6 TZ: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
Line 53: Line 53:
[[File:4.Passed.jpg |frame|center|Build passed]]
[[File:4.Passed.jpg |frame|center|Build passed]]


=='''Compare different Continuous Intergration Tools'''==
== Comparison ==
There are more than 30 continuous intergration tools designed to adapt to different platforms. I select several tools which can connect Github and relate to Ruby to compare.


{| class="wikitable sortable" style="font-size: 80%; text-align: center; width: auto;"
{| class="wikitable sortable" style="font-size: 80%; text-align: center; width: auto;"
Line 70: Line 69:


|-
|-
| [http://www.appveyor.com AppVeyor CI]
| [[AnthillPro]]
| Hosted
| [[Cross-platform]]
| {{proprietary}}
| {{proprietary}}
| {{yes|[[Visual Studio]], [[MSBuild]], [[Psake]]}}
| [[MSBuild]],<ref>http://plugins.urbancode.com/AnthillPro/integration/MSBuild</ref> [[NAnt]],<ref>http://plugins.urbancode.com/AnthillPro/integration/Nant</ref> [[Visual Studio]]<ref>http://plugins.urbancode.com/AnthillPro/plugin/VisualStudio</ref>
| {{no}}
| {{yes|[[Apache Ant|Ant]],<ref>http://plugins.urbancode.com/AnthillPro/plugin/Ant</ref> [[Apache Maven|Maven 1, 2, & 3]]<ref>http://plugins.urbancode.com/AnthillPro/integration/Maven</ref>}}
| {{yes|Custom script, [[PowerShell]]}}
| {{yes|[[Shell script]], [[Batch file|Batch script]], Cross-platform command-line, [[Groovy (programming language)|Groovy script]], [[Make (software)|Make]],<ref>http://plugins.urbancode.com/AnthillPro/integration/Make</ref> [[IBM Rational Team Concert|RTC Jazz]],<ref>http://plugins.urbancode.com/AnthillPro/plugin/RTC-Jazz-Plugin</ref> [[Team Foundation Server|TFS Build]],<ref>http://plugins.urbancode.com/AnthillPro/plugin/TFSBuildPlugin</ref> Custom Script Interpreter}}
| [[E-mail]]
| [[E-mail]], [[Extensible Messaging and Presence Protocol|XMPP]]/[[XMPP|Jabber]], [[RSS]], [[Systray]]
| {{no}}
| {{yes|[[Eclipse (software)|Eclipse]], [[Visual Studio]]}}
| {{yes|[[GitHub]], [[Bitbucket]], Kiln, [[Windows Azure]]}}
| {{yes|(many)<ref>http://plugins.urbancode.com/viewAllIntegrations</ref>}}
 
|-
| [https://circleci.com CircleCI]
| Hosted
| {{proprietary}}
| {{unknown}}
| {{unknown}}
| {{yes|[[Ruby (programming language)|Ruby]], [[Python (programming language)|Python]], [[Node.js]], [[PHP]], [[Java (programming language)|Java]]}}
| [[E-mail]], [[Campfire (software)|Campfire]], [[HipChat]], CCtray
| {{unknown}}
| {{yes|[[Heroku]], [[GitHub]]}}
 
|-
| [https://node.ci node.ci]
| Hosted
| {{proprietary}}
| {{unknown}}
| {{unknown}}
| {{yes|[[Node.js]]}}
| [[E-mail]]
| {{unknown}}
| {{yes|[[Amazon Web Services|AWS]], [[GitHub]], [[Bitbucket]]}}
 
|-
| [https://www.codeship.io Codeship]
| Hosted
| {{proprietary}}
| {{no}}
| {{yes|[[Maven]]}}
| {{yes|[[Go (programming language)]], [[Java (programming language)]], [[Node.js]], [[PHP]], [[Python (programming language)]], [[Ruby (programming language)]]}}
| [[E-mail]], Flowdock, Grove, [[HipChat]], Web
| {{no}}
| {{yes|[[CloudControl]], [[Engine Yard]], [[GitHub]], [[Heroku]]}}
 
|-
| [http://www.finalbuilder.com/continua-ci Continua CI]
| [[Windows]]
| {{proprietary}}
| {{yes|[[Ant]], [[Nant]], [[FinalBuilder]], [[MSBuild]], [[Rake (software)|Rake]], [[Visual Studio]], [[Powershell]]}}
| {{yes|[[Ant]]}}
| {{yes| Execute Program(command line)}}
| [[E-mail]], [[XMPP]]
| {{no}}
| {{yes|[[GitHub]], [[Bitbucket]], [[Codeplex]], [[Kiln]], [[Team Foundation Server|TFS]], [[FogBugz]], [[JIRA|Jira]], [[NCover]], [[Opencover]], [[NUnit]], [[DUnitX]], [[jUnit]], [[xUnit]], [[NuGet]], [[7Zip]]}}
 
|-
| [https://drone.io Drone.io]
| Hosted
| {{free|[[Apache License|Apache]] 2.0}}
| {{unknown}}
| {{yes|[[Apache Ant|Ant]], [[Apache Maven|Maven 2]], [[Gradle]]}}
| {{yes|C, C++, [[Dart (programming language)|Dart]], [[Go (programming language)|Go]], [[Node.js|NodeJS]], [[Python (programming language)|Python]], [[PHP]], [[Ruby (programming language)|Ruby]], [[Java (programming language)|Java]], [[Groovy (programming language)|Groovy]], [[Scala (programming language)|Scala]], [[Erlang (programming language)|Erlang]]}}
| [[E-mail]]
| {{unknown}}
| {{yes|[[Heroku]], Dotcloud, [[GitHub]], [[Bitbucket]]}}
 
|-
| [http://integrity.github.io/ Integrity]
| [[Ruby (programming language)|Ruby]]
| {{free|[[MIT license|MIT]]}}
| {{yes|Yes (command line)}}
| {{yes|Yes (command line)}}
| {{yes|command line}}
| [[E-mail]], [[World Wide Web|Web]]
| {{unknown}}
| {{unknown}}
 
|-
| [http://www.koalitycode.com Koality]
| Cross Platform, [[Private cloud#Private cloud|Private Cloud]]
| {{proprietary}}
| {{unknown}}
| {{unknown}}
| {{yes|[[Shell scripts|Shell Script]], [[Command Line|Command-Line]]}}
| [[Email]], [[HipChat]], [[GitHub]]
| {{unknown}}
| {{yes|[[Amazon Web Services]], [[GitHub]]}}
 
|-
| [http://tbraun89.github.io/pyCI/ pyCI]
| [[Linux]]
| {{free|[[GNU General Public License#Version 2|GPL2]]}}
| {{no}}
| {{no}}
| {{yes|Command line}}
| {{yes|Command line}}
| {{no}}
| {{no}}
 
|-
| [https://semaphoreapp.com Semaphore]
| Hosted
| {{proprietary}}
| {{unknown}}
| {{yes|[[Apache Maven|Maven 3]]}}
| {{yes|[[Ruby (programming language)]], [[Java (programming language)]], [[Node.js]], [[PHP]], [[Clojure]], [[Rake (software)|Rake]], [[Command Line]]}}
| [[E-mail]], [[Campfire (software)|Campfire]], [[HipChat]], [[Slack]], Flowdock, Webhooks, Remote API
| {{unknown}}
| {{yes|[[GitHub]], [[Bitbucket]], [[Heroku]], [[Code Climate]], [[Cloud 66]]}}
 
|-
| [[Shippable]]
| Hosted
| {{proprietary}}
| {{yes|[[MSBuild]], [[NAnt]]}}
| {{yes|[[Apache Ant|Ant]], [[Apache Maven|Maven]], [[Gradle]]}}
| {{yes|[[Ruby (programming language)|Ruby]], [[Python (programming language)|Python]], [[Node.js]], [[Java (programming language)|Java]], [[Scala (programming language)|Scala]], [[C Sharp (programming language)|C Sharp]], [[PHP (programming language)|PHP]], [[Go (programming language)|Go]]}}
| [[E-mail]], [[Campfire (software)|Campfire]]
| {{no}}
| {{yes|[[GitHub]], [[Bitbucket]] [[Heroku]]}}
 
|-
| [https://snap-ci.com Snap CI]
| Hosted
| {{proprietary}}
| {{no}}
| {{yes|[[Apache Ant|Ant]], [[Apache Maven|Maven]], [[Gradle]], [[Android (operating system)|Android]]}}
| {{yes|C, C++, Clojure, Erlang, Go, Groovy, Haskell, Java, Node.js, Perl, PHP, Python, Ruby, Scala}}
| [[E-Mail]], [[Campfire]], [[HipChat]], [[Webhook]]
| {{no}}
| {{yes|[[GitHub]], [[Heroku]], [[Amazon Web Services|AWS]]}}
 
|-
| [https://www.solanolabs.com Solano CI]
| Hosted, [[Cross-platform]], [[Private cloud#Private cloud|Private Cloud]]
| {{proprietary}}
| {{no}}
| {{yes|[[Apache Ant|Ant]], [[Apache Maven|Maven]], [[Gradle]]}}
| {{yes|C, C++, Clojure, Go, Java, Javascript, Node.js, PHP, Python, R, Ruby, Scala, Command Line}}
| [[E-Mail]], [[Campfire]], [[HipChat]], [[Flowdock]], [[Slack]], [[Webhook]], CCMenu
| {{no}}
| {{yes|[[GitHub]], GitHub Enterprise, [[Bitbucket]], [[Heroku]], [[Amazon Web Services|AWS]], [[Git (software)|Git]], [[Mercurial]]}}
 
|-
| [http://stridercd.com/ Strider]
| Node.js
| {{free|[[BSD]]}}
| {{no}}
| {{no}}
| {{yes|C, C++, Clojure, Erlang, Go, Groovy, Haskell, Java, Node.js, Perl, PHP, Python, Ruby, Scala}}
| [[E-Mail]]
| {{no}}
| {{yes|[[GitHub]], [[Bitbucket]], [[Heroku]], [[GitHub Enterprise]], [[Git (software)|Git]]}}
 
|-
| [[Travis CI]]
| Hosted
| {{free|[[MIT License|MIT]]}}
| {{no}}
| {{yes|[[Apache Ant|Ant]], [[Apache Maven|Maven]], [[Gradle]]<ref>{{cite web|url=http://docs.travis-ci.com/user/languages/java/|title=Building a Java project in Travis CI}}</ref>}}
| {{yes|C, C++, Clojure, Erlang, Go, Groovy, Haskell, Java, Node.js, Perl, PHP, Python, Ruby, Scala}}
| [[E-Mail]], [[Campfire]], [[HipChat]], [[IRC]], [[Slack]]
| {{no}}
| {{yes|[[GitHub]], [[Heroku]]}}
 
|-
| [[TeamCity]]
| [[Java Servlet#Servlet containers|Servlet Container]]
| {{proprietary}}
| {{yes|[[MSBuild]], [[NAnt]], [[Visual Studio]], Duplicates finder for .NET}}
| {{yes|[[Apache Ant|Ant]], [[Apache Maven|Maven 2/3]], [[IntelliJ IDEA|IDEA]] .ipr based, [[IntelliJ IDEA|IDEA]] Inspections, [[IntelliJ IDEA|IDEA]] Duplicates finder, [[Gradle]]}}
| {{yes|[[Rake (software)|Rake]], [[FxCop]], Command Line}}
| [[E-mail]], [[Extensible Messaging and Presence Protocol|XMPP]], [[RSS]], IDE, SysTray
| {{yes|[[Eclipse (software)|Eclipse]], [[Visual studio|Visual Studio]], [[IntelliJ IDEA]], [[RubyMine]], [[PyCharm]], [[PhpStorm]], [[WebStorm]]}}
| {{yes|Jetbrains Youtrack, [[JIRA]], [[Bugzilla]], [[FishEye (software)|FishEye]], [[FindBugs]], [[PMD (software)|PMD]], [[dotCover]], [[NCover]]}}
 


|}
|}

Revision as of 18:34, 31 January 2015

Snap CI

Snap CI is a hosted continuous integration and continuous delivery service.

Background

Continuous integration (CI) is the practice of merging all developer working copies with a shared mainline several times a day. It was adopted as part of extreme programming (XP). The main aim of CI is to prevent integration problems, referred to as "integration hell" in early descriptions of XP.

CI was originally intended to be used in combination with automated unit tests written through the practices of test-driven development (TDD). Initially this was conceived of as running all unit tests in the developer's local environment and verifying they all passed before committing to the mainline. This helps avoid one developer's work in progress breaking another developer's copy.

Later elaborations of the concept introduced build servers, which automatically run the unit tests periodically or even after every commit and report the results to the developers. The use of build servers (not necessarily running unit tests) had already been practised by some teams outside the XP community. Nowadays, many organisations have adopted CI without adopting all of XP.

In addition to automated unit tests, organisations using CI typically use a build server to implement continuous processes of applying quality control in general — small pieces of effort, applied frequently. In addition to running the unit and integration tests, such processes run additional static and dynamic tests, measure and profile performance, extract and format documentation from the source code and facilitate manual QA processes. This continuous application of quality control aims to improve the quality of software, and to reduce the time taken to deliver it, by replacing the traditional practice of applying quality control after completing all development. This is very similar to the original idea of integrating more frequently to make integration easier, only applied to QA processes.

Example

Getting started on Snap CI.

■ Step1: Sign in

To sign up with Snap, visit Snap CI and click in the Sign in with Github link at the top. When you sign in, GitHub will ask if you want to give a set of permissions to Snap.

Snap CI website


■ Step2: Add your repository

Once you are signed in, Snap will present a list of all the repositories you have access to. You may only build repositories. If you are an administrator on any of those repositories, you may build that repository on Snap.

Your repository list


■ Step3: Config your build

When you select a repository to build on Snap, we will attempt to automatically detect some popular configurations for your build. We look for languages versions, build tools files, dependency managers and other conventions that may indicate how your build could be set up. In this guide we'll use a ruby repository, but we do support lots of other languages.

Configure your build


As most of the ruby repositories, this one uses a dependency manager tool call bundler and the rspec testing framework. Because of that, Snap automatically added the default command for each of them: bundle install --path ${SNAP_CACHE_DIR}/.bundle and rake spec respectively. Most of the times that would be everything needed to run your tests. However, there may be some tasks that are pre-requisites to it. In this specific build, we need to execute the command bundle exec foreman start &. It can be done simply by adding it before bundle exec rake spec.


■ Step4: Build

All that's left to do is click Build now and let Snap run our build.

Build passed

Comparison

Name Platform License Windows builders Java builders Other builders Notification IDE Integration Other Integration
AnthillPro Cross-platform Template:Proprietary MSBuild,<ref>http://plugins.urbancode.com/AnthillPro/integration/MSBuild</ref> NAnt,<ref>http://plugins.urbancode.com/AnthillPro/integration/Nant</ref> Visual Studio<ref>http://plugins.urbancode.com/AnthillPro/plugin/VisualStudio</ref> Template:Yes Template:Yes E-mail, XMPP/Jabber, RSS, Systray Template:Yes Template:Yes

Narration

Conclusion

References