неділю, 13 листопада 2011 р.

Доступ до TeamCity по http

Недавно спостерігав, як мої колеги витягують билди для тестування із TeamCity. Для автоматизації цього процесу був написаний скрипт за допомогою Selenium. Швидке та візуальне рішення. Але воно мене не задовільнило - занадто громіздким інструментом є Selenium для рішення таких задач. Тому я трішки покопався у документації та запропонував ось такий сценарій

1  #!/bin/sh
2  
3  userid="ivan"
4  passwordid="*******"


7  buildlist="TRUE project1 bt1 \
8  FALSE project2 bt2 \
9  FALSE project3 bt3 \
10 FALSE project4 bt4"
11
12 if bt=`zenity --list --radiolist --print-column=3 --column="  " --column="Build name" --column="Build type" \ $buildlist`
13     then echo $bt
14     else echo "Nothing selected"
15 fi
16
17
18 downloadURL="http://teamcity.mydomain.info/httpAuth/downloadArtifacts.html?buildTypeId=$bt&buildId=lastSuccessful"
19 wget --http-user="$userid" --http-password="$passwordid" --content-disposition --no-http-keep-alive "$downloadURL"

Розбитати цей скрипт зручніше із кінця. Основну роботу виконує стрічка 19. Тут з допомогою утиліти wget і завантажується билд. Для аутентифікації користувача використовуються ключі  --http-user та --http-password. Ключ --content-disposition дозволяє записати файл на диск із правильним ім'ям. Якщо не використати цей ключ, завантажений файл матиме ім'я URLy, який на нього вказує.

Головний секрет при завантаженні файла - знати його правильний URL. Формуванням URLу займається стрічка 18. URL має наступну структуру:
http://teamcity.mydomain.info/httpAuth/downloadArtifacts.html?buildTypeId=<>&buildId=lastSuccessful

Тут замість <> необхідно вставити ідентифікатор типу вашого билда. Так як сторінки для типів билдів готуються заздалегідь, його завжди можна підглянути за допомогою браузера. Єдине, чого тестер переважно не знає, так це ідентифікатор останнього зібраного билда. Тому використовуємо хитрість -  додавши до URLа buildId=lastSuccessful ми заставляємо завантажити останній успішно зібраний билд, не знаючи його ідентифікатора.

Так як тестер працює зазвичай із кількома типами билдів, я огранізував у стрічказ 7-15 діалог, в якому вибирається бажаний билд.

Діалог формується за допомогою утиліти zenity, яка входить в дистрибутив ubuntu. В інших дистрибутивах можна знайти dialog чи dialog2 із подібною функціональністю.

Стрічки 3 та 4 звільняють нас від введення паролю. Параноїки можуть їх переписати із використанням GPGP, щоб бува хто не підглянув :)
Ну от і все. До нових зустрічей на сторінках блогу.

Немає коментарів:

Дописати коментар