[英]How to create a new branch, push a text file and send merge request to a gitlab repository using Python?
沒錯,我們在文檔中找不到任何測試。 這是您問題的基本答案。
如果您想要一個完整的工作腳本,我已將其附在此處: https://github.com/gitshashwat/general_ purpose_scripts/blob/main/usecase_gitlab_python.py
分解以下步驟:
為您創建 authkey:按照此處的步驟操作: https://docs.gitlab.com/ee/user/profile/personal_access_tokens.ZFC35FDC70D5FC69D269883A822C7A
創建項目的 gitlab 服務器實例
server = gitlab.Gitlab('https://gitlab.example.com', private_token=YOUR_API_TOKEN)
project = server.projects.get(PROJECT_ID)
使用以下命令創建分支:
branch = project.branches.create(
{"branch": branch_name, "ref": project.default_branch}
)
使用以下方式上傳文件:
project.files.create(
{
"file_path": file_name,
"branch": branch.name,
"content": "data to be written",
"encoding": "text", # or 'base64'; useful for binary files
"author_email": AUTHOR_EMAIL, # Optional
"author_name": AUTHOR_NAME, # Optional
"commit_message": "Create file",
}
)
使用以下命令創建合並請求:
project.mergerequests.create(
{
"source_branch": branch.name,
"target_branch": project.default_branch,
"title": "merge request title",
}
)
查看python-gitlab
,我沒有看到您正在尋找的一些東西。 在這種情況下,我建議您將其拆分並使用更基本的工具和庫來執行各個步驟。
前兩部分不需要使用 Gitlab API 來做。 您基本上可以使用 Python 使用git.exe
並針對您的磁盤進行克隆、分支、編輯和提交調用。 在某些方面,這更容易,因為您可以自己復制呼叫。 你可以使用GitPython 。
我建議您通過其中一種方法執行此操作,而不是嘗試通過 Gitlab API 執行此操作。 如果您在本地(甚至在 CI 內部)進行分支工作,則更容易理解、調試和調查。
將代碼推送到分支后,您可以使用 Gitlab 的 API 通過 REST(例如requests
庫)創建合並請求。 創建 MR 的描述位於https://docs.gitlab.com/ee/api/merge_requests.html#create-mr並且大多數字段都是可選的,因此最小值如下所示:
{
"id": "some-user%2Fsome-project",
"source_branch": "name_of_your_mr_branch",
"target_branch": "main",
"title": "Automated Merge Request..."
}
這是一個經過身份驗證的 POST 調用(創建)。 在這些鏈接之間,您應該擁有執行此操作所需的大部分內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.