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

Re: [Xen-devel] A document for Xen release management, v2




On 25/07/17 14:25, Wei Liu wrote:
> Hi all

Hi Wei,

Sorry for the late reply.

> ## Script to generate months update emails

I have an updated script on which include jira ticket, version number:

#!/bin/bash
# Use ssmtp for simplicity
# ./status-release.sh | formail -f -s /usr/sbin/ssmtp -bm -t

FILE=`mktemp`
cat << EOF > $FILE

== Hypervisor ==

S: Per-cpu tasklet
O: Konrad Rzeszutek Wilk
E: konrad.wilk@xxxxxxxxxx
J: XEN-28

=== x86 ===

=== ARM ===

== Completed ==

S:
EOF


AWK_FILE=`mktemp`
cat << EOF > $AWK_FILE
BEGIN { s2_count = 1;score = ""; emails=1; first_time = 1; subject=""}
/== /  {
        if ( subject != "" )  {
                if (score != "")
                        print "* ", subject,  "("score")"
        else if (version != "")
            print "* ", subject, "("version")";
        else
            print "* ", subject;
                for (i = 1; i <= s2_count; i++) {
                        if (i in s2)
                                print " ",s2[i];
                }
                if (bug != "")
                        print "  Link: https://bugs.xenproject.org/xen/bug/"bug
                if (jira != "")
            print "  -  "jira
                for (i = 1; i <= count; i++) {
                        if (i in o)
                                print "  -", o[i]
                }
                if (emails)
                        print ""
                first_time = 1;
                subject=""
                email=""
                score=""
                bug=""
        jira=""
        version=""
                count = 1;
                s2_count = 1;
                delete s;
                delete s2;
                delete o;
                delete e;
        }
        print \$0,"\n"
        }
/;/ { };
/S:/    {
        if ( !first_time )  {
                if (score != "")
                        print "* ", subject,  "("score")"
        else if (version != "")
            print "* ", subject, "("version")";
                else
                        print "* ", subject
                for (i = 1; i <= s2_count; i++) {
                        if (i in s2)
                                print " ",s2[i];
                }
                if (bug != "")
                        print "  Link: https://bug.xenproject.org/xen/bug/"bug
                if (jira != "")
            print "  -  "jira
                for (i = 1; i <= count; i++) {
                        if (i in o)
                                print "  -", o[i]
                }
                if (emails)
                        print ""
        }
        first_time = 0;
        sub(\$1, "");
        sub(/^[ \t]+/, "");
        subject=\$0;
        email=""
        bug=""
    jira=""
        count = 1;
        s2_count = 1;
        delete s;
        delete s2;
        delete o;
        delete e;
        score="";
    version="";
        }
/O:/    { sub(\$1, ""); o[count++]=\$0; };
/S2:/   { sub(\$1, ""); s2[s2_count++]=\$0;};
/E:/    { sub(\$1, ""); sub(/^[ \t]+/, ""); email=\$0; e[emails++]=\$0;};
/P:/    { sub(\$1, ""); sub(/^[ \t]+/, ""); score=\$0; };
/B:/    { sub(\$1, ""); sub(/^[ \t]+/, ""); bug=\$0; };
/J:/    { sub(\$1, ""); sub(/^[ \t]+/, ""); jira=\$0; };
/V:/    { sub(\$1, ""); sub(/^[ \t]+/, ""); version=\$0; };
END     {
        }
// {  }
EOF
AWK_FILE_EMAIL=`mktemp`
cat << EOF > $AWK_FILE_EMAIL
BEGIN { emails=1;}
/E:/    {
        sub(\$1, ""); sub(/^[ \t]+/, "");
        email=\$0;
        for ( i = 1; i <= emails; i++ ) {
                if (i in e) {
                        if (e[i] == email) {
                                email="";
                                break;
                        }
                }
        }
        if (email != "")
                e[emails++]=email;
}
END     {
        printf "Bcc: "
        for ( i = 1; i <= emails; i++ )
                if (i in e) {
                        if (i == emails - 1)
                                printf "<%s>", e[i];
                        else
                                printf "<%s>,", e[i];
                }
        print ""
        }
// {  }
EOF

echo "From: $RELEASE_MANAGER_NAME <$RELEASE_MANAGER_MAIL>"
echo "To: xen-devel@xxxxxxxxxxxxxxxxxxxx"
echo "Cc: $RELEASE_MANAGER_MAIL"
cat $FILE | awk -f $AWK_FILE_EMAIL
rm $AWK_FILE_EMAIL

echo "Subject: Xen $RELEASE_VERSION Development Update"
PRE=`mktemp`
cat << EOF > $PRE

This email only tracks big items for xen.git tree. Please reply for items you
woulk like to see in $RELEASE_VERSION so that people have an idea what is going 
on and
prioritise accordingly.

You're welcome to provide description and use cases of the feature you're
working on.

= Timeline =

We now adopt a fixed cut-off date scheme. We will release twice a
year. The upcoming $RELEASE_VERSION timeline are as followed:

* Last posting date: $RELEASE_CUTOFF
* Hard code freeze: $RELEASE_FREEZE
* RC1: TBD
* Release: $RELEASE_DATE

Note that we don't have freeze exception scheme anymore. All patches
that wish to go into $RELEASE_VERSION must be posted no later than the last 
posting
date. All patches posted after that date will be automatically queued
into next release.

RCs will be arranged immediately after freeze.

We recently introduced a jira instance to track all the tasks (not only big)
for the project. See: https://xenproject.atlassian.net/projects/XEN/issues.

Most of the tasks tracked by this e-mail also have a corresponding jira task
referred by XEN-N.

I have started to include the version number of series associated to each
feature. Can each owner send an update on the version number if the series
was posted upstream?

= Projects =

EOF

POST=`mktemp`
cat <<EOF > $POST

EOF

# Preamble
cat $PRE
rm $PRE
# Body
cat $FILE | awk -f $AWK_FILE
rm $AWK_FILE
rm $FILE
cat $POST
rm $POST

-- 
Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.