CI server on GitHub repos

classic Classic list List threaded Threaded
16 messages Options
Reply | Threaded
Open this post in threaded view
|

CI server on GitHub repos

Daniel Ferreira (theiostream)
Hi everyone,

Now that our repos have been migrated to GitHub, it should be trivial
to setup an integrated CI server for GNUstep projects.

For instance, to build our libraries with Travis CI[1] there's barely
any more setup needed than adding a .travis.yml config file to the
project and setting up the gnustep organization over there. Then,
whoever opens pull requests can see seamlessly in the GitHub web UI
whether the pull request broke the project.

Aside from purely passing the tests, it could help new contributors
(like me) to track compatibility goals for libraries like base and
gui. Fred and Richard recently pointed out to me that Base cannot rely
on old machines/compilers having support for `@property`; and Richard
apparently just had to write a fix about this[2]. If we had a machine
on the CI server to compile base and run its tests with the lowest
version of gcc we intend to support, we'd avoid developers ever having
patches merged with "clangisms" or other features that broke this
compatibility we intend to maintain.

-- Daniel.

[1]: From a brief search in the list, it has already been considered
as an option: http://lists.gnu.org/archive/html/gnustep-dev/2017-02/msg00033.html.
[2]: https://github.com/gnustep/libs-base/commit/383c3246ee01acfa42a5a8e9d8df3b1b1927f0a7

_______________________________________________
Gnustep-dev mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/gnustep-dev
Reply | Threaded
Open this post in threaded view
|

Re: CI server on GitHub repos

David Chisnall-4
On 25 Jun 2017, at 21:01, Daniel Ferreira (theiostream) <[hidden email]> wrote:
>
> Hi everyone,
>
> Now that our repos have been migrated to GitHub, it should be trivial
> to setup an integrated CI server for GNUstep projects.

I believe Gregory was already running some CI stuff for GNUstep.  libobjc2 uses Travis for some testing.

David


_______________________________________________
Gnustep-dev mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/gnustep-dev
Reply | Threaded
Open this post in threaded view
|

Re: CI server on GitHub repos

Ivan Vučica-2
In reply to this post by Daniel Ferreira (theiostream)
On Sun, Jun 25, 2017 at 9:01 PM, Daniel Ferreira (theiostream)
<[hidden email]> wrote:
> Hi everyone,
>
> Now that our repos have been migrated to GitHub, it should be trivial
> to setup an integrated CI server for GNUstep projects.

I wouldn't mind a pull request setting up an off-the-shelf CI system,
in addition to Gregory's existing setup. (I don't know where the
'stuff is broken' emails are going these days.)

_______________________________________________
Gnustep-dev mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/gnustep-dev
Reply | Threaded
Open this post in threaded view
|

Re: CI server on GitHub repos

Daniel Ferreira (theiostream)
On Sun, Jun 25, 2017 at 7:18 PM, Ivan Vučica <[hidden email]> wrote:
> I wouldn't mind a pull request setting up an off-the-shelf CI system,
> in addition to Gregory's existing setup. (I don't know where the
> 'stuff is broken' emails are going these days.)

I just wonder what sort of setup should be used. For base/gui/back I
can envision, ideally:

1) GNU/Linux with oldest gcc we intend to support
2) FreeBSD with oldest gcc we intend to support

and for base/gui/back plus all the others:

3) GNU/Linux with modern gcc
4) GNU/Linux with modern clang
5) FreeBSD with modern gcc
6) FreeBSD with modern clang

I'd appreciate help in determining what that "oldest gcc" would be.
Also, we have the problem that Travis CI does not build on top of any
BSD aside from OSX itself, or on some targets like SunOS which I
believe we still support. I don't know if we officially support
Windows despite our win32 code in the codebase, and how tricky *that*
would be to set up in any CI server.

I'd appreciate insight on what sorts of tests the current CI runs (and
where to find it.)

-- Daniel.

_______________________________________________
Gnustep-dev mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/gnustep-dev
Reply | Threaded
Open this post in threaded view
|

Re: CI server on GitHub repos

David Chisnall

