www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Travis CI - Continuous Integration Testing Server

reply Jacob Carlborg <doob me.com> writes:
I've recently got some experience of a project called Travis CI. As the 
title says it's a CI, Continuous Integration testing server for open 
source projects. They host all the building and testing, you just add a 
YAML configuration file and a github hook and then it can build and run 
your tests. It can also test pull requests.

We already have somewhat similar setup for DMD and Phobos including pull 
requests. But this would be for everyone. I think it would be great if 
this was something that people start to use for their projects in the D 
community.

This Travis started out as a build server for Ruby, where it's wildly 
used. Ruby on Rails among other projects are using it. It also supports 
other languages like C, C++, Scala, Go and many others. The only problem 
is that it doesn't support D and it only supports Linux. I already 
created an issue for adding support for D :

https://github.com/travis-ci/travis-ci/issues/730

Unfortunately I haven't got any answers yet. Maybe we can push this somehow.

There's also an issue about supporting Windows and Mac OS X. It seems 
something might happen in this area pretty soon:

https://github.com/travis-ci/travis-ci/issues/216#issuecomment-9781919

https://travis-ci.org/
https://github.com/travis-ci/travis-ci

-- 
/Jacob Carlborg
Oct 25 2012
next sibling parent reply "Paulo Pinto" <pjmlp progtools.org> writes:
On Thursday, 25 October 2012 at 19:10:39 UTC, Jacob Carlborg 
wrote:
 I've recently got some experience of a project called Travis 
 CI. As the title says it's a CI, Continuous Integration testing 
 server for open source projects. They host all the building and 
 testing, you just add a YAML configuration file and a github 
 hook and then it can build and run your tests. It can also test 
 pull requests.

 We already have somewhat similar setup for DMD and Phobos 
 including pull requests. But this would be for everyone. I 
 think it would be great if this was something that people start 
 to use for their projects in the D community.

 This Travis started out as a build server for Ruby, where it's 
 wildly used. Ruby on Rails among other projects are using it. 
 It also supports other languages like C, C++, Scala, Go and 
 many others. The only problem is that it doesn't support D and 
 it only supports Linux. I already created an issue for adding 
 support for D :

 https://github.com/travis-ci/travis-ci/issues/730

 Unfortunately I haven't got any answers yet. Maybe we can push 
 this somehow.

 There's also an issue about supporting Windows and Mac OS X. It 
 seems something might happen in this area pretty soon:

 https://github.com/travis-ci/travis-ci/issues/216#issuecomment-9781919

 https://travis-ci.org/
 https://github.com/travis-ci/travis-ci

Personally I would rather use Jenkins as it is much more mature. Actually, maybe I should look into how to do a D CI system with Jenkins. -- Paulo
Oct 25 2012
next sibling parent reply =?UTF-8?B?QWxleCBSw7hubmUgUGV0ZXJzZW4=?= <alex lycus.org> writes:
On 25-10-2012 23:35, Paulo Pinto wrote:
 On Thursday, 25 October 2012 at 19:10:39 UTC, Jacob Carlborg wrote:
 I've recently got some experience of a project called Travis CI. As
 the title says it's a CI, Continuous Integration testing server for
 open source projects. They host all the building and testing, you just
 add a YAML configuration file and a github hook and then it can build
 and run your tests. It can also test pull requests.

 We already have somewhat similar setup for DMD and Phobos including
 pull requests. But this would be for everyone. I think it would be
 great if this was something that people start to use for their
 projects in the D community.

 This Travis started out as a build server for Ruby, where it's wildly
 used. Ruby on Rails among other projects are using it. It also
 supports other languages like C, C++, Scala, Go and many others. The
 only problem is that it doesn't support D and it only supports Linux.
 I already created an issue for adding support for D :

 https://github.com/travis-ci/travis-ci/issues/730

 Unfortunately I haven't got any answers yet. Maybe we can push this
 somehow.

 There's also an issue about supporting Windows and Mac OS X. It seems
 something might happen in this area pretty soon:

 https://github.com/travis-ci/travis-ci/issues/216#issuecomment-9781919

 https://travis-ci.org/
 https://github.com/travis-ci/travis-ci

Personally I would rather use Jenkins as it is much more mature. Actually, maybe I should look into how to do a D CI system with Jenkins. -- Paulo

You don't really have to do anything special other than set up build jobs that invoke <build system you're using>: http://ci.lycus.org/ -- Alex Rønne Petersen alex lycus.org http://lycus.org
Oct 25 2012
next sibling parent reply Jacob Carlborg <doob me.com> writes:
On 2012-10-25 23:50, Alex Rønne Petersen wrote:

 You don't really have to do anything special other than set up build
 jobs that invoke <build system you're using>: http://ci.lycus.org/

Cool, I know about Jenkis but I didn't know about this. What software is available on the machines? -- /Jacob Carlborg
Oct 25 2012
parent reply =?UTF-8?B?QWxleCBSw7hubmUgUGV0ZXJzZW4=?= <alex lycus.org> writes:
On 26-10-2012 08:24, Jacob Carlborg wrote:
 On 2012-10-25 23:50, Alex Rønne Petersen wrote:

 You don't really have to do anything special other than set up build
 jobs that invoke <build system you're using>: http://ci.lycus.org/

Cool, I know about Jenkis but I didn't know about this. What software is available on the machines?

Oh, I probably gave off the wrong impression. It's not a public service a la Travis at all; just some machines a couple of contributors and I put together in a Jenkins setup. All but one of the jobs on there are D jobs and I just wanted to show that you can trivially build any D software with it (see the console logs for the various builds) since Jenkins lets you run any shell commands you want. -- Alex Rønne Petersen alex lycus.org http://lycus.org
Oct 26 2012
parent Jacob Carlborg <doob me.com> writes:
On 2012-10-26 09:48, Alex Rønne Petersen wrote:
 On 26-10-2012 08:24, Jacob Carlborg wrote:
 On 2012-10-25 23:50, Alex Rønne Petersen wrote:

 You don't really have to do anything special other than set up build
 jobs that invoke <build system you're using>: http://ci.lycus.org/

Cool, I know about Jenkis but I didn't know about this. What software is available on the machines?

Oh, I probably gave off the wrong impression. It's not a public service a la Travis at all; just some machines a couple of contributors and I put together in a Jenkins setup. All but one of the jobs on there are D jobs and I just wanted to show that you can trivially build any D software with it (see the console logs for the various builds) since Jenkins lets you run any shell commands you want.

Oh, I see :(. I thought it looked fairly empty for a public service. -- /Jacob Carlborg
Oct 26 2012
prev sibling parent reply Jacob Carlborg <doob me.com> writes:
On 2012-10-26 09:21, Paulo Pinto wrote:

 Yeah, just found out that all major build systems for native languages
 (scons, cmake, ...) are already supported.

But what about the compilers, i.e. DMD? -- /Jacob Carlborg
Oct 26 2012
parent reply =?UTF-8?B?QWxleCBSw7hubmUgUGV0ZXJzZW4=?= <alex lycus.org> writes:
On 26-10-2012 09:46, Jacob Carlborg wrote:
 On 2012-10-26 09:21, Paulo Pinto wrote:

 Yeah, just found out that all major build systems for native languages
 (scons, cmake, ...) are already supported.

But what about the compilers, i.e. DMD?

Jenkins lets you run anything. A job can literally consist purely of a series of shell commands that must all return 0 in order for the build to succeed. So, as long as the software you need is installed on the machine Jenkins (or a slave) is running on, you can run it in builds. -- Alex Rønne Petersen alex lycus.org http://lycus.org
Oct 26 2012
parent Jacob Carlborg <doob me.com> writes:
On 2012-10-26 09:49, Alex Rønne Petersen wrote:

 Jenkins lets you run anything. A job can literally consist purely of a
 series of shell commands that must all return 0 in order for the build
 to succeed. So, as long as the software you need is installed on the
 machine Jenkins (or a slave) is running on, you can run it in builds.

I read your other post now, I thought it was a public service. Where you don't necessarily control the machines. -- /Jacob Carlborg
Oct 26 2012
prev sibling parent Jacob Carlborg <doob me.com> writes:
On 2012-10-25 23:35, Paulo Pinto wrote:

 Personally I would rather use Jenkins as it is much more mature.

 Actually, maybe I should look into how to do a D CI system with Jenkins.

What I like about Travis is that they will host the builds/tests for free. I think that's a huge difference and lowers the barrier to start with CI testing. -- /Jacob Carlborg
Oct 25 2012
prev sibling next sibling parent reply Jens Mueller <jens.k.mueller gmx.de> writes:
Jacob Carlborg wrote:
 I've recently got some experience of a project called Travis CI. As
 the title says it's a CI, Continuous Integration testing server for
 open source projects. They host all the building and testing, you
 just add a YAML configuration file and a github hook and then it can
 build and run your tests. It can also test pull requests.
 
 We already have somewhat similar setup for DMD and Phobos including
 pull requests. But this would be for everyone. I think it would be
 great if this was something that people start to use for their
 projects in the D community.
 
 This Travis started out as a build server for Ruby, where it's
 wildly used. Ruby on Rails among other projects are using it. It
 also supports other languages like C, C++, Scala, Go and many
 others. The only problem is that it doesn't support D and it only
 supports Linux. I already created an issue for adding support for D
 :
 
 https://github.com/travis-ci/travis-ci/issues/730
 
 Unfortunately I haven't got any answers yet. Maybe we can push this somehow.
 
 There's also an issue about supporting Windows and Mac OS X. It
 seems something might happen in this area pretty soon:
 
 https://github.com/travis-ci/travis-ci/issues/216#issuecomment-9781919
 
 https://travis-ci.org/
 https://github.com/travis-ci/travis-ci

I've been using cloudbees.com which offers a similar service based on Jenkins. Since Jenkins supports shell scripts to drive the build it was fairly easy to support D (see https://gluey.ci.cloudbees.com/job/ddl/). You can add your own systems for executing the builds (but I have never done this myself). I'm not sure whether pull requests are supported. They have reduced prices for FOSS projects. http://www.cloudbees.com/foss/index.cb It's very nice to have automated and tested builds for free. Jens
Oct 25 2012
parent Jacob Carlborg <doob me.com> writes:
On 2012-10-25 23:47, Jens Mueller wrote:

 I've been using cloudbees.com which offers a similar service based on
 Jenkins.
 Since Jenkins supports shell scripts to drive the build it was fairly
 easy to support D (see https://gluey.ci.cloudbees.com/job/ddl/).

Travis supports "make" and it probably supports shell scripts as well. But what about installed software?
 You can add your own systems for executing the builds (but I have never
 done this myself).
 I'm not sure whether pull requests are supported.
 They have reduced prices for FOSS projects.
 http://www.cloudbees.com/foss/index.cb

 It's very nice to have automated and tested builds for free.

Yeah, as I replied to another post: What I like about Travis is that they will host the builds/tests and do it for free. I think that's a huge difference and lowers the barrier to start with CI testing. -- /Jacob Carlborg
Oct 25 2012
prev sibling next sibling parent "Paulo Pinto" <pjmlp progtools.org> writes:
On Thursday, 25 October 2012 at 21:50:13 UTC, Alex Rønne 
Petersen wrote:
 On 25-10-2012 23:35, Paulo Pinto wrote:
 On Thursday, 25 October 2012 at 19:10:39 UTC, Jacob Carlborg 
 wrote:
 I've recently got some experience of a project called Travis 
 CI. As
 the title says it's a CI, Continuous Integration testing 
 server for
 open source projects. They host all the building and testing, 
 you just
 add a YAML configuration file and a github hook and then it 
 can build
 and run your tests. It can also test pull requests.

 We already have somewhat similar setup for DMD and Phobos 
 including
 pull requests. But this would be for everyone. I think it 
 would be
 great if this was something that people start to use for their
 projects in the D community.

 This Travis started out as a build server for Ruby, where 
 it's wildly
 used. Ruby on Rails among other projects are using it. It also
 supports other languages like C, C++, Scala, Go and many 
 others. The
 only problem is that it doesn't support D and it only 
 supports Linux.
 I already created an issue for adding support for D :

 https://github.com/travis-ci/travis-ci/issues/730

 Unfortunately I haven't got any answers yet. Maybe we can 
 push this
 somehow.

 There's also an issue about supporting Windows and Mac OS X. 
 It seems
 something might happen in this area pretty soon:

 https://github.com/travis-ci/travis-ci/issues/216#issuecomment-9781919

 https://travis-ci.org/
 https://github.com/travis-ci/travis-ci

Personally I would rather use Jenkins as it is much more mature. Actually, maybe I should look into how to do a D CI system with Jenkins. -- Paulo

You don't really have to do anything special other than set up build jobs that invoke <build system you're using>: http://ci.lycus.org/

Yeah, just found out that all major build systems for native languages (scons, cmake, ...) are already supported. -- Paulo
Oct 26 2012
prev sibling next sibling parent Jens Mueller <jens.k.mueller gmx.de> writes:
Jacob Carlborg wrote:
 On 2012-10-25 23:47, Jens Mueller wrote:
 
I've been using cloudbees.com which offers a similar service based on
Jenkins.
Since Jenkins supports shell scripts to drive the build it was fairly
easy to support D (see https://gluey.ci.cloudbees.com/job/ddl/).

Travis supports "make" and it probably supports shell scripts as well. But what about installed software?

With Jenkins you can run any shell script. So I wrote a shell script that downloads and install dmd and continue. Probably that can be simplified using dvm.
You can add your own systems for executing the builds (but I have never
done this myself).
I'm not sure whether pull requests are supported.
They have reduced prices for FOSS projects.
http://www.cloudbees.com/foss/index.cb

It's very nice to have automated and tested builds for free.

Yeah, as I replied to another post: What I like about Travis is that they will host the builds/tests and do it for free. I think that's a huge difference and lowers the barrier to start with CI testing.

It is. It's amazing how much you can automate these days for free. Jens
Oct 26 2012
prev sibling next sibling parent reply "David Nadlinger" <see klickverbot.at> writes:
On Thursday, 25 October 2012 at 19:10:39 UTC, Jacob Carlborg 
wrote:
 I've recently got some experience of a project called Travis 
 CI. As the title says it's a CI, Continuous Integration testing 
 server for open source projects. They host all the building and 
 testing, you just add a YAML configuration file and a github 
 hook and then it can build and run your tests. It can also test 
 pull requests.

Yes, Travis is indeed a great service. We use it for LDC CI and pull request testing (sadly, it is x86_32 only right now, but apparently the platform is supposed to be moved to 64 bit machines soon).
 This Travis started out as a build server for Ruby, where it's 
 wildly used. Ruby on Rails among other projects are using it. 
 It also supports other languages like C, C++, Scala, Go and 
 many others. The only problem is that it doesn't support D and 
 it only supports Linux.

Well, »it doesn't support D« is true in that there is no built-in support for it, but you are allowed to install arbitrary software on the system as part of your installation scripts (for example, the LDC pre-build hooks install LLVM and libconfig++). The most straightforward way would be to set up an Ubuntu PPA containing the DMD/GDC/LDC versions you need. But it would probably be a wise idea to coordinate with the Travis guys anyway, to avoid that suddenly some two hundred D projects all pull in the same packages from a server not in the Travis network…
 Unfortunately I haven't got any answers yet. Maybe we can push 
 this somehow.

I'd try to approach the Travis people in #travis on FreeNode – from my experience, they are quite responsive there. Also note that all of Travis is open source, so I'm sure the process would be much quicker if there was an actual patch adding D support to discuss. David
Oct 26 2012
parent Jacob Carlborg <doob me.com> writes:
On 2012-10-26 15:28, David Nadlinger wrote:

 Well, »it doesn't support D« is true in that there is no built-in
 support for it, but you are allowed to install arbitrary software on the
 system as part of your installation scripts (for example, the LDC
 pre-build hooks install LLVM and libconfig++). The most straightforward
 way would be to set up an Ubuntu PPA containing the DMD/GDC/LDC versions
 you need. But it would probably be a wise idea to coordinate with the
 Travis guys anyway, to avoid that suddenly some two hundred D projects
 all pull in the same packages from a server not in the Travis network…

Ok, I didn't know you could do that.
 I'd try to approach the Travis people in #travis on FreeNode – from my
 experience, they are quite responsive there. Also note that all of
 Travis is open source, so I'm sure the process would be much quicker if
 there was an actual patch adding D support to discuss.

Absolutely, I just don't have any idea how I would add support for a new language, that's partly why I created the issue. The IRC channel seems like a good idea, thanks. -- /Jacob Carlborg
Oct 27 2012
prev sibling next sibling parent "pussinboots" <pussinboots666 googlemail.com> writes:
Hello d community,

i started programming with D yesterday and from some scala play 
project
know travis ci and love it. So i write a little .travis,yml file 
for a simple vibe.d project on github 
(https://github.com/pussinboots/dfirstweb) .

Maybe it gives you the impression back and for all they start 
with D travis
ci is a very powerful contenious integration tool also when it 
comes to continous deployment with heroku.

The next day i will try to get run a D project on heroku, maybe 
it is possible like build D with travis ci 
(https://travis-ci.org/pussinboots/dfirstweb).

nice day and have fun with D
Dec 19 2013
prev sibling next sibling parent "Dylan Knutson" <tcdknutson gmail.com> writes:
On Thursday, 19 December 2013 at 17:58:56 UTC, pussinboots wrote:
 Hello d community,
 ...
 nice day and have fun with D

Hello! There's some related discussion going on about this in http://forum.dlang.org/thread/axhtisdbckvajqcgazbu forum.dlang.org
Dec 19 2013
prev sibling parent reply Martin Nowak <code dawg.eu> writes:
On 10/25/2012 09:10 PM, Jacob Carlborg wrote:
 The only problem is that it doesn't support D and it only supports
 Linux. I already created an issue for adding support for D :

https://travis-ci.org/MartinNowak/bloom https://travis-ci.org/MartinNowak/hyphenate https://travis-ci.org/MartinNowak/lock-free https://travis-ci.org/msgpack/msgpack-d One problem is that the existing dmd release is huge and the apt package will drag in gcc-multilib which is even bigger. So for now I used ldc.
Dec 19 2013
parent Jacob Carlborg <doob me.com> writes:
On 2013-12-19 21:03, Martin Nowak wrote:

 Totally works, I learned that from Masahiro.

 https://travis-ci.org/MartinNowak/bloom
 https://travis-ci.org/MartinNowak/hyphenate
 https://travis-ci.org/MartinNowak/lock-free
 https://travis-ci.org/msgpack/msgpack-d

 One problem is that the existing dmd release is huge and the apt package
 will drag in gcc-multilib which is even bigger.
 So for now I used ldc.

I learned myself that you can use any language, it's just a matter of what's installed by default. They've added some initial support now: https://github.com/travis-ci/travis-cookbooks/commit/01e725208a755508529eec28f074f6bbef6c319f -- /Jacob Carlborg
Dec 19 2013