Tx guille for looking at this.

On Thu, Jun 29, 2017 at 10:39 AM, Guillermo Polito <
[email protected]> wrote:

> Hi all,
>
> As some/a lot of you have been asking how to contribute, I'm here to
> answer some questions :).
>
> First of all, integrating fixes in Pharo has been "slowed down" because we
> missed the Monkey for Pull Request (PR) integration. Some of you have seen
> a travis job going around and checking. That was our initial solution, but
> it has a main issue for us: it only works for unix because our build
> process is long, uses lots of small files due to file tree and osx travis
> support is REALLY SLOW with I/O access. This is why we chose to use good
> old Jenkins.
>
>     https://ci.inria.fr/pharo-ci-jenkins2/
> # Why it took so much time
>
> Just some explanation of why it took so much time (you can skip this if
> you're not interested).
>
> I started working on integrating Jenkins with Pull Requests several weeks
> ago (note that I'm part time on this, also working in other projects and
> the deadlines of the past weeks like IWST were killing my time). We have
> now a new and working Jenkins server for Pharo7. This jenkins server is
> hosted in Inria, its url being
>
> - We chose to use Jenkins 2 because I managed to make the PR integration
> plugin work only in Jenkins 2.
> - This required the creation of a new jenkins server + slaves. The pharo
> and pharo-contribution servers run with Jenkins 1.6 and I did not want to
> migrate existing servers to not break existing jobs.
> - At the same moment, the inria CI infrastructure was having some (lots?)
> of hiccups because of storage limitations. I spent several weeks to create
> the running slaves for each platform and connect jenkins to them because of
> that.
> - Finally, I spent some time to test the new Jenkins MultiJobs. These kind
> of jobs allow to split a single job in sequential phases. And each phase
> can have multiple jobs that run concurrently. This allows us to bootstrap
> once (on unix) and test in all platforms.
>
> An example of the new multijob can be found here:
>
>     https://ci.inria.fr/pharo-ci-jenkins2/job/Pharo-PullRequest-Pipeline/
>
> # Current Design
>
> Right at this moment, we are validating PRs using Jenkins. The process is
> as follows:
>
> 1) Github notifies about changes in PRs to Jenkins using webhooks. So far,
> we have configured it to notify about PR changes (including comments) and
> normal pushes (to capture merges into the #development branch).
>
> 2) Upon the reception of a GH notification, Jenkins will launch two
> jobs/validations. The basic structure of both validations is the same so
> far. Bootstrap once (unix) and test in many platforms. There are the
> following two test configurations however.
>
>   2.1) Full Validation: tests 32 and 64 bits, for linux, osx and windows.
>        This configuration is not fully working right now because we found
> a VM bug in 64 bits that prevents us from creating a full pharo image.
> Bootstrap is Ok, but there is a segfault when loading a big Metacello
> configuration.
>
>   2.2) Basic Validation: tests only 32 bits, for now in linux and osx (I'm
> planning to do windows today).
>        This validation is to give us nevertheless a feedback of the build
> even if the full is failing so far.
>
>   2.3) Others? We could easily add new validations to run some faster
> tests i.e., just loading a patch on the previous image.
>
> 3) Jenkins takes control and notifies Github
>
> So far, Full validation is failing, and I plan to keep it running until it
> gets green. I don't care if it's red right now, the idea is that we should
> fix it, and we should remember it is broken :).
>
> On the other hand, the Basic Validation is working and running tests. Once
> the tests runs are finished, Github PR state will be either a success (if
> all tests went green) or a failure (if it failed or some tests failed). You
> will see actually a message saying:
>
> Validation Failure. Please check test results.
>  7782 tests run, 0 skipped, 6 failed.
>
> + a link to jenkins if you want to inspect results.
>
> You can see an example of it in action in here:
>
>   https://github.com/pharo-project/pharo/pull/119
>
> # Next points
>
> Right now we are missing:
>   - Fogbugz integration
>   - Publish new images in the file server when a push/merge happens in the
> #development branch
>     (I should sit today with Esteban to do some ssh key configuration in a
> server I have no access to)
>   - fixing the failing tests => TO HAVE A GREEN BUILD> :D
>   - Enhance tests?
>
>   - your enhancement idea :)
>
> The current validation already gives us an idea of what works and what
> does not work, what breaks the bootstrap, and if we have failing tests or
> not.
>
> I'd like however that before integrating a fix, there is at least 2 people
> that look at it and put a +1. Because Monkey validation and the ability to
> merge does not mean much actually :).
>
> If you have some questions, enhancements, there is this thread, there is
> the #bootstrap channel in discord also.
>
> Guille (in behalf of everybody that helped me with this)
>
> --
>
>
>
> Guille Polito
>
>
> Research Engineer
>
> French National Center for Scientific Research - *http://www.cnrs.fr*
> <http://www.cnrs.fr>
>
>
>
> *Web:* *http://guillep.github.io* <http://guillep.github.io>
>
> *Phone: *+33 06 52 70 66 13 <+33%206%2052%2070%2066%2013>
>

Reply via email to