@Mindgrow

Teamcity — как выгрузить список проектов в txt\excel?

Есть множество проектов в тимсити
Мне необходимо выгрузить весь список проектов - название, описание (в идеале ссылка на репозиторий).

Как это можно сделать?
  • Вопрос задан
  • 41 просмотр
Пригласить эксперта
Ответы на вопрос 1
@i2r
С помощью 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. Если у вас другая политика именования проектов, то можете подкорректировать использованные в примере регулярные выражения - под ваши реалии.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы