以编程方式在 Bitbucket 上创建 Pull Request?
Programmatically create Pull Request on Bitbucket?
更新:好吧,我在 Bash 脚本中 运行 这个,但我想看看我得到了什么错误代码,现在我可以看到我得到了 401 Unauthorized
。我正在使用我的用户名并使用 admin
access bitbucket 创建了个人访问令牌,所以我应该能够创建 PR,对吗?我可以通过网络 UI 在同一存储库上执行此操作吗?
我是 运行 一个 bash 脚本,用于在 Bitbucket 上创建拉取请求。我已经以编程方式克隆 repo,编辑文件,执行 git add/commit,现在我只需要使用 CURL 来制作 PR。似乎 bitbucket API 公开了一个端点来使用 POST 请求来执行此操作:
Creates a new pull request where the destination repository is this repository and the author is the authenticated user.
The minimum required fields to create a pull request are title and source, specified by a branch name.
curl https://api.bitbucket.org/2.0/repositories/my-username/my-repository/pullrequests \
-u my-username:my-password \
--request POST \
--header 'Content-Type: application/json' \
--data '{
"title": "My Title",
"source": {
"branch": {
"name": "staging"
}
}
}'
这是我的仓库在 Bitbucket 上的样子,我屏蔽掉了真实姓名,但左边的格式相同(第一个名字是项目名称,REACTOR2.0
,而我认为第二个名字是仓库姓名,dat-repo
):
我正在尝试许多不同的变体,并且正在检查远程 bitbucket 服务器是否有新的拉取请求,但我没有看到 什么。
我确定我的“头衔”和“部门”是正确的。我唯一的问题是关于 URL;我从 bitbucket 输入我的用户名,如果你去“管理帐户”然后“名称”,这是我用于 URL 的 my-username
部分的字段,我正在添加my-repository
部分的存储库名称。但是,我需要注意,这是一个位于名为“REACTOR2.0”的项目中的 bitbucket nested 上的存储库,所以我不确定如果需要在 URL 某处指定项目名称。
有没有人成功过这个 API?我查看了 google,但很多问题都在使用旧的 1.0 API 并且不适用,或者人们正在执行 GET 请求只是获取拉取请求列表....
我用错了API。有一个 BitBucket 云 API,用于托管在 bitbucket 上的存储库 URLs,如 bitbucket.com/ 和一个 BitBucket Server API URL类似于https://bitbucket.mycompanyname.com/,这是我需要使用的API。
最后,URL应该是这样的(需要填写YourCompanyName
、YourProjectKey
、YourRepositoryName
参数):
https://bitbucket.YourCompanyHostName.com/rest/api/1.0/projects/YourProjectKey/repos/YourRepositoryName/pull-requests
和JSON到post:
{
"title": "Talking Nerdy",
"description": "It’s a kludge, but put the tuple from the database in the cache.",
"state": "OPEN",
"open": true,
"closed": false,
"fromRef": {
"id": "refs/heads/feature-ABC-123",
"repository": {
"slug": "my-repo",
"name": null,
"project": {
"key": "PRJ"
}
}
},
"toRef": {
"id": "refs/heads/master",
"repository": {
"slug": "my-repo",
"name": null,
"project": {
"key": "PRJ"
}
}
},
"locked": false,
"reviewers": [
{
"user": {
"name": "reviewersName1"
}
},
{
"user": {
"name": "reviewerName2"
}
}
]
}
如果您选择通过 CURL 来点击 API,您可以用这样的方式来表达该请求:
curl -H "Authorization: Basic EncryptedBase64UsernamePasswordHere" \
-H "Content-Type: application/json" \
"https://bitbucket.YourCompanyName.com/rest/api/1.0/projects/YourProjectKey/repos/YourRepositoryName/pull-requests" \
-d JsonDataFromAboveHere
您可以在下面阅读有关 身份验证 的更多信息,但您也可以在 CURL 请求中使用 -u username:password
进行身份验证 或 您可以采用 username:password 字符串并对它进行 base64 编码,然后使用 -H "Authentication: Basic BASE64ENCODEDUSERNAMEPASSWORDHERE"
,由您决定。您可能需要使用下面的内容来转义 JSON double-quotes",具体取决于您发出此请求的机器类型,如下所示:
"{\"title\": \"Talking Nerdy\",
\"description\": \"It’s a kludge, but put the tuple from the database in the cache.\",
\"state\": \"OPEN\",
\"open\": true,
\"closed\": false,
\"fromRef\": {
\"id\": \"refs/heads/feature-ABC-123\",
\"repository\": {
\"slug\": \"my-repo\",
\"name\": null,
\"project\": {
\"key\": \"PRJ\"
}
}
},
\"toRef\": {
\"id\": \"refs/heads/master\",
\"repository\": {
\"slug\": \"my-repo\",
\"name\": null,
\"project\": {
\"key\": \"PRJ\"
}
}
},
\"locked\": false,
\"reviewers\": [
{
\"user\": {
\"name\": \"reviewerName1\"
}
},
{
\"user\": {
\"name\": \"reviewerName2\"
}
}
]
}"
如果您想添加评论者但不知道名字,可以向上面的 URL 发出 GET 请求,它将给出一个用户列表,然后可以将他们的名字添加到审阅者数组中,这样当创建 PR 时,他们已经被添加为审阅者。
身份验证:
https://developer.atlassian.com/server/bitbucket/how-tos/example-basic-authentication/
休息API:
https://developer.atlassian.com/server/bitbucket/how-tos/command-line-rest/
拉取请求:
https://docs.atlassian.com/bitbucket-server/rest/7.6.0/bitbucket-rest.html#idp291
更新:好吧,我在 Bash 脚本中 运行 这个,但我想看看我得到了什么错误代码,现在我可以看到我得到了 401 Unauthorized
。我正在使用我的用户名并使用 admin
access bitbucket 创建了个人访问令牌,所以我应该能够创建 PR,对吗?我可以通过网络 UI 在同一存储库上执行此操作吗?
我是 运行 一个 bash 脚本,用于在 Bitbucket 上创建拉取请求。我已经以编程方式克隆 repo,编辑文件,执行 git add/commit,现在我只需要使用 CURL 来制作 PR。似乎 bitbucket API 公开了一个端点来使用 POST 请求来执行此操作:
Creates a new pull request where the destination repository is this repository and the author is the authenticated user.
The minimum required fields to create a pull request are title and source, specified by a branch name.
curl https://api.bitbucket.org/2.0/repositories/my-username/my-repository/pullrequests \
-u my-username:my-password \
--request POST \
--header 'Content-Type: application/json' \
--data '{
"title": "My Title",
"source": {
"branch": {
"name": "staging"
}
}
}'
这是我的仓库在 Bitbucket 上的样子,我屏蔽掉了真实姓名,但左边的格式相同(第一个名字是项目名称,REACTOR2.0
,而我认为第二个名字是仓库姓名,dat-repo
):
我正在尝试许多不同的变体,并且正在检查远程 bitbucket 服务器是否有新的拉取请求,但我没有看到 什么。
我确定我的“头衔”和“部门”是正确的。我唯一的问题是关于 URL;我从 bitbucket 输入我的用户名,如果你去“管理帐户”然后“名称”,这是我用于 URL 的 my-username
部分的字段,我正在添加my-repository
部分的存储库名称。但是,我需要注意,这是一个位于名为“REACTOR2.0”的项目中的 bitbucket nested 上的存储库,所以我不确定如果需要在 URL 某处指定项目名称。
有没有人成功过这个 API?我查看了 google,但很多问题都在使用旧的 1.0 API 并且不适用,或者人们正在执行 GET 请求只是获取拉取请求列表....
我用错了API。有一个 BitBucket 云 API,用于托管在 bitbucket 上的存储库 URLs,如 bitbucket.com/ 和一个 BitBucket Server API URL类似于https://bitbucket.mycompanyname.com/,这是我需要使用的API。
最后,URL应该是这样的(需要填写YourCompanyName
、YourProjectKey
、YourRepositoryName
参数):
https://bitbucket.YourCompanyHostName.com/rest/api/1.0/projects/YourProjectKey/repos/YourRepositoryName/pull-requests
和JSON到post:
{
"title": "Talking Nerdy",
"description": "It’s a kludge, but put the tuple from the database in the cache.",
"state": "OPEN",
"open": true,
"closed": false,
"fromRef": {
"id": "refs/heads/feature-ABC-123",
"repository": {
"slug": "my-repo",
"name": null,
"project": {
"key": "PRJ"
}
}
},
"toRef": {
"id": "refs/heads/master",
"repository": {
"slug": "my-repo",
"name": null,
"project": {
"key": "PRJ"
}
}
},
"locked": false,
"reviewers": [
{
"user": {
"name": "reviewersName1"
}
},
{
"user": {
"name": "reviewerName2"
}
}
]
}
如果您选择通过 CURL 来点击 API,您可以用这样的方式来表达该请求:
curl -H "Authorization: Basic EncryptedBase64UsernamePasswordHere" \
-H "Content-Type: application/json" \
"https://bitbucket.YourCompanyName.com/rest/api/1.0/projects/YourProjectKey/repos/YourRepositoryName/pull-requests" \
-d JsonDataFromAboveHere
您可以在下面阅读有关 身份验证 的更多信息,但您也可以在 CURL 请求中使用 -u username:password
进行身份验证 或 您可以采用 username:password 字符串并对它进行 base64 编码,然后使用 -H "Authentication: Basic BASE64ENCODEDUSERNAMEPASSWORDHERE"
,由您决定。您可能需要使用下面的内容来转义 JSON double-quotes",具体取决于您发出此请求的机器类型,如下所示:
"{\"title\": \"Talking Nerdy\",
\"description\": \"It’s a kludge, but put the tuple from the database in the cache.\",
\"state\": \"OPEN\",
\"open\": true,
\"closed\": false,
\"fromRef\": {
\"id\": \"refs/heads/feature-ABC-123\",
\"repository\": {
\"slug\": \"my-repo\",
\"name\": null,
\"project\": {
\"key\": \"PRJ\"
}
}
},
\"toRef\": {
\"id\": \"refs/heads/master\",
\"repository\": {
\"slug\": \"my-repo\",
\"name\": null,
\"project\": {
\"key\": \"PRJ\"
}
}
},
\"locked\": false,
\"reviewers\": [
{
\"user\": {
\"name\": \"reviewerName1\"
}
},
{
\"user\": {
\"name\": \"reviewerName2\"
}
}
]
}"
如果您想添加评论者但不知道名字,可以向上面的 URL 发出 GET 请求,它将给出一个用户列表,然后可以将他们的名字添加到审阅者数组中,这样当创建 PR 时,他们已经被添加为审阅者。
身份验证: https://developer.atlassian.com/server/bitbucket/how-tos/example-basic-authentication/
休息API: https://developer.atlassian.com/server/bitbucket/how-tos/command-line-rest/
拉取请求: https://docs.atlassian.com/bitbucket-server/rest/7.6.0/bitbucket-rest.html#idp291