LINUX.ORG.RU

Как организовать распространение dev-сборок?

 , ,


0

2

Собственно есть проект, который лежит на github, и хочется сделать dev сборки для него.

Требования:

  • Сборки под три ОС (win, linux, mac).
  • Эти сборки нужно где-то хостить. Но только последнюю версию. Предыдущие не нужны, так как обновления будут довольно часто - места не хватит.
  • Сборка нетривильная (50 строк на баше для каждой ОС + Qt из сорцов на лине), поэтому ci не совсем подходит.
  • Сборка должна происходит при обновлении зависимостей, а не только когда обновится master, что опять же отбрасывает ci.

Всё что придумал - это ручная сборка с заливанием в dropbox(своего сервера нету) с ссылками в readme.

Есть ещё вариант с созданием tag'a/релиза на github с обновлением файлов через api. github позволяет обновлять файлы после публикации релиза (правда хв в течении какого периода).

Кто, что использует?

★★★★★

Ответ на: комментарий от whoami

Я могу использовать Jenkins без сервера? Они сервер предоставляют?

RazrFalcon ★★★★★
() автор топика

Сборка нетривильная (50 строк на баше для каждой ОС + Qt из сорцов на лине), поэтому ci не совсем подходит.

не поняла эту мысль

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

https://docs.travis-ci.com/user/caching/

И публиковать из него артефакты тоже можно.

alpha ★★★★★
()
Ответ на: комментарий от alpha

Проблема с Travis в том, что не понятно как и куда потом выложить результат. И он не умеет в винду, насколько я помню. Для этого нужен AppVeyor.

+ не понятно как принудительно запустить сборку, а не только при обновлении master

RazrFalcon ★★★★★
() автор топика

я использую rsync over ssh на файл-хостинг (sourceforge)

https://github.com/Alexey-Yakovenko/deadbeef/blob/master/travis/upload.sh

edit: ну и да, забыл упомянуть, сборка/CI делается на travis-ci.

edit2: mac и linux есть, про windows не уверен.. вероятно получится кросс-компилировать через mingw?

waker ★★★★★
()
Последнее исправление: waker (всего исправлений: 3)

Сборка нетривильная (50 строк на баше для каждой ОС + Qt из сорцов на лине), поэтому ci не совсем подходит.
Сборка должна происходит при обновлении зависимостей, а не только когда обновится master, что опять же отбрасывает ci.

непонятно, чем тут ci не подходит. сборку можно отменять/фейлить при соблюдении ряда условий.

еще есть всякие трюки, типа тегов в commit messages, но это ересь, как по мне.

waker ★★★★★
()
Последнее исправление: waker (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

+ не понятно как принудительно запустить сборку, а не только при обновлении master

можно отключить интеграцию с github, и запускать сборки вручную.

можно настроить чтобы сборка была только на определенной ветке/ветках (не обязательно master).

waker ★★★★★
()
Последнее исправление: waker (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

это вообще совсем не годится для dev-билдов.

waker ★★★★★
()
Ответ на: комментарий от RazrFalcon

нашел вот такую штуку, сам не пробовал

https://docs.tea-ci.org

это не так приятно, как 1 сервис на три платформы, но за неимением лучшего, может и прокатит...

(гм.. они пускают msys/cygwin в wine в линуксовых контейнерах. забавненько)

вообще, с виндой еще сразу встает вопрос, чем ты собираешь проект. если mingw — то в принципе нет особых причин не использовать кросскомпиляцию. если студию — не факт что лицензия позволяет ее вот так раздавать на бесплатных CI-сервисах. а в wine она вообще совсем не факт что взлетит.

waker ★★★★★
()
Последнее исправление: waker (всего исправлений: 2)

короче, еще раз обдумав твою ситуацию.. я бы наверное для такой задачи купил macmini старый, в нем виртуалки венды и линукса, и jenkins для автоматизации.

или если у тебя основной комп на макоси — то можно и прямо на нем все это развернуть.

waker ★★★★★
()
Ответ на: комментарий от RazrFalcon

Под виндой - mingw. Но с кросскомпиляцией дел не имел.

я имел дело с кросскомпиляцией, но не linux/mac->win.

думаю, все должно быть достаточно просто.

MacMini стоит как самолёт, даже б/у.

в ваших краях не знаю сколько, у нас очень дешево. главное чтобы сиерра и последний хакод стали, 2010-2011 года модель, в них можно HDD поменять на SSD.

а как ты щас под мак собираешь?

waker ★★★★★
()
Ответ на: комментарий от waker

а как ты щас под мак собираешь?

хакинтош в virtualbox - страшный ужас, но хоть как-то.

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от waker

В общем пока потыкаю travis, может будет достаточно.

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

если использовать его только в качестве билд-сервера, на котором в 1 момент запущен 1 билд — хватит, даже с учетом виртуалки.

но лучше искать c 8Гб, да.

waker ★★★★★
()

Правильный ответ - не нужно распространять бинарники.

А вообще CI всё это умеют - travis для linux и mac, appveyor для windows, они умеют собранные бинарники прикрепляь к GH релизам. Ничто им не мешает залить на тот же dropbox, если захочешь.

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

Правильный ответ - не нужно распространять бинарники.

лолшто? это в какой параллельной вселенной не нужно?

waker ★★★★★
()
Ответ на: комментарий от waker

В той где на linux.org.ru сидят люди, осознанно свалившие с винды, а значит им должно хватать мозгов понять что распространение софта блобами в которые сначала автор посадил бэкдор, а потом ещё при передаче в него подцепили криптолокер, а потом они на вашем дистрибутиве не запустились потому что у вас другая glibc и версия ядра, и вообще FreeBSD под ARM - пережиток, при том что есть официальные репы откуда софт ставится быстро, удобно, безопасно, совместимо и в один клик.

И в той где девелоперы для которых, очевидно, предназначены dev-сборки, способны их собрать сами, и даже больше - должны собрать сами, с тем компилятором, флагами, отладочной инфой и инструментацией что им нужна для разработки и тестирования.

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

И в той где девелоперы для которых, очевидно, предназначены dev-сборки, способны их собрать сами, и даже больше - должны собрать сами, с тем компилятором, флагами, отладочной инфой и инструментацией что им нужна для разработки и тестирования.

каждому девелоперу по сборке! И УМВР как code review

alpha ★★★★★
()

https://github.com/FWGS/xash3d/blob/master/.travis.yml

https://github.com/FWGS/xash3d/blob/master/travis-deploy.sh

https://github.com/FWGS/xash3d/blob/master/travis-upload.sh

В Xash3D FWGS это вот так сделано. После сборки архивы коммитятся в свежесозданный git репозиторий, который форс-пушится на отдельный репозиторий в ветку travis-$branch отдельным аккаунтом на GitHub(так же ещё на transfer.sh и yandex disk).

У этого есть недостаток — нельзя распараллелить и добавить так же AppVeyor.

Travis CI, кстати, может собирать под Windows. Просто нужно использовать MinGW(это есть в ссылках выше).

a1batross ★★★★★
()
Ответ на: комментарий от waker

Можно вместе с собой нести линуксовый MSBuild и cl.exe и запускать в Wine. :)

Ну и плевать на лицензии. Не понравится мелкософту или CI, что их так эксплуатируют, можно и переделать под MinGW.

a1batross ★★★★★
()

Кто, что использует?

На работе юзаем кросскомпилятор (mingw) если надо под масдай, все виндовые зависимости (Qt, ...) собраны этим mingw, опакечены и добавлены в корпоративные репы. CI чего надо вытягивает yum-ом в песочницу и компилит. Самому mingw естественно, пофигу на чём запускаться, правда самый последний mingw (6.x) забутстрапить нормально я не смог (при сборке проекта не находит какие-то свои внутренние хедеры), а вот 5.x собирается под linux и работает прекрасно.

d_a ★★★★★
()
Последнее исправление: d_a (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

Я так понимаю он только для линя

Да.

только для deb пакетов?

Нет, и для rpm тоже.

Не проще ли тогда ppa использовать?

Может и проще. Меня packagecloud полностью устроил.

Deleted
()

Если не жалко денег на железо - то Teamcity + 3 билд-агента.

Если жалко, то вроде бы есть возможность развернуть TeamCity в облаке с динамически поднимаемыми агентами.

Пушить артефакты можно будет куда угодно.

TheKnight ★★★
()
Ответ на: комментарий от RazrFalcon

Вы то сами разработчик?

Я сам-то разработчик. И мантейнер пакетов. И пользователь.

А в сорцы не подсадил?

А в сорцы я могу посмотреть посадил или нет. Предвосхищая идиотский вопрос - да, я постоянно смотрю в сорсы.

slovazap ★★★★★
()
Ответ на: комментарий от waker

Теоретиком быть гораздо лучше чем протрояненным рассылателем спама, или дурачком который думает что это невозможно. А я как раз практик, поскольку протрояненные бинарники это больше правило чем исключение, и встречался я с ними в практике десятки раз. Так, для информации:

https://www.opennet.ru/search.shtml?words=%F7%DA%CC%CF%CD+%C9%CE%C6%D2%C1%D3%...

http://forum.qip.ru/showthread.php?t=36203

https://geektimes.ru/post/289755/ (это только один из)

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

затрояненные исходники? не, не слышал...

(кстати, исходники троянить проще бинарников)

waker ★★★★★
()
Последнее исправление: waker (всего исправлений: 1)
Ответ на: комментарий от slovazap

мантейнер пакетов

я должен был догадаться :D

waker ★★★★★
()
Ответ на: комментарий от slovazap

кстати, а как ты оправдываешь свое мантайнерство, результатом которого является распространение бинарей, одновременно имея мнение:

Правильный ответ - не нужно распространять бинарники.

?

waker ★★★★★
()
Ответ на: комментарий от slovazap

Тебе рассказать что такое ебилды?

оу.. диагноз проясняется. объяснять про ебилды не надо.

waker ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.