All of lore.kernel.org
 help / color / mirror / Atom feed
From: Loic Dachary <loic@dachary.org>
To: Ceph Development <ceph-devel@vger.kernel.org>
Subject: Ceph backports workflow update
Date: Tue, 03 Feb 2015 14:32:11 +0100	[thread overview]
Message-ID: <54D0CDDB.1020102@dachary.org> (raw)

[-- Attachment #1: Type: text/plain, Size: 4507 bytes --]

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 #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

             reply	other threads:[~2015-02-03 13:32 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-03 13:32 Loic Dachary [this message]
2015-02-11 16:42 ` Ceph backports workflow update Loic Dachary
2015-02-11 17:27   ` Gregory Farnum
2015-02-11 18:19     ` Loic Dachary
2015-02-11 22:51       ` Gregory Farnum

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54D0CDDB.1020102@dachary.org \
    --to=loic@dachary.org \
    --cc=ceph-devel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.