Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get pull request subject/topic automatically

I would like to create automated release notes based on the Pull Request description like "Add legal resolutions claim report function" on the screen below.

I'm not very good with Pull Requests and not even sure is that "description" is Bitbucket only functionality. However the question is how can I automatically get this description from Pull Request? I couldn't find anywhere in the commits messages.

enter image description here

like image 886
Dmitrij Kultasev Avatar asked Sep 06 '18 09:09

Dmitrij Kultasev


1 Answers

Today, Bitbucket has two main services: Bitbucket Server and Bitbucket Cloud. If you have not downloaded a bitbucket server, you're most likely using the bitbucket cloud. To connect to the Bitbucket Cloud API, you can either use the Atlassian Connect to build an app to connect to bitbucket or you can use the rest apis (reference to all of their endpoints: https://developer.atlassian.com/bitbucket/api/2/reference/).

This is the api you would call to get all the information of all the pull requests from a given <repository name> of a <username>:

curl -u <username>:<password> https://api.bitbucket.org/2.0/repositories/<username>/<repository name>/pullrequests

If you have jq installed, you could pipe the output of the above api to it to retrieve only the descriptions, as you requested in your question. The following command would list all descriptions of all pull requests from <repository name> of <username>:

curl -u <username>:<password> https://api.bitbucket.org/2.0/repositories/<username>/<repository name>/pullrequests | jq ".values[] | .summary.raw"

This is the output I get from running requesting the above api on my bitbucket repository:

{
    "pagelen": 10,
    "values": [
        {
            "description": "this is just a description for testing the pull request api endpoint",
            "links": {
                "decline": {
                    "href": "https://api.bitbucket.org/2.0/repositories/dhulke/ojspkp/pullrequests/1/decline"
                },
                "commits": {
                    "href": "https://api.bitbucket.org/2.0/repositories/dhulke/ojspkp/pullrequests/1/commits"
                },
                "self": {
                    "href": "https://api.bitbucket.org/2.0/repositories/dhulke/ojspkp/pullrequests/1"
                },
                "comments": {
                    "href": "https://api.bitbucket.org/2.0/repositories/dhulke/ojspkp/pullrequests/1/comments"
                },
                "merge": {
                    "href": "https://api.bitbucket.org/2.0/repositories/dhulke/ojspkp/pullrequests/1/merge"
                },
                "html": {
                    "href": "https://bitbucket.org/dhulke/ojspkp/pull-requests/1"
                },
                "activity": {
                    "href": "https://api.bitbucket.org/2.0/repositories/dhulke/ojspkp/pullrequests/1/activity"
                },
                "diff": {
                    "href": "https://api.bitbucket.org/2.0/repositories/dhulke/ojspkp/pullrequests/1/diff"
                },
                "approve": {
                    "href": "https://api.bitbucket.org/2.0/repositories/dhulke/ojspkp/pullrequests/1/approve"
                },
                "statuses": {
                    "href": "https://api.bitbucket.org/2.0/repositories/dhulke/ojspkp/pullrequests/1/statuses"
                }
            },
            "title": "adding a to test a pull request",
            "close_source_branch": false,
            "type": "pullrequest",
            "id": 1,
            "destination": {
                "commit": {
                    "hash": "6188a5897db9",
                    "type": "commit",
                    "links": {
                        "self": {
                            "href": "https://api.bitbucket.org/2.0/repositories/dhulke/ojspkp/commit/6188a5897db9"
                        },
                        "html": {
                            "href": "https://bitbucket.org/dhulke/ojspkp/commits/6188a5897db9"
                        }
                    }
                },
                "repository": {
                    "links": {
                        "self": {
                            "href": "https://api.bitbucket.org/2.0/repositories/dhulke/ojspkp"
                        },
                        "html": {
                            "href": "https://bitbucket.org/dhulke/ojspkp"
                        },
                        "avatar": {
                            "href": "https://bytebucket.org/ravatar/%7B605ba8e3-7b25-4093-9c72-f847da4b2464%7D?ts=default"
                        }
                    },
                    "type": "repository",
                    "name": "OJSPKP",
                    "full_name": "dhulke/ojspkp",
                    "uuid": "{605ba8e3-7b25-4093-9c72-f847da4b2464}"
                },
                "branch": {
                    "name": "master"
                }
            },
            "created_on": "2018-09-15T23:17:25.931924+00:00",
            "summary": {
                "raw": "this is just a description for testing the pull request api endpoint",
                "markup": "markdown",
                "html": "<p>this is just a description for testing the pull request api endpoint</p>",
                "type": "rendered"
            },
            "source": {
                "commit": {
                    "hash": "b02656e67546",
                    "type": "commit",
                    "links": {
                        "self": {
                            "href": "https://api.bitbucket.org/2.0/repositories/dhulke/ojspkp/commit/b02656e67546"
                        },
                        "html": {
                            "href": "https://bitbucket.org/dhulke/ojspkp/commits/b02656e67546"
                        }
                    }
                },
                "repository": {
                    "links": {
                        "self": {
                            "href": "https://api.bitbucket.org/2.0/repositories/dhulke/ojspkp"
                        },
                        "html": {
                            "href": "https://bitbucket.org/dhulke/ojspkp"
                        },
                        "avatar": {
                            "href": "https://bytebucket.org/ravatar/%7B605ba8e3-7b25-4093-9c72-f847da4b2464%7D?ts=default"
                        }
                    },
                    "type": "repository",
                    "name": "OJSPKP",
                    "full_name": "dhulke/ojspkp",
                    "uuid": "{605ba8e3-7b25-4093-9c72-f847da4b2464}"
                },
                "branch": {
                    "name": "teste"
                }
            },
            "comment_count": 0,
            "state": "OPEN",
            "task_count": 0,
            "reason": "",
            "updated_on": "2018-09-15T23:17:25.963178+00:00",
            "author": {
                "username": "dhulke",
                "display_name": "Danilo Moraes",
                "account_id": "557058:ab26766f-757e-4687-88ff-099bd94b0895",
                "links": {
                    "self": {
                        "href": "https://api.bitbucket.org/2.0/users/dhulke"
                    },
                    "html": {
                        "href": "https://bitbucket.org/dhulke/"
                    },
                    "avatar": {
                        "href": "https://bitbucket.org/account/dhulke/avatar/"
                    }
                },
                "type": "user",
                "uuid": "{1b22ad2c-9f1c-48f4-b9dc-958e8eddd3e8}"
            },
            "merge_commit": null,
            "closed_by": null
        }
    ],
    "page": 1,
    "size": 1
}
like image 184
Danilo Souza Morães Avatar answered Oct 23 '22 18:10

Danilo Souza Morães