Language-agnostic automated build and test server for multiple projects [closed] - language-agnostic

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
To ease our release testing, we're looking for a system to automatically build and (unit) test our software projects on a variety of architectures. Our constraints are:
The code to build is written in several languages, including Python, Java and C.
We have several distinct deployment architectures.
We have multiple projects, which we would like to build and test independently.
Our source control system is Subversion, and the system should integrate with that.
The solution should ideally be open source.
We've looked at:
Artifactory + Continuum: Nice in some ways, but is heavily Java-centric, with limited or non-existent Python support.
Buildbot: This gives us almost all the functionality we need, except it doesn't support multiple projects, which is a deal-breaker for us.
What would you recommend? What do you use?

Take a look at TeamCity. Works like a charm for us.

Have you looked at Hudson? I've used it on .Net projects with a lot of success even though its a somewhat Java centric tool. It supports subversion and has an active and diverse plugin community which enables it to work with a lot of different languages. Its open source and it runs on many platforms.I found it to be relatively easy to configure and manage.

Since moving away from buildbot i've been using cruisecontrol and i've been happy with it to certain degree. My current projects consist of building c++ & ruby (with some c extensions) to multiple architectures and and only gripe with is that most features do require ant. And currently single instance of cc is building roughly 40 different projects.. Build phases we have do consist of running unittests, some functional tests, getting code coverage and making a report of those, updating package database, irc integration, software packaqge creation and repository update (debian)
Only gripe is that most of the fancier features would require that (Atleast when inside cc build loop) build is happening with ant.
I've also evaluated hudson, it seems to be somewhat more flexible than cruisecontrol but i dont personally like the configuration interface of it.

I'm a developer on CruiseControl and I work for Urbancode who makes AnthillPro, so I can speak to the strengths of those. I'm also one of the organizers of CITCON so I'm pretty familiar with almost all the offerings in the space.
CruiseControl or Hudson are both pretty good open source CI tools. I find CC really easy to customize and extend and there are lot of plugins that have been added over its 8 year lifetime. Hudson is newer and easier for most people to get started; it is dead simple to get your first project running using the GUI configuration while CC requires mucking about in XML files. Hudson also has an active plugin community and is rapidly adding new capabilities.
However depending on the complexity and requirements of your projects you might find a commercial tool like AnthillPro would be a better fit. The reasons upgrade from CC or Hudson to AHP vary from company to company but some typical answers include the ability to setup self-service deployments with access control by environment, the desire to chain multiple builds/workflows together, the built in dependency management, the artifact repository, or the ability to pull together data from a bunch of different tools & builds across the lifecycle.
Not everyone needs those capabilities but the people who do find the upgrade to be worth the money.

Why not also take a look at CI Factory.

Related

Which continuous integration software do you use? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
Google says there are:
Jenkins ( first impression: not lightweight )
Cruise control ( first impression: not lightweight )
Bitten ( seems to be dead, last ticket >8 months old)
BuildBot
But BuildBot seems a bit outdated, offering no statistics, not very intuitive to configure... Features we are interested in are:
Multi platform support for build slaves: Linux, Mac OS X, Windows
Easy build slave setup
Mercurial support with branch sensitivity
Scheduled builds
Commit-hook builds
Email notification with full debug output
Trac integration would be nice but is not a must-have feature
Edit:
I favour Jenkins over Hudson by now, since its the real open source fork of Hudson. Oracle just failed.
Hudson is my recommendation. It's easy to setup and use, it's free, there are a large amount of third-party plugins and good community support.
TeamCity by JetBrains.
Google says there are: [...]
There is a huge wikipedia page on CI software comparison:
http://en.wikipedia.org/wiki/Comparison_of_Continuous_Integration_Software
Personally I am also using buildbot and I think it could fulfill all of your requirements. It's a bit of work to setup because it is a distributed application but frankly as pyfunc said it's a breeze to setup a new slave once you know what two commands to type (one is an "easy_install", the other one a "buildbot create-slave" with the right options).
Also it is still under heavy development and I chose it because it is easily extensible, whereas XML-based tools are confined to the types of build specs which were coded in the tool: perfect for Java/Ant/Maven projects but it can be limited for slightly more complex ones (e.g., involving DB, or embedded software, etc.).
Hope it'll help.
Cheers,
Christophe.
= The act of automating doesn't solve problems, it just automates them --Joseph Weizenbaum =
I have used Hudson with Mercurial and found it to be excellent. The Feeds, web site, status reports, etc. were all "just the right size" for us in a 20 person shop. Just run it in a VM and forget about it; we did.
I have used BuildBot. My experience has been good with it. Installation is a breeze. It uses configuration to setup the master, slave and has various means for communicating result from publishing on web to mail integration.
http://buildbot.net/trac
I have blogged about the buildbot setup. I find it easy. There are few dependencies like twisted that needs to be taken care of.
http://pyfunc.blogspot.com/2010/09/using-buildbot-for-continuos.html
[Edit: I tried to put together a post on how to configure BuildBot - master.cfg]
http://pyfunc.blogspot.com/2010/10/setting-up-buildbot-customizing.html
As others have recommended, Hudson satisfies your list of requirements. There's also a plugin for Trac integration.
Regarding "lightweight", Hudson configuration is not XML hell. You can do everything via the Web interface. So it's very easy to get up and running.
Hudson's plugin architecture provides a lot of extension points and integration with other tools. (Although it can be a pain to sort through all the possibilities for the plugin that has the behavior you need.)
You can also script it through the remote access API. This is a powerful way to introduce new behavior for your environment without needing to dive into writing a plugin.
Our free hosted CI environment (fazend.com) is powered by CruiseControl 2.8.3, which is a free open-source product, written in Java. One of its benefits (for us) is that it doesn't need any database, everything is in files.

Can I host a mirror on github or googlecode, if the project is managed on codeplex.com? Should I? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
I have a project managed on codeplex.com.
Does it ever make sense to push source releases to github or googlecode?
I don't know of any reason to mirror just the source code from your "home" site to another one, and having observed thousands of open source projects, I can't recall any of them having done that so I really don't think there is a reason for it.
However there are a couple reasons why people might want to mirror their project releases (e.g. the installer versus the source code). Here are the two reasons a project might want to do that (and I've definitely seen examples of both of these):
Your project is multi-platform - CodePlex is the best place to reach Windows users, so if your software runs on Windows you'll get the most downloads by hosting your project releases there. However if your software also runs on Linux, very few Linux users look for software on CodePlex, so you might want to host the releases on SourceForge as well since it has a high number of Linux users.
Your preferred site for development is different then the best site to reach your audience - The project development features vary between the sites, so take a theoretical example of you love using CVS but your project software runs on Windows. SourceForge is the only site that supports CVS, so you might choose to host your project there for development purposes, however you would likely also want to mirror the releases to CodePlex since you'll be able to get the most downloads from Windows users there.
Sure, if you want people who are using git or hg to easily grab your source code. Might not be worth it unless your project has a large user base, though.
Other than for exposing different source control options, I can't see why you'd want to (is it even realistic to co-manage a project with, for example, SVN and Git at the same time). If you're not doing that, it's a bit of a waste of time. What do you get out of it? A small measure of redundancy if codeplex is unavailable for some reason? What if someone commits changes to another host? Managing conflicts between different repositories is not fun. The inevitable end I'd imagine would be having a 'ghost' repository which many are unaware of being unofficial instead of having everyone working off the main one.
It used to make sense to have a read-only SVN mirror for its popularity, but now Codeplex supports SVN checkouts as well.
A different aspect is moving your source control to github / etc. instead of mirroring. You still keep one authoritative location for the code, but gain github's arguably better support for collaboration from others.

Seeking advice for taking a project open-source [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I currently have a few closed-source applications that I have developed to learn a particular technology or experiment with a programming technique. As a result, I have some software that is useful to others and that I have made freely available, but in closed-source format.
Some of the users of the software have asked if I would be willing to go open-source with the software so they could contribute to it. I'm all for it, but haven't had any previous experience working on open-source projects, much less starting one.
Ideally I'd get my feet wet by contributing to an existing project first, but I don't want quell enthusiasm of these volunteers by delaying too long. So I am going to forge ahead slightly blindly.
What I am looking for is a crash-course in managing an open-source project for someone just starting out on this track.
So let me phrase this as a question:
What advice do you have for someone
starting up their first open-source
project?
I'm also interested in recommendations for books/links that you think would be helpful
You have two important choices to make initially.
Firstly which licence should you use? There are dozens of Open Source licences, but it basically boils down to whether you want copyleft (GPL/AGPL) or non-copyleft (BSD, MIT, Apache) and that depends on your own objectives.
Secondly, you need to choose a version control system and, assuming you won't be hosting it yourself, a provider. This is effectively a choice between Subversion or one of the distributed version control systems (Git, Mercurial, Bazaar, etc.). A DVCS may make it easier for you to manage contributions from other people if you don't want to give them write access to your master repository.
Choice of VCS will influence your choice of host and vice versa as most providers only offer one VCS. A provider that will also host a website and/or wiki for you would be ideal. Most will provide some kind of rudimentary issue tracker and possibly mailing lists. You can also get mailing lists from Librelist.
I would recommend that you take a look at GitHub or Launchpad. I'm not particularly keen on Google Code or Sourceforge. Nothing against Subversion, I just don't like their UIs.
If you want your project to become popular, and that might not be important to you, you'll have to promote it. You can register it with Ohloh and Freshmeat. Writing blog articles about your project and submitting them to sites like Reddit and DZone would increase visibility. Remember also that Jeff is offering free advertising on StackOverflow for Open Source projects.
Anyway, as long as you have a public source repository and a website for people to download the software from, just write code and the rest will follow.
If you're already familiar with VCS (Versioning Control System) you should be fine. I recommend www.github.org to host the repository, and maybe at some point a website to talk about the app. Github is nice because it makes it especially easy for people to contribute code. It's ridiculously simple, although git has a bit of a learning curve.
And then, a way to communicate! A mailing list.. Maybe googlewave.. Maybe a forum.
Don't miss the great e-book from Karl Fogel, Producing Open Source Software available at no cost online.
I don't have any personal advice on hand, but I found the following video very interesting. It's a recollection of the experiences of some Google employees and the lessons they learned whilst managing their open source projects.
How Open Source Projects Survive Poisonous People (And You Can Too)
https://www.youtube.com/watch?v=Q52kFL8zVoM
Read this book: Wikinomics
In one of the chapters, for example, the author explains the challenges faced by IBM when they first joined open source projects on Linux.
Some code repository sites do a lot of the management work for you. They provide the licenses, they handle versioning (in some cases) and they obviously handle the repository.
look at these sites:
http://www.codeplex.com/
http://www.codeproject.com/
http://sourceforge.net/
The very minimum that you need to do is post the code as a zip, with a suitable license file. You can do that at Google Code - it's really easy to use. As for which license, start with an unrestrictive one such as MIT (Google Code has all the license texts) - you can always re-license later, provided you haven't accepted any updates.
As for books/links, take a look at Producing Open Source Software - it's not perfect, but I don't know of anything better.

Continuous Integration for a small .NET open source project [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Closed 8 years ago.
Questions asking us to recommend or find a book, tool, software library, tutorial or other off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Improve this question
I'm starting a small open source project, myself being the sole contributor for the time. Still, I think a continuous integration setup would be useful to detect whether I broke the build.
Is there a free, hosted continuous integration server that is suitable for very small projects? Googling turned up CodeBetter, but I'm not sure they'll accept a one-man project that is just starting up.
I prefer TeamCity, but I'm open to suggestions.
Note - a hosted solution is a must for me. I don't want to setup and maintain a continuous integration server, so answers like "TeamCity" or "CruiseControl" are simply irrelevant.
Specific requirements:
I am hosting my project at GitHub, so the continuous integration server needs Git integration
I would like the continuous integration server to run .NET integration (unit) tests
Nice to have - I also need access to a MySQL server (although I could modify the tests to use embedded SQLite, they currently run against an external MySQL server).
AppVeyor is well integrated with Github, free for open-source projects and really easy to set up.
Builds are configured using YAML or UI. Free accounts are limited to one build at a time. Deployment to NuGet is supported, as well as project and account feeds. It is deeply integrated with GitHub, for example allows creating releases. It supports build matrices, AssemblyInfo patching, rolling builds, build prioritization, status badges, build notifications etc.
Travis is well-known CI (and seems to be the most popular hosted CI by far), now it supports building C#, F# and VB projects too. The caveat is that it supports only Linux and Mono and it's in beta ("may be removed or altered at any time").
MyGet is a hosted package server, but now it supports Build Services too (currently preview) and other features. It's free for public feeds (500 MB max) and has slightly better features for approved open-source projects (bigger storage and gallery). Build service is optimized for packages: NuGet feed, MyGet feeds, SymbolSource integration etc.
This is now provided by Microsoft for free for teams of up to 5 people by Team Foundation Server.
It provides:
Source Control: TFS, Git
Agile Planning: Agile, Scrum, CMMI
Continuous Builds
Collaboration
Integration
Test Execution
Deployment
Visual Studio Team Services doesn't require hosting code on it, code can be pulled from GitHub or any Git repository.
If the project is small and doesn't have complex requirements to build, Hosted pool can be used to perform CI builds. There're several limitations: available software, one build at a time, time limit of one hour etc. If it isn't enough, you can add your own build agents by running a script on your machines.
GitHub support isn't full (pull requests aren't built, for example), but most functionality is supported. Shields.io doesn't support VSO yet, but a custom shield is available.
The primary drawback for open-source projects is that build logs, test results and other data won't be public. Only five users can be given access to the project on a free account. There's a suggestion on UserVoice to make public projects possible.
I know the thread is quite old, but for the people still looking for the answer I recommend taking a look at AppHarbor
It is pretty easy to setup integration with Github and Bitbucket, and you have basic db connections for free through "addon" options.
Quite convenient for startups.
Also take a look at CodeHaus:
http://codehaus.org/
They use Atlassian's Bamboo CI software.
No opinion - as I've never used it.
I don't think that you will easily find a real free (by this I mean for any project, any language) hosted CI service because such a service is very CPU, RAM, disk intensive which implies specific rules, hardware, pricing.
For some offers, have a look at Outsourcing Continuous Integration or this question here on SO. I didn't look at all solutions in detail so I don't know if they'll meet your requirements (language, tool and pricing).
Or try to join a forge providing Continuous Integration for open source projects like The Codehaus (EDIT: not an option for .NET projects AFAIK) or CodeBetter. This will certainly require some efforts to get your project accepted (few actually are IMHO) but this might be your best option.
I've just started using OnCheckin:
https://oncheckin.com/
They exclusively provide for .NET projects.
Maybe the right answer is for someone to make a set of EC2 images available for this sort of thing, so users can either use Amazon, or build their own cloud on Eucalyptus inside the firewall if they're paranoid... but in either case, you save the time and cost of building those images.
MikeCI is an affordable hosted CI service, from $10 per month you can have a cloud build set up in minutes. It currently supports Ruby, Maven and Ant. It has a Free 30 day trial so you can try it and see what it's like. I personally think it's great, plus I think they're looking to support .Net and Objective C!
here's their site http://www.mikeci.com
I know this is probably an old thread, but
Here's another option:
Checkout Jenkins.
It does supports Jenkins.NET which I'm using right now.
And here's another SO-RELATED-THREAD: TFS 2008/2010 vs Jenkins for Continuous Integration
There's RunCodeAt, which Pascal's comment pointed me to. It is super easy to integrate with github, which I happen to host my project on. I'll give it a try.

Codeplex/Sourceforge for internal use [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I'm looking for a free/open source collaborative project manager that can be deployed internally in my workplace that would act similar to Codeplex or Sourceforge. Does anyone know of something like this, and if so do you have experience with it.
Requirements:
Open Source or Free
Locally Deployable
Has the same types of features found in Sourceforge / Codeplex
Issue/Feature Tracking
Community Interaction (ie. Voting, Roles, etc.)
SCM Integration (Optional)
.NET/Windows Friendly (Optional)
Every business ends up having internal utilities, and domain specific apps that developers create to make life easier. Given the input of the internal developer community they have the potential to become much better (can you say GMail...), and I would simply like to foster such an environment internally by providing an easy place for that interaction to take place.
UPDATE:
So I like what I am seeing in both Trac and GForge, but both are heavily geared towards UNIX/Subversion environments. I should have specified this, but we are a MS shop from top to bottom. How practical do you think it is going to be to try and use these in a MS .NET environment? Would that be like trying to shove a square peg through a round hole?
I like redmine for this: http://www.redmine.org. The only thing it's missing from your criteria is voting, but there might even be a plugin for this.
Trac is also popular (http://trac.edgewall.org) but it lacks suport for aggregation of data across projects.
Try GForge, it's a SourceForge fork and has most of its features.
I agree, Trac should work. IMHO setting up Subversion should be relatively easy on Windows too, there are great Windows clients for it (tortoiseSvn), and Trac runs on python, so it will work on Windows too.
Other advantages of Sourceforge Enterprise are these plugins. There are extra plugins for Visual Studio wich can be found here and here.
SourceForge Enterprise Edition 4.4 is available for free for up to 15 users. We use it for our development team and another development team where I work.
It's been working great for us. It has subversion and cvs built in (whichever you wish to use). If you plan on accessing it over the internet you might want to enable HTTPS. I had to do a little finagling to get HTTPS to work correctly (finding the right CentOS packages to install). If you wanted to use this solution with HTTPS I wouldn't mind if you sent me a message asking for help.
It comes with a VM for VMWare Player:
http://www.collab.net/downloads/sfee/index4.4.html
Launchpad has support for Code Hosting and version control, Bug tracking, Blueprints, Answers, Polls, Translations, etc.
Launchpad is used by the Ubuntu Project.
A few weeks ago, Launchapad was released as open source.
I was just wondering the same thing, something like Trac but in .NET, after a quick GOOGLE search (I have never tried these tools) I found
sharpforge (This no longer looks free!)
I like how the site .netTiers looks.
They use screwturn wiki.
It is totally free if you fulfill all GPLv2 statements.
Assembla and BeanStalk are nice, both have things like; wiki, discussion, alerts, chat, ticketing, Trac, Git and Subversion
What about Trac? It's pretty simple, but does it's Job for a lot of Open Source projects.
I would concur on the Trac suggestion. I use it both for an open source project and for an internal project. It has decent issue tracking and integration with Subversion which allows links between tickets and subversion checkins. It also has an integrated wiki, which can be of some use for documentation. Although we do not use it for voting / community type features, I know there's a number of addons to it that might serve this purpose.