Засоби для тегування і випуску нових версій продуктів.
Поряд із стандартним пітонівським засобом distutils існує ще кілька пакетів які з'явилися і широко застосовуються в середовищі Zope/Plone розробників. Такі як collective.dist, collective.releaser, zest.releaser, jarn.mkrelease. Всі ці релізери розвиваються з прицілом на спрощення і більшу автоматизацію тегування та випуску продуктів.
Перш за все python distutils стандартна пітонівська бібліотека. Distuils встановлюють правила опису дистрибутива пакета. З точки зору кінцевого користувача ця бібліотека покликана спростити і уніфікувати спосіб інсталяції додаткових пітонівських пакетів і програм. А також вона надає розробникам гнучкий інтерфейс для дистрибуції пакетів через pypi сервери. коротко це вкладається в таку команду:
python setup.py register sdist upload
Яка означає спакувати сорс дистрибуцію поточного пакета зареєструвати на індексному сервері і викласти архів. Для конфігурації distutils використовує файл налаштувань .pypirc
[distutils] index-servers = pypi [pypi] repository:http://pypi.python.org/pypi username: <username> password: <password>
Тобто з допомогою distutils можна спакувати дистрибутив і викласти його на pypi сервер.
В реальному житті перед розробниками стоїть ще кілька задач, які пов'язані з випуском нових версій продуктів. Такі як тегуванння версії, інкремент версії, також за наявності кількох індексних серверів розміщення пакету і на них, врахування умов комерційний/некомерційний пакет.
collective.dist - (python < 2.6) додає можливіть використовувати кілька індексних серверів дві команди mregister, mupload
[distutils] index-servers = pypi plone [pypi] repository:http://pypi.python.org/pypi username: <username> password: <password> [plone] repository:http://plone.org/products username: <username> password: <password>
collective.releaser - вводить команду release, вміє тегувати продукт в SVN, інкрементувати версії, робота з цілим проектом. Також додає можливість сконфігурувати спосіб релізу для кожного сервера з доомогою нової змінної release-command. Змінна release-packages забезпечує фільтр на ім'я пакету яким визначається чи пакет реліізити на відповідний сервер - доволі незручний механізм фільтрування.
[plone] repository:http://plone.org/products username: <username> password: <password> release-command = mregister sdist build_mo bdist_egg mupload release-packages = .*
zest.releaser - вводить команду release, додає гнучкий контроль "до-реліз" і "пост-реліз" кроків, вміє компонувати HISTORY.txt.
jarn.mkrelease - окрім SVN працює з git, підтримує викладання по SCP, вміє релізити з тегів, індексний сервер можна передати параметром. Крім .pypirc використовує свій власни конфігураційний файл .mkrelease для налаштування аліасів. Потребує python 2.5/2.6.
[defaults]
distbase =
distdefault = public
[aliases]
public =
jarn.com:/var/dist/public
customerA =
jarn.com:/var/dist/customerA
world =
public
pypi