Last active
November 28, 2023 10:06
-
-
Save wujku/82983c22a5a85ab7f92bb9d4cad245e6 to your computer and use it in GitHub Desktop.
Add a deploy key to projects from a specific group, taking into account that the API returns results with a limit of 100 elements per page
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Zmienne | |
GITLAB_API="https://gitlab.com/api/v4" # Zmień na adres swojego GitLab | |
GROUP_ID="19" # Zmień na ID grupy, z której chcesz wyciągnąć projekty | |
DEPLOY_KEY_ID=$1 # Zmień na ID klucza deploy | |
# Print helpFunction in case parameters are empty | |
if [ -z "$DEPLOY_KEY_ID" ] | |
then | |
echo "Define argument as Deploy Key ID"; | |
exit 1; | |
fi | |
# Prywatny token dostępowy GitLab | |
PRIVATE_TOKEN="xxx" | |
page=1 | |
project_ids=() | |
while true; do | |
response=$(curl -s --header "PRIVATE-TOKEN: $PRIVATE_TOKEN" "$GITLAB_API/groups/$GROUP_ID/projects?page=$page&per_page=100") | |
count_page_items=($(echo "$response" | jq '. | length')) | |
if [ $count_page_items == 0 ]; then | |
break # Koniec paginacji | |
fi | |
page_project_ids=($(echo "$response" | jq -r '.[].id')) | |
project_ids+=("${page_project_ids[@]}") | |
((page++)) | |
done | |
# Dla każdego projektu, sprawdź, czy klucz deploy jest już przypisany | |
for project_id in "${project_ids[@]}"; do | |
response=$(curl -s --request POST --header "PRIVATE-TOKEN: $PRIVATE_TOKEN" "$GITLAB_API/projects/$project_id/deploy_keys/$DEPLOY_KEY_ID/enable") | |
# Sprawdź, czy przypisanie klucza deploy się powiodło | |
if [[ $response == *\"id\":$DEPLOY_KEY_ID* ]]; then | |
echo "Klucz deploy został przypisany do projektu o ID: $project_id" | |
else | |
echo "Błąd podczas przypisywania klucza deploy do projektu o ID: $project_id" | |
fi | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment