Заметки и замечания, рассказы и пересказы

Немного про экспорт из Gitlab

Пришлось столкнуться с переносом разного с одного гитлаба на другой. По ходу пьесы выяснилось, что не все так радужно в этом самом опенсорсе, но API и тот же самый опенсорс не плохо выручает.

Самая большая и прекрасная примочка — rvojcik/gitlab-project-export. Прекрасный инструмент для экспорта и импорта данных. Его также можно использовать для бэкапирования данных. Автоматизировать с его помощью работу с API довольно таки удобно. Есть правда и минусы — нужно увеличивать лимиты в настройках Gitlab, а также готовить конфиг файлы для скрипта (при экспорте и импорте, а при импорте еще и создать руками новые репо).

А вот чтобы создать конфиги... право же, не руками же их делать! Нужно будет немного поработать с API Gitlab. Если коротко, то вот такая подсказка:

#!/bin/bash
GL_DOMAIN=""
GL_TOKEN=""
echo "" > gitlab_projects_urls.txt
for ((i=1; ; i+=1)); do
    contents=$(curl "$GL_DOMAIN/api/v4/projects?private_token=$GL_TOKEN&per_page=100&page=$i")
    if jq -e '. | length == 0' >/dev/null; then 
       break
    fi <<< "$contents"
    echo "$contents" | jq -r '.[].ssh_url_to_repo' >> gitlab_projects_urls.txt
done

Кому подсказки недостаточно для полноценной жизни, то добро пожаловать на github, где размещены скрипты целиком. Для работы с gitlab-project-export понадобится установить или скачать саму утилиту (ставится при наличии третьего питона как обычно — pip install gitlab-project-export). Краткое содержание по файликам выглядит следующим образом:

* start2.sh - запускает вереницу событий: на выходе список и сразу экспорт файлов
* start.sh - при наличии готового списка запускается экспорт
* config-creation.sh - обрабатывает config-template.yaml, дописывает в него репо и делает config.yaml 
* config-template.yaml - шаблон для gitlab-project-export.py (нужно указать URL и токен от Gitlab, а также директорию, где будут лежать файлы экспорта)
* config.yaml - готовый конфиг, делается из шаблона config-template.yaml 
* get-all-projects.sh - скрипт для получения списка проектов по API (нужно указать URL и токен от Gitlab)
* gitlab_path_with_namespace.txt - текстовый файл с проектами

Ссылка на гитхаб со скриптами:
https://github.com/skurudo/usefulbash/blob/main/gitlab-export-import/readme.md

Отправить
Поделиться