2024/9/2

gitlab api , set default branch

ref:

gitlab ce 的rest api 的url 是
http://gitlab.loyaltek.com/api/v4/
之後就是 rest api 的 api resource,例如 projects, groups, users..

gitlab 的 rest api resource 頁面,以runners 為例。
GET /runners/:id/jobs
就是說:
  • http method : GET
  • uri endpoint: /runners/:id/jobs
所以用 curl 就是:
curl -X GET -H "PRIVATE-TOKEN=XXXXX" -url "http://gitlab.loyal.com/api/v4/runners/:id/jobs"
其中 :id 是指 gitlab 中的 project。

gitlab 的所有project,都有一個 id,例如 MISC/testwebapi2:


上面例子的 :id 就是改成 3756。

:id 其實有兩種表示法,一種是剛剛說的 unique id。
另一種就是 namespaced path encoding.

以上面 MISC/testwebapi2 為例,要是完整寫進 url 中, "/" 就會跟後面的 /jobs 混淆。
所以 project 的 path 中的 "/" 要改成 "%2F" : MISC%2Ftestwebapi2

也就是說,上面的例子, :id 可以是 3756,也可以是 MISC%2Ftestwebapi2


request header 的 token 就去 gitlab 的頁面create 一個。
可以在user 的頁面create,也可以在 project, group 的setting create,每個地方 create 的 token,應用範圍不一樣。

有關 set default branch...

第一篇是說:
DEFAULT_BRANCH="develop"
sleep 5
$(curl -sS -X $METHOD \
    -H "PRIVATE-TOKEN: $GITLAB_TOKEN" \
    --url "$GITLAB_URL/projects/$1" \
    --data "default_branch=$DEFAULT_BRANCH")

例如,create new project in subgroup:
curl --request POST --header "PRIVATE-TOKEN: glpat-FtpBssK5S5U6UMdkmcvL" \
 --data "name=testwebapi2" \
 --data "namespace_id=197" \
 "http://gitlab.loyaltek.com/api/v4/projects"
這個 namespace_id 就是 subgroup 的 id,在 gitlab 的 group 頁面,會有 id: 197

project 指定可以用 id (gitlab 的subgroup, project 都有 id)
也可以用 namespace (就像是 path)
不過 path 的 '\' 要改成 %2F

所以 /misc/testwebapi2,project id 是 3756,要 create new branch 可以:
curl --request POST --header "PRIVATE-TOKEN: glpat-FtpBssK5S5U6UMdkmcvL" \
 --url "http://gitlab.loyaltek.com/api/v4/projects/3756/repository/branches?branch=newbranch&ref=master"
 
或是
curl --request POST --header "PRIVATE-TOKEN: glpat-FtpBssK5S5U6UMdkmcvL" \
 --url "http://gitlab.loyaltek.com/api/v4/projects/MISC%2Ftestwebapi2/repository/branches?branch=newbranch2&ref=master"
也就是 url中,projects 後的 id 3756 改成 MISC/testwebapi2,因為要把 "/" 改掉以免線後麵的 repository 混搖,所以規定改成 %2F



要設定 default_branch 的話,就是參考 edit project 的範例:
API 是:
PUT /projects/:id
  • METHOD : PUT
  • resource: projects
project attrib 有 default_branch, value type 是 string。
id 可以用 project id,或是用 pathname (/ 改 %2F)
所以,設定 MISC/testwebapi2 的 defultbranch 是 newbranch2:
curl --request PUT --header "PRIVATE-TOKEN: glpat-FtpBssK5S5U6UMdkmcvL" \
 --url "http://gitlab.loyaltek.com/api/v4/projects/MISC%2Ftestwebapi2" \
 --data "default_branch=newbranch"

沒有留言:

張貼留言