Re: Policy proposal (draft): Don't push knowingly broken or work-in-progress work to dist git

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

 



Matthew Miller wrote:
> Yeah, honestly, this is also a pretty serious hardship for the long tail
> of people maintaining a handful of infrequently updated packages. I'm
> hugely in favor of not checking in work in progress on the main or release
> branches, but let's not make more steps.

I still think that the best way to do CI would be what I already suggested 
at least once:
1. maintainer pushes the commit to the branch "rawhide" or "fn"
2. a quick synchronous commit hook validates obvious things such as the
   presence of source files and patches
If this fails, the push fails and we stop here. Otherwise:
3. another commit hook asynchronously triggers a CI build
4. the push succeeds (without waiting for the CI build to complete)
5. the asynchronous CI attempts to build the package
6. if the CI build fails, the branch "rawhide" or "fn" is automatically
   force-pushed back to the last commit that successfully built, and an
   e-mail notification is sent. Force-pushing is safe in that case because
   there was by definition no successful build, hence nothing that shipped
   in any repos. Rewinding to the last successful build should work even if
   multiple broken commits by multiple maintainers have been pushed since.
7. by default, CI builds are treated as scratch builds, but in order to
   conserve resources, it should be possible for the maintainer to mark a CI
   build as a production build either during the build or within a
   reasonable time after completion. Ideally, fedpkg build should
   automatically do that instead of triggering another, redundant build if
   it finds a suitable CI build to retain.

If fully implemented (including the "ideally" part), this achieves the goal 
that maintainers need not adjust their workflow at all. They just push their 
changes and run "fedpkg build", the CI happens behind the scenes, "fedpkg 
build" automatically sets the CI flag to retain the build if successful, and 
watches the CI build unless --nowait is used. And if the build fails, they 
can just commit a fix locally and redo a new push, which will also push the 
previous failed commit back (but the CI will not attempt to build it again 
because there is now a newer commit on top which will be built instead – and 
if that, too, fails, the CI will rewind the whole thing).

At the same time, broken commits never persist in dist-git once they are 
known not to build, the history remains clean (because everything broken 
gets force-pushed out of the way), and, thanks to the automatic force-pushed 
rewind, maintainers can, if they wish, opt to push an amended commit (clean 
history!) instead of the "the last commit was broken, fix it" commit they 
have to do now (but they can still do the latter if they wish, as explained 
above). In contrast, any kind of pull-request workflow, even an automatic 
one, makes the history even less clean than it is now.

        Kevin Kofler
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux