summaryrefslogtreecommitdiffstats
path: root/build-gluster-org/scripts/bugzilla-post.sh
blob: e03150eb42644aa99bfa157dff7a252c351b10df (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/bin/bash
set -x
function commit_message_edited()
{
    if [ "$GERRIT_PATCHSET_NUMBER" != "1" ]; then
        OLD_PATCHSET_NUM="$(($GERRIT_PATCHSET_NUMBER-1))"
        commit_msg=$(curl -X GET https://review.gluster.org/changes/${GERRIT_PROJECT}~${GERRIT_BRANCH}~${GERRIT_CHANGE_ID}/revisions/$OLD_PATCHSET_NUM/commit |  grep message | sed 's/\\n/\'$'\n''/g')

        old_bugid=$(echo $commit_msg | grep -ow -E "([fF][iI][xX][eE][sS]|[uU][pP][dD][aA][tT][eE][sS])(:)?[[:space:]]+bz#[[:digit:]]+" | awk -F '#' '{print $2}');
        if [ -z "$old_bugid" ] ; then
            # This is needed for backward compatibility
            old_bugid=$(echo $commit_msg | grep -i '^bug: ' | awk '{print $2}')
        fi

        if [ "$bugid" == "$old_bugid" ]; then
            exit 0
        fi
    fi
}

function update_bugzilla()
{
    fixes=1
    bugid=$(echo $GERRIT_CHANGE_COMMIT_MESSAGE | base64 -d | grep -ow -E "([fF][iI][xX][eE][sS]|[uU][pP][dD][aA][tT][eE][sS])(:)?[[:space:]]+bz#[[:digit:]]+" | awk -F '#' '{print $2}');
    update_string=$(echo $GERRIT_CHANGE_COMMIT_MESSAGE | base64 -d | grep -ow -E "([fF][iI][xX][eE][sS]|[uU][pP][dD][aA][tT][eE][sS])(:)?[[:space:]]+bz#[[:digit:]]+" | awk -F ' ' '{print $1}');
    if [ ${update_string} == "updates:" ]; then
        fixes=0
    fi

    if [[ -z "$bugid" ]] ; then
        # Needed for backward compatibility
        bugid=$(echo $GERRIT_CHANGE_COMMIT_MESSAGE | base64 -d | grep -i '^bug: ' | awk '{print $2}');
    fi

    if [[ -z "$bugid" ]] ; then
        # This is commit only has a github issue
        return;
    fi

    product=$(bugzilla query -b $bugid --outputformat='%{product}');
    if [ "$product" != "GlusterFS" ]; then
        echo "Wrong product: $product" >&2;
        return 1;
    fi

    #checking the type of event
    if [ "$GERRIT_EVENT_TYPE" != "change-merged" ]; then
        if [ "$GERRIT_PATCHSET_NUMBER" == "1" ]; then
            bugzilla modify  $bugid --comment="REVIEW: $GERRIT_CHANGE_URL ($GERRIT_CHANGE_SUBJECT) posted (#$GERRIT_PATCHSET_NUMBER) for review on $GERRIT_BRANCH by $GERRIT_PATCHSET_UPLOADER_NAME" --status POST;
        else
            commit_message_edited;
            bugzilla modify  $old_bugid --comment="REVISION POSTED: $GERRIT_CHANGE_URL ($GERRIT_CHANGE_SUBJECT) posted (#$GERRIT_PATCHSET_NUMBER) for review on $GERRIT_BRANCH by $GERRIT_PATCHSET_UPLOADER_NAME";
            bugzilla modify  $bugid --comment="REVIEW: $GERRIT_CHANGE_URL ($GERRIT_CHANGE_SUBJECT) posted (#$GERRIT_PATCHSET_NUMBER) for review on $GERRIT_BRANCH by $GERRIT_PATCHSET_UPLOADER_NAME" --status POST;
        fi
    else
        MERGER=$(echo "$GERRIT_PATCHSET_UPLOADER" | sed 's/\\//g')
        if [ ${fixes} == 1 ]; then
            bugzilla modify $bugid  --comment="COMMIT: $GERRIT_CHANGE_URL committed in $GERRIT_BRANCH by $MERGER with a commit message-$(echo; echo;) $(echo $GERRIT_CHANGE_COMMIT_MESSAGE | base64 -d)" --status MODIFIED;
        else
            bugzilla modify $bugid  --comment="COMMIT: $GERRIT_CHANGE_URL committed in $GERRIT_BRANCH by $MERGER with a commit message-$(echo; echo;) $(echo $GERRIT_CHANGE_COMMIT_MESSAGE | base64 -d)";
        fi
    fi
}

function main()
{
    if [ "$GERRIT_PROJECT" != "glusterfs" ]; then
        return;
    fi
    update_bugzilla;
}

main;