Re: better doc (and build) validation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Dec 6, 2017 at 8:02 PM, Alfredo Deza <adeza@xxxxxxxxxx> wrote:
> On Wed, Dec 6, 2017 at 2:44 AM, kefu chai <tchaikov@xxxxxxxxx> wrote:
>> On Wed, Dec 6, 2017 at 4:27 AM, Alfredo Deza <adeza@xxxxxxxxxx> wrote:
>>> On Tue, Dec 5, 2017 at 12:44 PM, Gregory Farnum <gfarnum@xxxxxxxxxx> wrote:
>>>> On Tue, Dec 5, 2017 at 5:31 AM, Alfredo Deza <adeza@xxxxxxxxxx> wrote:
>>>>> It seems like we keep hitting catastrophic build errors with minor doc
>>>>> changes. The last one was introduced by a change I made to the
>>>>> ceph-disk man page that updated the title:
>>>>>
>>>>> https://github.com/ceph/ceph/pull/19241/commits/bd00560c20caeeb1ded211cb81533280338014d1
>>>>>
>>>>> That change builds correctly (!) and will render just fine, and it was
>>>>> merged after the docs build reported as successful.
>>>>>
>>>>> However, this also made all subsequent binary builds break. This
>>>>> disconnect has caused similar issues in the past. At some point the
>>>>> docs build was completely broken for days, because there was no
>>>>> visibility from pull requests.
>>>>>
>>>>> To mitigate that, we now have the docs job building for every pull
>>>>> request, regardless if it is only editing rst files (because, yes, one
>>>>> can break the docs build with C++).
>>>>>
>>>>> This has helped a lot, but it still falls short because the binary
>>>>> build process for Ceph is different from how we build docs (including
>>
>> please note, the cmake building system builds all the artifacts we ship to
>> our enduser. in addition to the binaries, it also builds and intalls scripts,
>> documents, sample configurations, copyright, and more. it's more than
>> merely a "binary build process". i'd call it a "build process". =)
>>
>>>>> man pages). This is why a successful docs build in a PR can still
>>>>> break a binary build.
>>>>
>>>> Do we understand why it failed on the binary build but not the docs build?
>>>>
>>>> Seems like that would help us see if we can replicate any other issues.
>>>
>>> It failed there because the man pages are generated differently, using
>>> a couple of ad-hoc helpers that try to ensure certain conditions. In
>>> this case, it was a Python
>>> utility (ceph/man/conf.py). It was trying to make sure that the title
>>> of the man page matched the name of the man page.
>>> I had added "[DEPRECATED]" to the ceph-disk title, which failed the assertion.
>>>
>>> But because the utilities use plain asserts, you don't get any of that
>>> rich error reporting, just that some value != some other value.
>>>
>>> Regardless, the reason is because the code paths are not the same, so
>>> we need to find a way to either make them the same, or try to report
>>> whatever code paths
>>> we need to touch for a PR.
>>>
>>>>
>>>>> There are a couple of things that could help:
>>>>>
>>>>> 1) I don't entirely follow how CMake is building the man/doc pages,
>>>>> but a job that tries to replicate that path could catch these
>>>>> inconsistencies in PRs.
>>
>> could you define "a job"? we have a target for building the man pages.
>> "make manpages" will build all of them.
>
> See, I didn't know :)
>
> However! That would only build the man pages. I've broken builds
> before when a man page that was expected
> by ceph.spec wasn't there. `make manpages` would get us closer though,
> this is great. By 'job' I meant A jenkins job that could check this.
>
>>
>>>>>
>>>>> 2) Build binaries on every PR, and report them as status.
>>
>> yeah, i guess that's what "needs-qa" is for.
>
> That lacks visibility on reporting back to the PR, and it is a very
> manual process that someone has to go through. My concern is to solve
> this
> in a programmatic way that has a way to notify the author and reviewers of a PR.


i see. but probably you can use more reviewers next time. this is how
i do with my
PRs: check the recent changes of the files the PR is changing, and
find the authors
and reviewers of them, then add them as reviewer or @ them .

well, i know, it's still not a programmatic way. =(


>
> I realize that building binaries for every PR is just not practical
> for us at the pace they get produced.
>>
>>>>>
>>>>> I don't know enough of CMake to attempt #1, and #2 would cause
>>>>> contributors a lot of pain because it would involve having to push to
>>>>> ceph-ci.git always.
>>>>>
>>>>> I am open to any other ideas or suggestions here.
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
>>> the body of a message to majordomo@xxxxxxxxxxxxxxx
>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>
>>
>>
>> --
>> Regards
>> Kefu Chai



-- 
Regards
Kefu Chai
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux