Skip to content

Instantly share code, notes, and snippets.

@wujku
Last active November 28, 2023 10:06
Show Gist options
  • Save wujku/82983c22a5a85ab7f92bb9d4cad245e6 to your computer and use it in GitHub Desktop.
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
#!/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