Pull to refresh

Spotify представила XCRemoteCache — инструмент удаленного кеширования для iOS, сокращающий время чистой сборки на 70%

Development for iOS *Swift *Development for MacOS *Build automation *Software

Разработчики Spotify открыли исходный код библиотеки XCRemoteCache, которая помогает ускорить время сборки iOS-проектов. Инженеры компании заявляют, что использование инструмента внутри команды позволило сократить время чистой сборки на 70%. Библиотека построена на принципе использования удаленного кэширования с целью повторного использования целевых артефактов в Xcode. Инструмент совместим кодом, написанным на Swift, Objective-C и на связке двух языков сразу.

Читать далее
Total votes 7: ↑7 and ↓0 +7
Views 2.2K
Comments 0

Apache Maven 2

Lumber room
Я таки решил попробовать что-нибудь написать в своем блоге, так что не ругайте сильно если что ;) Первую статью пишу про систему построения и управления Java-проектами Apache Maven 2. Это обзорная статья, если кому-то будет интересно – сделаю небольшой цикл уже с подробностями.
Читать дальше →
Total votes 12: ↑11 and ↓1 +10
Views 1.4K
Comments 17

Apache Maven — основы

Java *
После публикации топика о Maven в комментариях возникли вопросы о том, как начать с ним работать, с чего начать, как составлять файлы pom.xml, откуда брать плагины и т.п. Данный топик будет своего рода getting started или f.a.q.
Поехали!
Total votes 45: ↑41 and ↓4 +37
Views 481K
Comments 29

Phing — сборка PHP проектов

PHP *
Sandbox
У многих из нас, бывают ситуации когда проект требует подготовки к выводу в продакшн, и зачастую эта подготовка состоит из множества действий, которые приходится выполнять много раз(например при сборке релизной версии). Зачастую задачи сводятся к выполнению простых консольных команд, очистке кеша, минификации JS и CSS или сборки их в один файл, но вся эта рутина может занять довольно продолжительное время, а так как выполняется, чаще всего, в конце рабочего дня, довольно легко опечататься и отправить несколько дней\часов\минут работы над проектом в небытие. В такой ситуации программисты стараются, как то автоматизировать сборку и подготовку проекта к рабочему состоянию, в чём им помогают различные системы сборки, об одной из которых и пойдёт речь в статье.
Читать дальше →
Total votes 77: ↑74 and ↓3 +71
Views 44K
Comments 45

Хак для ускорения компиляции проекта для Fortran 95

Programming *
Sandbox

Эпиграф


Лет 15 назад, когда про MSBuild еще не знали, жили были люди, которые любили писать на Фортране большие расчетные программы, но не использовали make по религиозным соображениям…

Уровень подготовки


Средний.

Предисловие


Доброго времени суток!

Слово «Fortran» может вызвать в Вашей душе много разных обертонов (не путать с Oberon).
Если Вам кажется, что время его уже прошло, просто проигнорируйте эту статью.
Читать дальше →
Total votes 25: ↑16 and ↓9 +7
Views 2.8K
Comments 6

Rake + Albacore. Сборка .Net проекта с помощью Ruby

Ruby *.NET *
Sandbox
Когда речь заходит о сборке .Net проектов, первое, что приходит в голову, это утилита MSBuild + сопутствующие build-скрипты. Действительно, пока проект небольшой, ее возможностей вполне хватает. Но со временем количество кода растет, структура продукта становится все более сложной и запутанной, и начинаешь задумываться о поиске более гибкого решения.

В нашем случае, таким решением оказалась связка Rake+Albacore. Что же это такое? Rake — инструмент для автоматизации сборки програмного кода, написанный на Ruby. Про Rake на хабре уже была довольно детальная статья пользователя Lass_ua (за которую, кстати, ему большое человеческое спасибо), поэтому повторяться не буду. Скажу только, что мы выбрали его за исключительную гибкость, которую не могли получить от MSBuild скриптов. Она обусловлена тем, что весь процесс сборки описывается, по сути, программой на Ruby, что открывает перед нами море возможностей.
А вот про Albacore я, к своему удивлению, не нашел ни одной статьи, хотя это уже достаточно зрелый и известный проект
Читать дальше →
Total votes 8: ↑5 and ↓3 +2
Views 1.1K
Comments 14

Прощай XML-build… Здравствуй Rake!

Website development *Ruby *.NET *
Translation

Введение



Сегодня (Monday, April 26th, 2010 at 8:54 am? Прим. перев.) в очередной раз я твитнул о том, что не являюсь фанатом систем сборки проектов, основанных на XML. Да, я понимаю для чего они нужны. Да, они были хороши в свое время. И да, я до сих пор использую их каждый день. Но несмотря на все это я считаю, что есть более удобные способы решить эту задачу. Наиболее частым ответом на мой твит были слова: «Ну а альтернатива-то какая?» Одна из важнейших вещей, которым научила меня жизнь, это то, что не стоит жаловаться на что-либо до тех пор пока тебе нечего предложить взамен. Так что я здесь и сейчас предложу альтернативное решение…
Читать дальше →
Total votes 17: ↑11 and ↓6 +5
Views 3.2K
Comments 24

Apache Maven — веб приложение

Java *
Sandbox
Если вы уже знаете, что такое Maven и хотите собрать простое модульное веб приложение (если нет- можно прочитать топик о нем и основы). Тема данного топика- как сконфигурировать pom.xml, добавить отдельный модуль к проекту, подключить плагины, развернуть приложение на сервере Apache Tomcat.
Читать дальше →
Total votes 11: ↑6 and ↓5 +1
Views 8.9K
Comments 3

Другой IncludeJS

Website development *JavaScript *
Только не смейтесь. Наверное это самая лучшая вводная фраза — так как ну на самом деле, «Как? Ещё один сборщик скриптов?». Да, в посте пойдёт речь о ещё одной «личной наработке ». Постараюсь не просто вбросить ещё одну либу, а поразмышлять над тем, чем же это решение могло бы быть лучше миллиона других. Возможно у меня не получится донести до вас, все как есть, но я попытаюсь, а вы не судите строго. Это будет вторая статья в серии о компонентах и MVP. Если интересно можете ознакомиться с первой.

Проблема компонент


Часто компоненты/виджэты помимо скриптов состоят из других ресурсов — html разметки, стилей, картинок, компонентов. И вот, хотелось бы получить сборщик этих самых ресурсoв. Во время разработки указываете путь к директории с компонентами/библиотеками, подключаете нужное, а во время сборки html склеится в один, стили и javascript тоже, картинки скопируются в наше приложение — «Кушать подано». Прошу не пинать больно, такие «конструкторы» уже наверняка существуют, но подходящего я не нашёл — и к тому же, моей целью было не создать конкурирующий продукт, а сделать нужную мне вещь для себя.

Здесь(github) эту вещь можно скачать/глянуть на апи. Того, кому эта тема показалась интересной, и кто готов уделить 10 минут на эту неумелую писанину, приглашаю под кат.

Читать дальше →
Total votes 11: ↑8 and ↓3 +5
Views 1.8K
Comments 8

Qt SDK 4.8 статическая сборка проекта

Qt *
Sandbox
Tutorial
image
В данном уроке я расскажу в картинках как собрать приложение статически/провести статическую линковку/ отучить ваш *.exe от библиотек Qt — кажется это всё одно и тоже по своей сути

Вступление:

Лично я всё проделывал со свеженькой на данный момент Qt SDK с сайта Nokia( Qt 4.8 и SDK 1.2.1)
Сам я полный нуб в Windows, так как всё жизнь сижу на Linux, так что всё сопровождается картинками, для таких же нубов в винде, как я сам.

Читать дальше →
Total votes 17: ↑10 and ↓7 +3
Views 30K
Comments 12

Введение в CMake

Programming *
Recovery mode
Sandbox
Tutorial
imageCMake — кроcсплатформенная утилита для автоматической сборки программы из исходного кода. При этом сама CMake непосредственно сборкой не занимается, а представляет из себя front-end. В качестве back-end`a могут выступать различные версии make и Ninja. Так же CMake позволяет создавать проекты для CodeBlocks, Eclipse, KDevelop3, MS VC++ и Xcode. Стоит отметить, что большинство проектов создаются не нативных, а всё с теми же back-end`ами.
Читать дальше →
Total votes 62: ↑56 and ↓6 +50
Views 402K
Comments 23

Как ускорить сборку 1000 VisualStudio C++ проектов

Website development *C++ *
Добрый день, уважаемые хабраюзеры.
Я решил написать этот топик, чтобы не не копировать мой комментарий к данному посту. Здесь я просто опишу наше решение

До изменений:
Полная сборка (clean) занимала около 4.5 часов
Инкрементальная сборка (continuous) занимала около 30 минут.
После изменений:
Полная сборка — около 40 минут.
Инкрементальная сборка — 2-3 минуты
Читать дальше →
Total votes 35: ↑24 and ↓11 +13
Views 17K
Comments 51

Build Systems — Intro

Programming *
Sandbox

Что это?


Данный пост будет об автоматических системах сборки. Думаю, интуитивно понятно что это и зачем нужно, но для формальности написать нужно — это такие программные продукты, которые на основе некоторой конфигурации могут «собрать» ваш проект.
Под словом «собрать» здесь может скрываться очень обширный объем работы, который при «ручном» подходе требует значительных затрат времени.

Небольшой перечень для ясности:
  • загрузить зависимые библиотеки для вашего проекта из сети (репозитория);
  • скомпилировать классы модуля или всего проекта;
  • сгенерировать дополнительные файлы: SQL-скрипты, XML-конфиги и т.п.;
  • удалять/создавать директории и копировать в них указанные файлы;
  • упаковка скомпилированных классов проекта в архивы различных форматов: zip, rar, rpm, jar, ear, war и др.;
  • компиляция и запуск модульных тестов (unit-test) вашего проекта с результатами выполнения тестов и расчетом процента покрытия;
  • установка (deploy) файлов проекта на удаленный сервер;
  • генерация документации и отчетов.

Наиболее популярными представителями подобных систем являются Ant + Ivy, Maven.

Путаница


На хабре есть ряд статей о Maven, но, к сожалению, все они находятся в разных хабах, т.к. отдельного хаба для билд систем не существует.
Поэтому, я решил «не быть как все» и выбрать именно общий хаб «Программирование», а не «Java», «Веб-разработка» и др.

Поэтому не заинтересованный читатель может продолжить свой поиск интересного, а заинтересованный — читать далее.
Читать дальше →
Total votes 4: ↑2 and ↓2 0
Views 6.8K
Comments 0

Build Systems — Local Repository

Programming *
Продолжение предыдущего поста о системах сборки — BuildSystems — Intro

Maven


Система сборки, описывающая зависимости на разных уровнях и плагины для выполнения задач.
В предыдущем посте есть ссылки на другие статьи, где описывается данная система, отличительной чертой которой является четко выраженный жизненный цикл сборки:

  • validate — проверяет корректность таинформации о проекте
  • compile — компилирует исходники, фактически это обращение к плагину «compiler»;
  • test — запуск юнит-тестов
  • package — упаковка классов в заданный формат (zip, rar, jar, war, ear и т.д.)
  • integration-test -запуск интеграционных тестов после сборки
  • verify — проверяет корректность пакета и удовлетворение требованиям качества
  • install — «установка» сборки в локальный репозиторий
  • deploy — отправка пакета на заданный сервер

Локальный репозиторий Maven

Но ни в одной из этих статей не описано, что в свою очередь, для меня было очень полезным — это настройка локального репозитория.
Читать дальше →
Total votes 13: ↑8 and ↓5 +3
Views 15K
Comments 8

Fast-static — Node.js модуль сильно облегчающий жизнь

Node.JS *
При разработке js и css файлы удобнее держать в исходном виде, а при в продакшене их необходимо минизировать и соединять. Существует несколько систем сборки, однако, пользоваться ими весьма сложно и проблематично. По крайней мере я устал от них до такой степени, что решил написать свой сборщик. Получился он очень удобным, поэтому я решил с вами им поделиться.

Читать дальше →
Total votes 35: ↑25 and ↓10 +15
Views 11K
Comments 31

Как я стенд для сборки с windows на wine мигрировал

Programming *C++ *
image

Преамбула


Есть у меня несколько старых проектов, писанных на С++, которые все еще развиваю по мере сил. Казалось бы — в чем же дело? Увы, это пачка очередных плагинов под мой любимый Adobe InDesign.

И каждый раз, когда выходит новый Creative Suite, приходится портировать это дело. Что интересно, основные усилия уходят на то, чтобы собрать новую версию по новым правилам, и подогнуть инсталлятор. Потому как уж если дошел до стадии «оно компилируется», то как правило — работает. Хотя конечно есть нюансы — например в один прекрасный момент PlaceGun перестал раскладывать несколько выбранных изображений, только первое. Но об этом — в следующий раз.

И разумеется — хотелось бы это собирать под все версии и все платформы за раз, а не «открыл вижлу — собрал — закрып — повторил».

