我有创建多个存储库的类似要求,但那是在 Bitbucket 的云版本中。我想出了一个 python 脚本来处理它。
- 我有一个属性文件,其中存储库名称将是部分名称。
[test-repository6]
project_key=CUS
project_description=This is test-repository6
private_repository=true
- 使用配置解析器,我从属性文件中读取数据
config = configparser.ConfigParser()
config.read('repository.properties')
- 一个 JSON 文件,其中包含用于创建存储库的数据
"{\"scm\": \"git\", \"is_private\": \"{private_repository}\", \"fork_policy\": \"no_public_forks\", \"project\": {\"key\": \"{project_key}\"}, \"description\": \"{project_description}\"}"
- 最后是用于创建属性文件中提到的存储库的 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()
您可以将它放在一个循环中以遍历属性文件中的所有部分。