Project

General

Profile

Actions

HOWTO write the release notes » History » Revision 4

« Previous | Revision 4/58 (diff) | Next »
Loïc Dachary, 04/27/2015 07:43 AM


  • git clone -b release (for instance git clone -b dumpling http://github.com/ceph/ceph)
  • run the following to get a base to work on
    #!/usr/bin/env python
    # First published by Abhishek Lekshmanan at https://gist.github.com/theanalyst/a0932d863a8f4b0d1b98
    # Originally borrowed from A. Israel's https://gist.github.com/aisrael/b2b78d9dfdd176a232b9
    from __future__ import print_function
    import re
    import github
    
    from git import Repo
    
    gh = github.GitHub(
        access_token="somesecret")
    merge_re = re.compile("Merge pull request #(\d+).*")
    fixes_re = re.compile("Fixes (#\d+)")
    tracker_re = re.compile("http://tracker.ceph.com/issues/(\d+)")
    signed_off_re = re.compile("Signed-off-by: (.+) <")
    
    def make_release_notes(repo, ref):
    
        for commit in repo.iter_commits(ref):
            merge = merge_re.match(commit.summary)
            if merge:
                pr = {}
                issue = ''
                pr = gh.repos("ceph")("ceph").pulls(merge.group(1)).get()
                # We are not handling multiple issues here yet
                if pr['body']:
                    fixes = fixes_re.findall(pr['body'])
                    tracker = tracker_re.findall(pr['body'])
                    if tracker:
                        issue = ','.join(tracker)
                    elif fixes:
                        issue = ','.join(fixes)
    
                title = pr['title']
                # Big assumption, do a sanity check in the end, we are
                # getting the author of final merge commit
                author = commit.parents[-1].author.name
                if issue:
                    print ("{0}(#{1}, {2})".format(title,issue,author))
                elif author:
                    print ("{0}({1})".format(title,author))
                else:
                    print (title)
    
    if __name__ == "__main__":
        make_release_notes(Repo("."),"tags/v0.87.1..giant")
    
    
  • manual edit the list of commits
  • add a section in http://docs.ceph.com/docs/master/release-notes/ in the master branch of ceph in the release-notes.rst file with the list of commits
  • backport the release notes to the release branch when they are final. Ideally this is done before the point release is published. If not it can be backported shortly afterwards.
  • add the release to the timeline
  • the release notes come with an introduction that is prepared in a separate file . It can be edited if something significant must not be forgotten and it does not need to well written because it is a draft.

Updated by Loïc Dachary about 9 years ago · 4 revisions