在Ubuntu系統上使用GitLab API前,需安裝curl
(用于發送HTTP請求)和jq
(用于解析JSON響應)工具。若未安裝,可通過以下命令安裝:
sudo apt update
sudo apt install curl jq -y
GitLab API采用私有令牌(Private Token)或OAuth2進行認證,其中私有令牌是最常用的方式。
api
(全量訪問)、read_repository
(讀取倉庫)、write_repository
(寫入倉庫)等),設置過期時間(可選)。?? 注意:私有令牌相當于賬戶密碼,請勿泄露。
GitLab API遵循RESTful規范,基礎URL為https://gitlab.example.com/api/v4
(example.com
替換為你的GitLab實例地址,自建實例需替換為域名或IP;v4
為當前最新穩定版本)。
使用curl
發送請求時,需在Header中添加PRIVATE-TOKEN
(私有令牌認證):
curl -H "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/<endpoint>"
<your_access_token>
:步驟2中生成的私有令牌。<endpoint>
:API端點(如projects
表示項目列表、projects/1
表示ID為1的項目詳情)。curl -H "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects"
jq
解析):curl -H "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects" | jq '.[].name'
curl -X POST -H "PRIVATE-TOKEN: <your_access_token>" \
-d "name=MyNewProject" \
-d "namespace_id=1" \ # 命名空間ID(如用戶ID或群組ID,可通過`/namespaces`端點獲?。?/span>
"https://gitlab.example.com/api/v4/projects"
name
(項目名稱,必填)、namespace_id
(命名空間ID,必填,指定項目所屬用戶/群組)。curl -H "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1"
1
為項目ID(可通過/projects
端點獲?。?。curl -X POST -H "PRIVATE-TOKEN: <your_access_token>" \
-d "title=Bug Fix" \
-d "description=Fix the login page issue" \
"https://gitlab.example.com/api/v4/projects/1/issues"
title
(Issue標題,必填)、description
(Issue描述,可選)。curl -X POST -H "PRIVATE-TOKEN: <your_access_token>" \
-d "ref=main" \ # 分支名稱(如main、master)
"https://gitlab.example.com/api/v4/projects/1/trigger/pipeline"
GitLab API返回的HTTP狀態碼可指示操作結果:
若返回401 Unauthorized
,需檢查:
若需更復雜的操作(如批量處理、邏輯控制),可使用python-gitlab
庫(需安裝Python 3.7+)。
pip3 install python-gitlab
import gitlab
# 連接GitLab實例
gl = gitlab.Gitlab('https://gitlab.example.com', private_token='<your_access_token>')
# 獲取項目列表
projects = gl.projects.list(all=True)
for project in projects:
print(f"Project Name: {project.name}, ID: {project.id}")
# 獲取指定項目
project = gl.projects.get(1)
print(f"Project Description: {project.description}")
read_repository
,無需寫入權限)。429 Too Many Requests
,需調整請求頻率。