> On 25 Jun 2017, at 23:31, Daniel Ferreira (theiostream) <[hidden email]> wrote:
>
> On Sun, Jun 25, 2017 at 7:18 PM, Ivan Vučica <[hidden email]> wrote:
>> I wouldn't mind a pull request setting up an off-the-shelf CI system,
>> in addition to Gregory's existing setup. (I don't know where the
>> 'stuff is broken' emails are going these days.)
>
> I just wonder what sort of setup should be used. For base/gui/back I
> can envision, ideally:
>
> 1) GNU/Linux with oldest gcc we intend to support
> 2) FreeBSD with oldest gcc we intend to support
>
> and for base/gui/back plus all the others:
>
> 3) GNU/Linux with modern gcc
> 4) GNU/Linux with modern clang
> 5) FreeBSD with modern gcc
> 6) FreeBSD with modern clang
>
> I'd appreciate help in determining what that "oldest gcc" would be.
> Also, we have the problem that Travis CI does not build on top of any
> BSD aside from OSX itself, or on some targets like SunOS which I
> believe we still support. I don't know if we officially support
> Windows despite our win32 code in the codebase, and how tricky *that*
> would be to set up in any CI server.

Note: Travis has an open issue tracking their lack of FreeBSD support.  The more people who +1 it, the more likely it is to happen.

David


_______________________________________________
Gnustep-dev mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/gnustep-dev
Reply | Threaded
Open this post in threaded view
|

Re: CI server on GitHub repos

Marcus Müller
In reply to this post by Daniel Ferreira (theiostream)

[…]
I just wonder what sort of setup should be used. For base/gui/back I
can envision, ideally:

1) GNU/Linux with oldest gcc we intend to support
2) FreeBSD with oldest gcc we intend to support

For FreeBSD, I think you could leave out "oldest gcc". FreeBSD 9.3, which was the last FreeBSD release to have gcc 4.2 in its base system, is EoL'ed, already. Regarding FreeBSD, it's probably sensible to check whether GNUstep compiles with clang 3.4, as FreeBSD 10.3, which is still supported, has clang 3.4 in its base system.

A while ago I setup a GNUstep [Jenkins] job (matrix style) which I used myself in order to check that my commits didn't break anything.


Cheers,


  Marcus


--
Marcus Müller  .  .  .  http://www.mulle-kybernetik.com/znek/




_______________________________________________
Gnustep-dev mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/gnustep-dev

smime.p7s (3K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: CI server on GitHub repos

Riccardo Mottola-5
In reply to this post by Daniel Ferreira (theiostream)
Hi,

Daniel Ferreira (theiostream) wrote:
> 1) GNU/Linux with oldest gcc we intend to support
> 2) FreeBSD with oldest gcc we intend to support

possibly we can just use Linux to test old gcc? Could be easier.
GCC 4 is recommended, but currently all core stuff compiles (and runs
fine) with gcc 3.4.5 and I'd appreciate if we can keep it that way.
It is a compiler still common on some more esoteric platforms, like
MinGW, older Solaris and for certain stranger architectures of
mainstream BSDs.
Testing the old compiler on a "known" OS like Linux would make my life
easier when trying to get things working on odder things.

Thanks,
Riccardo

_______________________________________________
Gnustep-dev mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/gnustep-dev
Reply | Threaded
Open this post in threaded view
|

Re: CI server on GitHub repos

Daniel Ferreira (theiostream)
In reply to this post by David Chisnall
On Mon, Jun 26, 2017 at 5:26 AM, David Chisnall <[hidden email]> wrote:
> Note: Travis has an open issue tracking their lack of FreeBSD support.  The more people who +1 it, the more likely it is to happen.

All issues I can find about that have been locked to collaborator-only
comments, so I can't +1. They've also made it very clear that they
don't intend to add support for it in the near future.

Someone suggested using a FreeBSD Docker container on top of the
Ubuntu host kernel to make the tests, but that just does not work.

_______________________________________________
Gnustep-dev mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/gnustep-dev
Reply | Threaded
Open this post in threaded view
|

Re: CI server on GitHub repos

Ivan Vučica-2

We could run qemu with FreeBSD inside Docker. Or we can run our own Jenkins-based CI infra interacting with Github (and later Gitlab etc depending on the level of CI support these systems may or may not have).

This all depends on how much time one is willing to spend on setting this infrastructure up. I'd say testing /something/ on Travis is better than testing nothing on Travis, while Jenkins would be the long term solution.


On Mon, Jun 26, 2017, 15:11 Daniel Ferreira (theiostream) <[hidden email]> wrote:
On Mon, Jun 26, 2017 at 5:26 AM, David Chisnall <[hidden email]> wrote:
> Note: Travis has an open issue tracking their lack of FreeBSD support.  The more people who +1 it, the more likely it is to happen.

All issues I can find about that have been locked to collaborator-only
comments, so I can't +1. They've also made it very clear that they
don't intend to add support for it in the near future.

Someone suggested using a FreeBSD Docker container on top of the
Ubuntu host kernel to make the tests, but that just does not work.

_______________________________________________
Gnustep-dev mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/gnustep-dev
Reply | Threaded
Open this post in threaded view
|

Re: CI server on GitHub repos

Daniel Ferreira (theiostream)
> [...] I'd say testing /something/ on Travis is better than testing nothing on Travis, while Jenkins would be the long term solution.

True. I'll see if I can come up quickly with a CI setup for gcc 3.4.5,
as Riccardo suggested -- we really don't need to go any older than
that, right?

I'll try this out with base for now, and it'll look something like:
1) GNU/Linux + gcc 3.4.5
2) GNU/Linux + gcc 6.x
3) GNU/Linux + clang 4.0

With Docker it should be easy to set up a cross-compilation setup for
MinGW as well later.

I appreciate the setup ease of Travis plus its seamless integration
with GitHub (don't know about GitLab), so in the long term I'd favor
keeping whatever Travis supports in Travis and use a Jenkins setup for
the hosts Travis doesn't support (FreeBSD and Solaris are the two I
can think of, but there may be more).

-- Daniel.

_______________________________________________
Gnustep-dev mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/gnustep-dev
Reply | Threaded
Open this post in threaded view
|

Re: CI server on GitHub repos

David Chisnall
On 26 Jun 2017, at 15:42, Daniel Ferreira (theiostream) <[hidden email]> wrote:

>
> True. I'll see if I can come up quickly with a CI setup for gcc 3.4.5,
> as Riccardo suggested -- we really don't need to go any older than
> that, right?
>
> I'll try this out with base for now, and it'll look something like:
> 1) GNU/Linux + gcc 3.4.5
> 2) GNU/Linux + gcc 6.x
> 3) GNU/Linux + clang 4.0
>
> With Docker it should be easy to set up a cross-compilation setup for
> MinGW as well later.
>
> I appreciate the setup ease of Travis plus its seamless integration
> with GitHub (don't know about GitLab), so in the long term I'd favor
> keeping whatever Travis supports in Travis and use a Jenkins setup for
> the hosts Travis doesn't support (FreeBSD and Solaris are the two I
> can think of, but there may be more).

I would very much doubt that there are any platforms with a gcc older than 4.2 that we should spend our (very) limited resources caring about.  With regard to clang, it’s usually easy to install a newer one (even though FreeBSD 9 ships with 3.4 in the base system, it has 4.0 in packages).

David


_______________________________________________
Gnustep-dev mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/gnustep-dev
Reply | Threaded
Open this post in threaded view
|

Re: CI server on GitHub repos

Niels Grewe
This seems to be missing some visibility, but there are all ready working Travis CI jobs for base (both for the legacy runtime and libobjc2): https://travis-ci.org/gnustep/libs-base

Cheers, 

Niels

Gesendet: 26. Juni 2017 5:21 nachm.
Betreff: Re: CI server on GitHub repos

On 26 Jun 2017, at 15:42, Daniel Ferreira (theiostream) <[hidden email]> wrote:
>
> True. I'll see if I can come up quickly with a CI setup for gcc 3.4.5,
> as Riccardo suggested -- we really don't need to go any older than
> that, right?
>
> I'll try this out with base for now, and it'll look something like:
> 1) GNU/Linux + gcc 3.4.5
> 2) GNU/Linux + gcc 6.x
> 3) GNU/Linux + clang 4.0
>
> With Docker it should be easy to set up a cross-compilation setup for
> MinGW as well later.
>
> I appreciate the setup ease of Travis plus its seamless integration
> with GitHub (don't know about GitLab), so in the long term I'd favor
> keeping whatever Travis supports in Travis and use a Jenkins setup for
> the hosts Travis doesn't support (FreeBSD and Solaris are the two I
> can think of, but there may be more).

