Ceph backports workflow update

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

 



Hi Ceph,

A month ago the following workflow was posted and I began to implement it.

> 0. Developer follows normal process to land PR to master. Once complete and ticket is marked Pending Backport this process initiates.

There were a few inconsistencies but they were easy to fix. When the tag is missing I update it manually (the redmine API is broken http://tracker.ceph.com/issues/10727 otherwise I would probably have written a script to semi-manually do that).

> 1. I periodically polls Redmine to look for tickets in Pending Backport state and focus on the ones that are left unattended for too long

I focused on giant and dumpling and was able to help with a few backports. However, I've not yet visited the majority of the issues that need attention ( see http://workbench.dachary.org/ceph/ceph-backports/wikis/dumpling#issues-that-need-backporting for dumpling and http://workbench.dachary.org/ceph/ceph-backports/wikis/giant#issues-that-need-backporting for giant ).

> 1a. Under the supervision of the author of the original patch, I find the commits associated with the Redmine ticket and Cherry Pick to the backport integration branch off of the desired maintenance branch (Dumping, Firefly, etc).
> 1b. I resolve any merge conflicts with the cherry-picked commit

It turns out that finding the relevant commits in almost all backports is made possible by the cross references between pull requests, commits and issues. I was able to backport commits that are trivial. Most of the other backports were done by the original author of the patch because I did not understand enough of the context to be helpful. 

> 2. I merge all backports for a given branch in an integration branch

It is done with something like

git merge --strategy octopus backports/pull/3439/head backports/pull/3552/head backports/pull/3489/head

and there currently are two integration branches:

* pull requests in dumpling-backports http://workbench.dachary.org/ceph/ceph-backports/wikis/dumpling#included-and-tested-in-integration-branch
* pull requests in giant-backports http://workbench.dachary.org/ceph/ceph-backports/wikis/giant#included-and-tested-in-integration-branch

Only once did I face a merge conflict. It was trivial and I resolved it. I should go back to the author of the patch and warn him about this conflict so that it does not create difficulties when all branches are finally merged.

> 3. I ask the leads of each project to review the integration

I did not do that. If I had been able to backport the non trivial commits, it may have been necessary. But I've been in contact with the leads regarding the individual backports and reviewing the set of commits being integrated seemed redundant. 

> 4. Once satisfied with group of backported commits to integration branch, I notify QE.

Running rbd, rados, rgw and is the bulkd of the work. The progress of the test runs and analysis are:

* dumpling http://tracker.ceph.com/issues/10560
* giant http://tracker.ceph.com/issues/10501

This is usually done as a mail thread in the ceph-qa mailing list but I did not want to disturb the list with the backports. In addition I felt the need to see the past analysis on a single page to remember where I was after a few days doing something else. The mail thread format did not provide that and I prefered to create a ticket for that purpose. It's proven both useful and cumbersome, I'll try to figure out something that shows the same information without so much manual maintenance.

> 5. QE tests backport integration branch against appropriate suites
> 6a. If QE is satisfied with test results, they merge backport integration branch.
> 6b. If QE is NOT satisfied with the test results, they indicate backport integration branch is NOT ready to merge and return to me to work with original Developer to resolve issue and return to steps 2/3
> 7. Ticket is moved to Resolved once backport integration branch containing cherry-picked backport is merged to the desired mainteance branch(es)

I've not yet reached this point, to be continued :-)

Cheers

P.S. Manually investigating each backport proved to be extremely tedious and repetitive. Fortunately there are patterns that allowed me to grow a script that creates an inventory for each branch to be backported ( http://workbench.dachary.org/ceph/ceph-backports/wikis/dumpling etc. ) that I use as my landing page when working on backports.

-- 
Loïc Dachary, Artisan Logiciel Libre

Attachment: signature.asc
Description: OpenPGP digital signature


[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