bitbucket 向所有存储库添加通知

问题描述 投票:0回答:1

我在 BitBucket 中有超过 100 个存储库。我想订阅所有存储库的所有通知。我可以一一完成(转到每个存储库 - >“...”选项 - >管理通知 - >选择所有通知)

但也许有人知道一种方法来对项目的所有存储库执行此操作。 有人能帮我吗?谢谢你的时间。 乔恩

notifications bitbucket administration
1个回答
0
投票

如果您使用 Bitbucket Server,执行此操作的一种方法是获取所有存储库名称并循环它们,并向

watch
所有存储库发送请求。可以使用 api 文档中定义的查询参数进一步过滤此查询。

https://developer.atlassian.com/server/bitbucket/rest/v811/api-group-repository/#api-api-latest-repos-get

https://developer.atlassian.com/server/bitbucket/rest/v811/api-group-repository/#api-api-latest-projects-projectkey-repos-repositoryslug-watch-post

  • 将所有存储库名称的输出存储在变量
    DATA
    中,作为带有键
    project
    repo
    的对象数组。这些是创建新的
    watch
    请求
  • 所需的路径变量
  • 循环每个对象并
    POST
    .../watch
  • 发出请求
  • POST
    中,
    X-Atlassian-Token
    标头是必需的,因为 Atlassian api 检查 CSRF 验证,如果省略,将发送错误。 这只能用于 cli 请求。
#!/bin/bash

BASEURL=""
APIKEY=""
readarray -t DATA < <(curl -X GET https://$BASEURL/rest/api/latest/repos \
   -H "accept: application/json" \
   -H "authorization: Bearer $APIKEY" \
   -H "cache-control: no-store" \
   | jq -c ' .values[] | {repo: .slug, project: .project.key} ')

for repo in "${DATA[@]}"

do
REPO=$(jq -r ' .repo' <<< $repo)
PROJ=$(jq -r ' .project' <<< $repo)

echo -e "Processing $REPO : $PROJ"

curl -X POST https://$BASEURL/rest/api/latest/projects/$PROJ/repos/$REPO/watch \
  -H "authorization: Bearer $APIKEY" \
  -H "X-Atlassian-Token: no-check"
done;


Atlassian 在使用 API 时存在一个小问题。此操作后

Manage Account > Watched repositories
似乎没有更新。如果您查看实际的存储库,您将看到
Watching
图标已更新。我向他们提交了一个错误 https://support.atlassian.com/requests/CA-2562481/

© www.soinside.com 2019 - 2024. All rights reserved.