【问题标题】:How to create Bitbucket repositories from CLI on the hosting server如何从托管服务器上的 CLI 创建 Bitbucket 存储库
【发布时间】:2021-04-23 23:42:11
【问题描述】:

我正在寻求有关如何使用 curl 命令和 Bitbucket API 在主机服务器上创建大量(总共 70 个)Bitbucket 存储库的帮助。我在研究中查看了许多链接,但我得到的只是使用这些网站上的语法的 HTTP 404 错误。

这是我最近发现的最新命令字符串,但尚未测试。这似乎是我使这个过程正常工作所需要的吗?

curl -X POST -u $USER:$(cat $HOME/.pw) -H 'Content-Type: application/json' http://bitbucket..com/2.0/repositories/ -d '{" is_private": true, "scm": "git", "project": {"key": "ABC"}}'

【问题讨论】:

    标签: git bitbucket


    【解决方案1】:

    我有创建多个存储库的类似要求,但那是在 Bitbucket 的云版本中。我想出了一个 python 脚本来处理它。

    1. 我有一个属性文件,其中存储库名称将是部分名称。
    [test-repository6]
    project_key=CUS
    project_description=This is test-repository6
    private_repository=true
    
    1. 使用配置解析器,我从属性文件中读取数据
    config = configparser.ConfigParser()
    config.read('repository.properties')
    
    1. 一个 JSON 文件,其中包含用于创建存储库的数据
    "{\"scm\": \"git\", \"is_private\": \"{private_repository}\", \"fork_policy\": \"no_public_forks\", \"project\": {\"key\": \"{project_key}\"}, \"description\": \"{project_description}\"}"
    
    1. 最后是用于创建属性文件中提到的存储库的 python 脚本
    from subprocess import call
    import configparser
    import subprocess
    import shutil
    import json
    
    project_key = config.get(section_name, "project_key")
    project_description = config.get(section_name, "project_description")
    private_repository = config.get(section_name, "private_repository")
    
    if(private_repository == "true"):
       cmd = 'curl --url "' + bb_url +"/"+ section_name + '" --user ' + bb_user + ':' + bb_pwd + ' --request POST --header "Content-Type: application/json" --data ' + open(os.path.join(base_dir, "repo_creation_private.json"), "r").readline().replace("{project_key}", project_key).replace("{project_description}", project_description).replace("{private_repository}", private_repository)
    else:
      cmd = 'curl --url "' + bb_url +"/"+ section_name + '" --user ' + bb_user + ':' + bb_pwd + ' --request POST --header "Content-Type: application/json" --data ' + open(os.path.join(base_dir, "repo_creation_public.json"), "r").readline().replace("{project_key}", project_key).replace("{project_description}", project_description).replace("{private_repository}", private_repository)
    output = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, creationflags=DETACHED_PROCESS).communicate()
    

    您可以将它放在一个循环中以遍历属性文件中的所有部分。

    【讨论】:

    • 有趣的是,您提到了 Bitbucket 的云版本和服务器版本之间的目标差异。 Atlassian 可能不会实现 API 以对目标进行相同的工作?
    • API 功能相同。区别在于云和本地版本的 API 请求的 URL。
    • 我创建了一个json文件
    • $ cat load.json { \"name\": \"devdocs\", \"scm\": \"git\", \"is_private\": \"true\", \"fork_policy\": \"no_public_forks\", \"description\": \"test\" }
    • 我执行的命令 $ curl -v POST -u user:password -H "Content-Type: application/json" "api.bitbucket.org/rest/1.0/project" -d load.json
    猜你喜欢
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 2017-08-28
    相关资源
    最近更新 更多