[英]How to list all the project variables in a gitlab project via GitLab V4 api
[英]list out gitlab project with many groups and subgroups
我正在嘗試列出 GitLab 項目。 我們在子組中有很多組。 有些小組有 800 個或更多的項目。 我只能獲取一半的項目。
這是腳本:
echo "Project_id, Project_Name, Project_url, Project_default_branch, Group_id" > result_branch.csv
number_of_pages=$(curl -s --head "https://gitlab.com/api/v4/groups/8523968/projects?private_token=$token" | grep -i x-total-pages | awk '{print $2}' | tr -d '\r\n')
for page in $(seq 1 $number_of_pages); do
curl --silent --header "Private-Token: $token" "https://gitlab.com/api/v4/groups/8523968/projects?include_subgroups=true&page=$page" | jq -r '.[] | [.id, .name, .web_url, .default_branch, .namespace.id] | @csv' >> result_branch.csv
cat result_branch.csv | awk {'print$4'} > branches
我如何獲得所有項目?
我只是在本地玩過這個,只需進行一些更改就可以使用它。 首先,就像@Markus 在他的評論中提到的那樣,您錯過了終止 for 循環的done
。 我還將cat result_branch.csv
語句移到 for 循環之外,以便在最后只運行一次。 循環現在看起來像這樣:
for page in $(seq 1 $number_of_pages); do
curl --silent --header "Private-Token: $token" "https://gitlab.com/api/v4/groups/8523968/projects?include_subgroups=true&page=$page" | jq -r '.[] | [.id, .name, .web_url, .default_branch, .namespace.id] | @csv' >> result_branch.csv
done
cat result_branch.csv | awk {'print$4'} > branches
下一個問題是由於awk
的默認字段分隔符。 在最后一步中,您會得到奇怪的結果,因為awk
使用其默認字段分隔符而不是您打算執行的操作:用逗號打斷。 這是使用-F
標志設置字段分隔符的簡單修復:
cat result_branch.csv | awk -F, {'print$4'} > branches
腳本一起變成:
echo "Project_id, Project_Name, Project_url, Project_default_branch, Group_id" > result_branch.csv
number_of_pages=$(curl -s --head "https://gitlab.com/api/v4/groups/8523968/projects?private_token=$token" | grep -i x-total-pages | awk '{print $2}' | tr -d '\r\n')
for page in $(seq 1 $number_of_pages); do
curl --silent --header "Private-Token: $token" "https://gitlab.com/api/v4/groups/8523968/projects?include_subgroups=true&page=$page" | jq -r '.[] | [.id, .name, .web_url, .default_branch, .namespace.id] | @csv' >> result_branch.csv
done
cat result_branch.csv | awk -F, '{print $4}'
最后要注意的一件事是,您的兩個awk
語句的編寫方式不同: awk '{print $2}'
vs. awk {'print $4'}
這似乎沒有什么不同,因為在我的測試中我沒有調整這些並且效果很好,但我總是喜歡每次都以同樣的方式做這樣的事情,所以我建議你使用一種方式或另一個並堅持下去。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.