I would very much doubt that there are any platforms with a gcc older than 4.2 that we should spend our (very) limited resources caring about.  With regard to clang, it’s usually easy to install a newer one (even though FreeBSD 9 ships with 3.4 in the base system, it has 4.0 in packages).

David


_______________________________________________
Gnustep-dev mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/gnustep-dev

_______________________________________________
Gnustep-dev mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/gnustep-dev
Reply | Threaded
Open this post in threaded view
|

Re: CI server on GitHub repos

Riccardo Mottola-5
In reply to this post by Daniel Ferreira (theiostream)
Hi,

Daniel Ferreira (theiostream) wrote:
> True. I'll see if I can come up quickly with a CI setup for gcc 3.4.5,
> as Riccardo suggested -- we really don't need to go any older than
> that, right?
>
> I'll try this out with base for now, and it'll look something like:
> 1) GNU/Linux + gcc 3.4.5
> 2) GNU/Linux + gcc 6.x
> 3) GNU/Linux + clang 4.0

This looks looks like a nice "mix" if it is easy enough to set up. We
know Linux is a stable OS so this is much easier to test e.g. mingw or
solaris with aging 3.4x and 4.x gcc series and thus separate compiler
from OS issues.

Thanks,

Riccardo

_______________________________________________
Gnustep-dev mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/gnustep-dev
Reply | Threaded
Open this post in threaded view
|

Re: CI server on GitHub repos

Daniel Ferreira (theiostream)
In reply to this post by Niels Grewe
On Mon, Jun 26, 2017 at 2:11 PM, Niels Grewe <[hidden email]> wrote:
> This seems to be missing some visibility, but there are all ready working Travis CI jobs for base (both for the legacy runtime and libobjc2): https://travis-ci.org/gnustep/libs-base

Wow, I'm embarassed I hadn't noticed that. Could Ivan or someone else
with owner access to the repo set up a Travis CI hook for pull
requests then? A build status badge on the readme would be interesting as well.

I suppose the only thing missing then is configuring an environment
for the "old gcc" (which is, apparently, 3.4.5). Despite the current
gcc environment being on version 4.8 I'll assume this can be treated
as "modern gcc" (or should it not?).

-- Daniel.

_______________________________________________
Gnustep-dev mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/gnustep-dev
Reply | Threaded
Open this post in threaded view
|

Re: CI server on GitHub repos

Ivan Vučica-2
On Mon, Jun 26, 2017 at 9:47 PM, Daniel Ferreira (theiostream)
<[hidden email]> wrote:
> On Mon, Jun 26, 2017 at 2:11 PM, Niels Grewe <[hidden email]> wrote:
>> This seems to be missing some visibility, but there are all ready working Travis CI jobs for base (both for the legacy runtime and libobjc2): https://travis-ci.org/gnustep/libs-base
>
> Wow, I'm embarassed I hadn't noticed that. Could Ivan or someone else
> with owner access to the repo set up a Travis CI hook for pull
> requests then?

I've looked at it and we have the 'integration' activated in Github
UI. Pull requests are also being built:
https://travis-ci.org/gnustep/libs-base/pull_requests

At this point, I wonder what else could be done?

(Other than the existing setup for libs-base, I would leave
configuration of each repository to individual packagers.)

> A build status badge on the readme would be interesting as well.

We currently don't have a markdown based readme, but there's also a
question about whether there would be pushback for promoting Travis.

Consider that Github is a temporary stop for us, anyway.

>
> I suppose the only thing missing then is configuring an environment
> for the "old gcc" (which is, apparently, 3.4.5). Despite the current
> gcc environment being on version 4.8 I'll assume this can be treated
> as "modern gcc" (or should it not?).

Modern enough. I would, however, assume that 'apt-get install'ing a
newer GCC isn't a big issue.

_______________________________________________
Gnustep-dev mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/gnustep-dev
Reply | Threaded
Open this post in threaded view
|

Re: CI server on GitHub repos

Svetlana Tkachenko-3
In reply to this post by David Chisnall
David Chisnall wrote:
> Note: Travis has an open issue tracking their lack of FreeBSD support.
> The more people who +1 it, the more likely it is to happen.

Link please?

_______________________________________________
Gnustep-dev mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/gnustep-dev