С помощью RestAPI.
Объявляем переменные:
TEAMCITY_TOKEN="token_можно_сгенерировать_в_teamcity_в_профиле_пользователя"
TEAMCITY_URL="http://IP:8111"
Получить ID проектов:
curl -s -H "Authorization: Bearer ${TEAMCITY_TOKEN}" -H "Content-Type: text/plain" -X GET ${TEAMCITY_URL}/app/rest/projects/ | grep -Po '(?<=project id=")[\w]*' | sort -u > projects_ids.txt
Получить наименования (
в т.ч. в kebab-case)
проектов:
curl -s -H "Authorization: Bearer ${TEAMCITY_TOKEN}" -H "Content-Type: text/plain" -X GET ${TEAMCITY_URL}/app/rest/projects/ | grep -Po '(?<=name=")[\w.|-]*' | sort -u > projects_names.txt
Получить описания проектов:
curl -s -H "Authorization: Bearer ${TEAMCITY_TOKEN}" -H "Content-Type: text/plain" -X GET ${TEAMCITY_URL}/app/rest/projects/ | grep -Po '(?<=description=")[\w.|-]*' | sort -u > projects_descriptions.txt
Получить ссылки на репозиторий:
Для начала, необходимо получить список ID всех
Vcs_Roots:
curl -s -H "Authorization: Bearer ${TEAMCITY_TOKEN}" -H "Content-Type: text/plain" -X GET ${TEAMCITY_URL}/app/rest/vcs-roots?locator=count:1000 | grep -Po '(?<=id=")[\w.]*' | sort -u > vcs_ids.txt
Далее, циклом получаем ссылки на репозиторий из каждой строки полученного выше файла:
for i in $(cat vcs_ids.txt) ; do curl -s -H "Authorization: Bearer ${TEAMCITY_TOKEN}" -H "Content-Type: text/plain" -X GET ${TEAMCITY_URL}/app/rest/vcs-roots/id:$i/properties/url >> vcs_urls.txt && echo >> vcs_urls.txt ; done
P.S. Если у вас другая политика именования проектов, то можете подкорректировать использованные в примере регулярные выражения - под ваши реалии.