簡體   English   中英

列出具有許多組和子組的 gitlab 項目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM