Hey Matt,

Apache infra supports Travis CI - just file a ticket and they will
set it up :)

Cheers,
Chris

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Chris Mattmann, Ph.D.
Chief Architect
Instrument Software and Science Data Systems Section (398)
NASA Jet Propulsion Laboratory Pasadena, CA 91109 USA
Office: 168-519, Mailstop: 168-527
Email: [email protected]
WWW:  http://sunset.usc.edu/~mattmann/
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Director, Information Retrieval and Data Science Group (IRDS)
Adjunct Associate Professor, Computer Science Department
University of Southern California, Los Angeles, CA 90089 USA
WWW: http://irds.usc.edu/
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++










On 7/15/16, 2:05 PM, "Matt Post" <[email protected]> wrote:

>Question for Chris and/or Lewis:
>
>So, Kellen and I took a look at this today, and it looks like a good solution. 
>The problem is that it integrates with projects hosted on Github that you have 
>write access to. In order to make use of this, we'd need to rearrange the 
>setup we have.
>
>Currently, we push to a repo at git.apache.org, and that is then pushed down 
>to github.com/apache/incubator-joshua. This lets us use the Github repo for 
>receiving things like pull requests and so on, but we do not have write access 
>to it, so merges and so on have to be handled manually.
>
>To use Travis-ci, we'd need to re-enginneer this. Apache would need to give us 
>write access to github.com/apache/incubator-joshua, or we'd need to use 
>another official host for Joshua. We'd then use git.apache.org as the mirror, 
>instead of the other way around.
>
>Is there any way that this could be done? I understand Apache's arguments 
>about keeping discussions at home, since github may not last forever. However, 
>it seems like we could do this if we use git.apache.org as the backup mirror, 
>and continue to use JIRA for discussions and so on. In general, Github has a 
>lot of tools that could help with development. It would be nice if we could 
>make use of them while still checking off Apache's logging requirements.
>
>matt
>
>
>
>> On Jul 11, 2016, at 6:50 PM, kellen sunderland <[email protected]> 
>> wrote:
>> 
>> Sorry should have provided the link to this page: https://travis-ci.org/ .
>> If you scroll down a bit on that page there's a Pull Request flow section,
>> it's the flow I'd be most in favour of.  There's also a decent (but rushed)
>> demo here: https://www.youtube.com/watch?v=Uft5KBimzyk .  We actually don't
>> need to do a lot of the work that he demos, i.e. no node or gulp
>> configuration.  Our setup is close enough to default a default java project
>> that we just have to tell it to build java 8 and then it runs maven
>> properly.
>> 
>> Using a CI server would have some aspects that are similar to the branching
>> document you mention, and some benefits that are a bit orthogonal.  Most of
>> these benefits have to do with unit testing, which isn't covered in the doc.
>> 
>> First the orthogonal benefits:  The main benefit we would get from using CI
>> is that we guarantee code in our repo is never broken.  That is to say
>> tests always pass and it always builds correctly.  CI servers are really
>> useful to prevent problems where one developer may have everything working
>> properly on his/her machine, but when they later realize it's not working
>> on another devs machine.  A good example of this is the class-based-lm-test
>> we pushed recently.  It works fine for me locally but it would fail for
>> anyone without kenlm.so.  There are many other examples (javadoc errors,
>> code style, etc) but what will happen in these cases is we'll see a big
>> obvious 'The build has problems' message in the PR page on Github.  If the
>> CI server runs of all of our code quality checks and finds that everything
>> is good we'll get a big 'This PR is ready to merge' message.
>> 
>> Now to the part that overlaps a bit with branching.  There are various
>> branching strategies that we could adopt for the project.  The master / dev
>> branch one is a possibility.  I'd suggest we try commit code strictly in
>> PRs rather than pushing to git.  This would be the equivalent of feature
>> branching from your link.  The reason I'd suggest that approach is that
>> from what I've seen it'll be dead simple to get working with Github and
>> Travis, and it gives us the same goal of having a stable master branch.
>> 
>> If you'd like we can walk through setting this up together on a forked
>> version of our Github repo.  We could do a quick example of how code would
>> be pushed and merged.  I should be available for a google hangout some time
>> this week if that works for you?
>> 
>> -Kellen
>> 
>> 
>> On Mon, Jul 11, 2016 at 10:51 PM, Mattmann, Chris A (3980) <
>> [email protected]> wrote:
>> 
>>> CI = continuous integration :)
>>> 
>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>> Chris Mattmann, Ph.D.
>>> Chief Architect
>>> Instrument Software and Science Data Systems Section (398)
>>> NASA Jet Propulsion Laboratory Pasadena, CA 91109 USA
>>> Office: 168-519, Mailstop: 168-527
>>> Email: [email protected]
>>> WWW:  http://sunset.usc.edu/~mattmann/
>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>> Director, Information Retrieval and Data Science Group (IRDS)
>>> Adjunct Associate Professor, Computer Science Department
>>> University of Southern California, Los Angeles, CA 90089 USA
>>> WWW: http://irds.usc.edu/
>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> On 7/11/16, 4:50 PM, "Matt Post" <[email protected]> wrote:
>>> 
>>>> This sounds fine to me. What does CI stand for?
>>>> 
>>>> Another thing we should do, which might be complementary to this, is just
>>> be more formal about our process. I had been using this method for a while:
>>>> 
>>>>      http://nvie.com/posts/a-successful-git-branching-model/
>>>> 
>>>> Sort of informally, but that could be a good approach (I think someone
>>> suggested it a while ago). In short:
>>>> 
>>>> - "master" is always stable and records official releases
>>>> - development takes place on "develop"
>>>> - if you need to make an important fix, you branch off master, fix it,
>>> then merge that into both "master" (as a point release) and "develop"
>>>> 
>>>> I was using "release" for releases and "master" for develop, but we could
>>> adopt anything.
>>>> 
>>>> Kellen, how does this fit with CI? It seems like we could set it up to do
>>> testing on "master" and "develop" branches --- the first as a sanity check,
>>> and the second as a test for when we could merge into master?
>>>> 
>>>> matt
>>>> 
>>>> 
>>>>> On Jul 11, 2016, at 8:17 AM, kellen sunderland <
>>> [email protected]> wrote:
>>>>> 
>>>>> We've made a lot of progress on moving the project over to Apache +
>>> Maven.
>>>>> I was wondering if now would be a good time to consider re-thinking how
>>> we
>>>>> merge changes into master.  The main goal would be to make sure we have
>>> a
>>>>> stable master branch that everyone can pull from.
>>>>> 
>>>>> What I'd suggest is that we only merge into master once CI has completed
>>>>> testing.  This way we can codify style rules, best practices, and make
>>> sure
>>>>> builds succeed and tests pass.  We can develop new features create PRs
>>> as
>>>>> normal, and then get quick feedback if those PRs are mergable.  I'd also
>>>>> suggest we dis-allow manual pushing to the master branch.
>>>>> 
>>>>> I'm not sure how much effort this would be with the existing CI server,
>>> but
>>>>> I could investigate this if someone could grant me admin permissions.
>>> If
>>>>> it's a Jenkins server I'm sure it's possible.
>>>>> 
>>>>> Another option is to use Travis CI.  I have taken a quick look at
>>> Travis CI
>>>>> and it seems like a quite polished solution.  It's free to use for open
>>>>> source projects.  It supports automatically building + testing PRs.  The
>>>>> interface is really clean.  It has email notifications and group
>>>>> administration support.  It's got support for multiple (programming)
>>>>> languages so we could in theory build kenlm as a build step and run
>>> those
>>>>> tests.
>>>>> 
>>>>> Here's some more info on what the workflow with Travis-CI and PRs would
>>> be
>>>>> https://docs.travis-ci.com/user/pull-requests
>>>>> 
>>>>> What do you guys think?  Is there a strong preference for using Jenkins
>>>>> from the Apache community?  Would everyone be ok with avoiding direct
>>>>> pushes to master?
>>>>> 
>>>>> -Kellen
>>>> 
>>> 
>

Reply via email to