Итак, для сборки, нам нужны одновременно

  • MS VS 2005
  • MS VS 2005 sp1
  • MS VS 2008
  • MS VS 2010
  • MS VS 2012


Читать дальше →
Total votes 36: ↑30 and ↓6 +24
Views 13K
Comments 32

Автоматизируем сборку системы

Cognitive Technologies corporate blog Programming *Version control systems *
Петр Лухин

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

Так чем же таким может быть интересна автоматическая сборка, какие возможности можно реализовать с ее помощью и каких результатов достичь? Попробуем разобраться.


Читать дальше →
Total votes 15: ↑9 and ↓6 +3
Views 8.9K
Comments 0

Сборщик проектов на Angular и RequireJS и некоторые мысли по сборке

Website development *JavaScript *Angular *
Что самое неудобное в сборщиках проекта? Правильно! То, что нужно сборку писать самому. Изучать grunt/gulp/webpack, шаманить с плагинами, думать, как разбить конфиг на модули, когда он вырастает до нескольких сотен строчек, потом несколько месяцев радоваться, что всё работает, а когда в проекте появляется критическое изменение, опять лезть в это болото.

Мне тоже всё это порядком надоело, поэтому написал сборщик, лишенный этих недостатков. Его gulpfile.js выглядит так:

var gulp = require('gulp');
var arjs = require('arjs-builder')();

gulp.task('build', arjs.build);
gulp.task('test', arjs.test);
gulp.task('default', arjs.run);

Скопировали себе проект, и больше никогда туда не лезете, и навсегда забываете что такое сборка.
Единственное, что придется выучить, — это три команды:

gulp #компилит, поднимает локальные серверы
gulp build #билдит проект
gulp test #запускает тесты

Открываете localhost:7000 и наслаждаетесь локальной версией сайта, а в папке build
уже лежит сбилженная версия.

— А как же темплейты, их же надо в js внедрять?
— Конечно! Все внедрено как положено.
— А я стили пишу на less, sass, stylus, их же надо компилить?
— Пишите как писали, всё чудесным образом будет работать.
— А картинки в CSS инклудить?
— Так давно всё в CSS. All included как в пятизвездочном отеле.
— А разбить сбилженный файл на модули?
— Проверьте папку build. Всё по модулям? С уникальными именами, основанными на содержимом файла? Вот, а вы волновались!
— А вот еще там что-то…
— И это тоже работает.

Но как такое возможно? Это мы и рассмотрим в статье. А в конце еще расскажу, почему всё-таки RequireJS
Читать дальше →
Total votes 21: ↑13 and ↓8 +5
Views 14K
Comments 38

Как скомпилировать Qgis с возможностью отладки под Windows

Qt *Geoinformation services *
Sandbox


По работе пришлось столкнутся с тем, что нужно было узнать, какие действия происходят в ядре QGIS. QGIS (Quantum GIS) — свободная кроссплатформенная геоинформационная система. Сама система разработана с помощью инструментария Qt. Через него я и решил собрать проект. Для этого я скачал исходники qgis с официального сайта и начал сборку. На самом сайте есть руководство по сборке с помощью Qt Creator. Было прочитано множество статей про сборку и отладку QGIS (некоторые даже толковые). Но ни в руководстве, ни на каких-либо ресурсах не нашел решения тех проблем, с которыми я столкнулся. Так родилась идея написать собственное руководство по сборке QuantumGIS для Windows систем использую Qt Creator.
Читать дальше →
Total votes 10: ↑8 and ↓2 +6
Views 8.3K
Comments 4

Codekit 3 — современный GUI сборщик для MacOS

Website development *Build automation *
Sandbox
Спор между любителями CLI программ и приверженцами GUI берёт своё начало с появления самых первых ОС с графическим интерфейсом и продолжается до сих пор. Я никогда не имел ничего против хороших GUI приложений и с удовольствием пользовался Codekit с самой первой версии. Сейчас на дворе конец 2016 года и вышло мажорное обновление под номером 3.

Codekit — это расширяемый front-end сборщик «на стероидах» с графическим интерфейсом и возможностью навешивать скрипты по любому событию. Ближайшими «консольными» аналогами можно назвать Grunt и Gulp. GUI подразумевает невероятно простую конфигурацию — большинство настроек выставляются и меняются с помощью чекбоксов либо радиокнопок. Для всего остального есть мастеркард текстовые поля ввода, в которые вписываются те же параметры, что и в консольных программах.
Total votes 18: ↑10 and ↓8 +2
Views 7.3K
Comments 10
1