使用Python模块python-gitlab,可以直接在GitLab服务器上完成项目管理,而无需使用内置的GitLab WEB-GUI。因此,可以通过编程方式操作 git 存储库和 wiki。
现在,我找到了一种使用此代码下载、编辑和上传 wiki 页面的方法:
# connect to GitLab server
gl = gitlab.Gitlab(
<URL>,
private_token=<TOKEN>,
api_version=4,
ssl_verify=False
)
# get list of owned projects
lstProjects_owned = gl.projects.list(owned=True)
lstProjectNames_owned = []
for i in range(0, len(lstProjects_owned)):
lstProjectNames_owned.append(lstProjects_owned[i].name)
# get wiki page
idxProject = 0
slgWiki = 'home'
WikiPage = lstProjects_owned[idxProject].wikis.get(slgWiki)
但我还没有找到(在阅读各种文档后)如何上传可以通过 wiki 页面中的超链接访问的文件。
有人知道如何做到这一点(最好使用 Python 和 python-gitlab 模块)吗?
这是我发现的:
您应该使用 gitlab api 与项目的 wiki 存储库 进行交互,并以这种方式上传文件。了解如何克隆 wiki 存储库以及如何上传文件。查看此问题的答案,了解有关上传文件位置的更多信息。
然后,只需使用您已在示例中使用的 wiki API 编辑 wiki 页面,其中包含指向上传文件的超链接。
我不使用 gitlab 或此 API,但这些链接应该可以帮助您开始解决问题。
尚不支持“上传附件到 Wiki”功能。 但我们可以使用 http_post() 方法作为解决方法。
可行的示例是这里
filename = "myfile.png"
with open(filename,"rb") as f:
filedata = f.read()
url = "/projects/%d/wikis/attachments"%prj_id
file_info = {"file": (filename, filedata)}
ans = gl.http_post(url, files=file_info)
if 'link' in ans and 'markdown' in ans['link']:
daily = daily + "\n" + ans['link']['markdown']