如何仅向bitbucket中的bitbucket-pipelines用户授予写权限

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

在将分支保护添加到develop分支之前,bitbucket-pipelines用户在发布结束时自动将版本更改提交到develop分支。

添加分支保护后,由于bitbucket-pipelines没有写入分支的权限,发布失败。这是错误:

+ git push && git push --tags
remote: Permission denied to update branch develop.To http://bitbucket.org/team_name/repo_name
 ! [remote rejected] develop -> develop (pre-receive hook declined)
error: failed to push some refs to 'http://bitbucket.org/team_name/repo_name'

这是 bitbucket-pipelines.yml 文件:

pipelines:
  branches:
    develop:
      - step:
          name: test
          script:
            - npm install
            - npm run tsc
            - npm test
      - step:
          name: release
          trigger: manual
          caches:
            - node
          script:
            - npm install
            - npm run tsc
            - npm publish
            - npm version minor -m "Upgrade to %s [skip ci]"
            - git push && git push --tags

我尝试授予 bitbucket-pipelines 用户写入权限,但是我无法做到这一点,用户名没有出现:

Can't find user.

有没有办法允许该用户即使有分支保护也可以提交,或者是否可以授予该用户写入权限?

提前致谢。

git bitbucket
2个回答
3
投票

您需要创建一个“bot”用户,然后单击其头像,选择一个工作区,单击“设置”>“OAuth 消费者”>“添加消费者”,然后在管道配置中使用客户端 ID 和密钥:

# Get an oauth access token using the client credentials, parsing out the token with jq.
- apt-get update && apt-get install -y curl jq
- >
  export access_token=$(curl -s -X POST -u "${CLIENT_ID}:${CLIENT_SECRET}" \
    https://bitbucket.org/site/oauth2/access_token \
    -d grant_type=client_credentials -d scopes="repository"| jq --raw-output '.access_token')

# Configure git to use the oauth token.
- git remote set-url origin "https://x-token-auth:${access_token}@bitbucket.org/${BITBUCKET_REPO_OWNER}/${BITBUCKET_REPO_SLUG}"

# Make changes and commit back.
- echo "Made a change in build ${BITBUCKET_BUILD_NUMBER}" >> changes.txt
- git add changes.txt
- git commit -m "[skip ci] Updating changes.txt with latest build number."
- git push

更多信息:https://support.atlassian.com/bitbucket-cloud/docs/push-back-to-your-repository/


0
投票

我遇到了类似的问题,并想办法让它发挥作用。步骤如下:

  • 在 bitbucket 中,设置 > 工作区设置 > OAuth 使用者并创建具有存储库管理员权限的临时使用者(这仅在以下步骤中使用,只是为了使推回黑客工作适用于受限分支)
  1. 检索访问令牌

导出 access_token=$(curl -s -X POST -u ":" \ https://bitbucket.org/site/oauth2/access_token \ -d grant_type=client_credentials -d 范围=“存储库”| jq --原始输出 '.access_token')

替换为您的 OAuth 消费者凭据。

  1. 获取分支机构限制

curl --请求 GET \ --url 'https://api.bitbucket.org/2.0/repositories///branch-restrictions' \ --header '授权:承载'${access_token}'' \ --header '接受:application/json'

相应地更换。它将打印出存储库所有可用分支限制的 JSON 响应。找到要进行下一步更改的分支和restriction_id。

  1. 更新分支限制

curl --请求 PUT \ --url 'https://api.bitbucket.org/2.0/repositories///branch-restrictions/' \ --header '授权:承载'${access_token}'' \ --header '接受:application/json' \ --header '内容类型: 应用程序/json' \ --data '{ "type": "分支限制", “用户”:[ { “类型”:“用户”, “用户名”:“” } ], “组”:[] }'

根据需要替换 、 、 和 。 有趣的是,在用户名中,您实际上可以指定工作区名称,这会将您的工作区“用户”添加到限制中,并且推送将按预期工作。 如果您成功了,请告诉我,我很高兴在这方面为您提供帮助,因为我知道弄清楚它对我来说是多么痛苦。

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