Pull to refresh

Полностью обновленный видеокурс по CI/CD на примере Gitlab CI — всегда доступен в Слёрм

Southbridge corporate blog

1,5 месяца назад мы запустили первый поток по обновленному курсу CI/CD на примере Gitlab CI. Следующий поток стартанет в октябре, но зачем ждать, если видеокурс всегда доступен к изучению. В нем вам доступны 12 тем, в каждой из которых есть практические задания с автопроверкой на наших готовых стендах.

Читать далее
Total votes 8: ↑8 and ↓0 +8
Views 513
Comments 0

Система непрерывной интеграции своими руками

Programming *
Sandbox
Доброго времени суток, %username%!

О непрерывной интеграции можно почитать здесь и вообще поискать литературу на данную тематику, если станет интересно. Если Вы уже осознали всю выгоду использования CI, то продолжу развивать мысль. Наиболее популярные из существующих систем непрерывной интеграции: Hudson, TeamCity и CruiseControl. Во всех этих системах настройка билда обычно осуществляется через UI. Выбираем что надо сделать в окошке браузера — и билд автоматизирован (естественно можно написать свои скрипты и запускать их). Обилие настроек и всяческих примочек. И я подумал, а что сделали создатели этих систем? А сделали они просто команды для различных билдеров, компиляторов, тестирующих и прочих инструментов, чтобы разработчик не тратил своё время на эти вещи. А так ли много времени уйдет на написание своей системы и команд?
Читать дальше →
Total votes 8: ↑6 and ↓2 +4
Views 7.9K
Comments 1

Github выпустил сервер непрерывной интеграции на базе Jenkins

Programming *
Github выпустил сервер непрерывной интеграции проектов Janky, сделанный на базе Jenkins под управлением CoffeeScript-бота Hubot. Фактически, Janky — это просто интерфейс для работы с Jenkins через скрипты и команды Hubot.

Разработка ПО методом непрерывной интеграции (continuous integration, CI) предусматривает выполнение частых автоматизированных сборок проекта для скорейшего выявления и решения интеграционных проблем. Например, сборка из репозитория может проводиться каждую ночь по расписанию, с автоматическим прогоном тестов, так что каждое утро разработчики видят результаты тестирования. Такой метод приучает и программистов работать эффективнее, в итеративном режиме с более коротким циклом.

Понятно, что Github как нельзя лучше подходит для работы в режиме непрерывной интеграции. Система Janky заточена на использование Github, в том числе она создаёт соответствующие web-hook’и, а также может ограничивать доступ для сотрудников организации на Github.

Сервер Janky сделан на основе известной системы Jenkins (Hudson). Использование бота Hubot придаёт Janky особый шарм, управление сервером осуществляется с помощью простых команд.
Total votes 42: ↑37 and ↓5 +32
Views 8.4K
Comments 13

Что такое travis-ci.org и с чем его едят?

Ruby *
Sandbox
image

Наверняка все слышали шумиху вокруг проекта travis-ci.org. Я не являюсь исключением и учитывая, что один из его разработчиков, Джош Калдеримис (Josh Kalderimis), выступивший на прошедшей конференции toster.ru, разжег мой интерес еще больше, то я решил окончательно разобраться, что такое travis-ci и с чем его едят. После прочтения вы узнаете как данный сервис может помочь ruby-разработчикам, а также как ему могут помочь они. Располагайтесь поудобнее, начнем…
Читать дальше →
Total votes 29: ↑27 and ↓2 +25
Views 72K
Comments 12

Непрерывная интеграция в TFS 11

Version control systems *Visual Studio *
Tutorial

Добрый день, коллеги.

Длинные праздники заканчиваются, и уже завтра, мы снова погрузимся в пучину ежедневной рутины. Сегодня, на стыке еще не закончившихся праздников и еще не начавшейся рабочей недели, я бы хотел немного рассказать о непрерывной интеграции.
Начиная внедрять Agile практики в разработке, многие, прочитав: «Личности и их взаимодействия важнее, чем процессы и инструменты», приходят в восторг. Ведь можно собрать команду, сплотить их, поставить задачи и вот она: «звезда пленительного счастья» (работающее и полезное пользователям ПО). Но, к сожалению, в жизни бывает все намного скучнее и непредсказуемей. Начиная внедрять новомодный Scrum или Kanban, часто забывают, что все достоинства этих методик проявляться только в том случае, если они ложатся на правильные инженерные практики. К таким практикам относят модульное тестирование вообще, и TDD в частности; парное программирование; Code Review; непрерывную интеграцию и многое другое.
Под катом, я попробую показать, как настроить непрерывную интеграцию в рамках TFS 11 и в каких сценариях, какой способ построения проектов будет наиболее оправдан (много картинок и текста).
Читать дальше →
Total votes 17: ↑13 and ↓4 +9
Views 13K
Comments 4

CircleCI — обзор нового сервиса Continuous Integration

Website development *IT systems testing *
«Вы тестируете? — Возможно.
Все мы согласны, что тестирование – отличная штука, но в реальности доставляет много проблем. В настоящий момент мы занимаемся beta-тестированием партнерского CI сервиса, который предназначен для того, чтобы делать за вас всю тяжелую работу.
Мы работаем над созданием удивительного сервиса CI! Только представьте, что вы сможете использовать исключения для автоматизированного создания тестов! Да, мы работаем над этим!
Ответьте на это сообщение для получения доступа к beta-версии.»


— примерно такие слова в моем вольном переводе с английского я прочитал, зайдя однажды на всем известный airbrakeapp.com, чтобы посмотреть, какие ошибки успели найти юзеры в наших приложениях за ночь.
Читать дальше →
Total votes 5: ↑4 and ↓1 +3
Views 26K
Comments 5

Непрерывная интеграция за доллар в день

Website development *
Sandbox
Данная статья является переводом статьи Джеймса Шора "Continuous Integration on a Dollar a Day". Ссылка на эту статью попалась мне в книге "Непрерывное развертывание ПО".

Есть более простой и дешёвый способ осуществления непрерывной интеграции, чем использование сервера сборки подобно CruiseControl. На самом деле, это настолько просто, что вы можете начать её выполнять прямо в эту секунду и прекратить плохо себя чувствовать из-за отдела IT, пока ещё не одобрившего ваш запрос на сервер сборки.
(Хотите небольшой неэтичный секрет? То, что я собираюсь вам рассказать, лучше, чем использование CruiseControl!)
Читать дальше →
Total votes 11: ↑8 and ↓3 +5
Views 3.3K
Comments 12

Windows Phone и непрерывная интеграция в TeamCity

.NET *Development for Windows Phone *
Хочу поделиться опытом в настройке системы непрерывной интеграции для проекта Windows Phone 7 в Team City. Надеюсь, сэкономлю тем, кто пойдёт той же тропой, потраченные мной самим время и нервы.

Дано:
  1. Довольно-таки массивное приложение Windows Phone 7 c unit-тестами, реализованными средствами Silverlight Toolkit.
  2. Настроенная сборка приложения в TeamCity без запуска unit-тестов. Агент для сборки — «физическая» (в смысле, не виртуальная) машина.

Необходимо:
  1. Настроить ещё одного build-агента TeamCity на виртуальной машине под VMWare.
  2. Запускать unit-тесты при сборках и сбора результатов их выполнения в статистику TeamCity.

Читать дальше →
Total votes 22: ↑18 and ↓4 +14
Views 5.3K
Comments 4

Использование Docker-контейнеров как Jenkins-нод

Website development *
Эта статья описывает использование контейнеров docker как отдельные ноды для системы непрерывной интеграции, в данном случае jenkins. Кому лень читать tl; dr
Для сборки нашего проекта в RPM и DEB пакеты мы используем Jenkins, на что выделена специальная машина.

Сначала мы собирали наш проект только для CentOS 6. Далее добавилась поддержка CentOS 5, и оказалось что зависимости от конкретных версий библиотек не дают работать тем же бинарникам под разными версиями CentOS, понадобилась сборка разных RPM. Это было решено добавлением в jenkins ноды с CentOS 5, которой служила виртуалка на VirtualBox. Потом добавилась поддержка Suse, а потом и Debian.

Количество оперативной памяти не резиновое, а использование виртуальных машин только для сборки это явный оверхед, и было решено переписать скрипты используя Docker.
Читать дальше
Total votes 12: ↑12 and ↓0 +12
Views 23K
Comments 16

Непрерывная интеграция в Селектеле

Selectel corporate blog Website development *
Непрерывная интеграция в Селектеле

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

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

Ситуации, о которых идет речь, знакомы нам не понаслышке. Было время, когда наши программисты собирали все пакеты вручную. Но проектов становилось все больше, и количество рутины росло. А вот времени на размышления о развитии и совершенствовании продуктов становилось все меньше и меньше. Нужно было что-то менять, и мы задумались о внедрении непрерывной интеграции.
Читать дальше →
Total votes 24: ↑20 and ↓4 +16
Views 8.6K
Comments 10

Настройка TeamCity для новичков

Контур corporate blog .NET *C# *
Tutorial
Эта статья в первую очередь пригодится тем, кто использует тот же стек технологий, что и наша команда, а именно: ASP.NET, C#, NUnit, Selenium 2, git, MSBuild. Будут рассмотрены такие задачи, как интеграция с git, сборка C#-проектов, NUnit-тесты (как модульные, так и тесты UI), а также деплой на сервер. Впрочем, наверняка найдётся интересное и для других пользователей, кроме разве что съевших на этом вопросе собаку. Но они опять же смогут обратить внимание на ошибки в статье или что-то посоветовать: например, как оптимизировать фазу деплоя.
Читать дальше →
Total votes 39: ↑35 and ↓4 +31
Views 150K
Comments 12

Разработка для Microsoft SQL Server (и не только): контроль версий, непрерывная интеграция и процедуры — как это делаем мы

Website development *Version control systems *Microsoft SQL Server *
Доброго времени суток, уважаемые Хабровчане.

     В качестве краткой предыстории: год назад, придя на новое место работы в качестве руководителя отдела разработки БД (на базе Microsoft SQL Server), я испытал глубочайший шок от увиденного. Крупная компания, сложное веб-приложение, многомиллионные контракты, а разработка ведется на production-БД, баг-репорты поступают и обрабатываются по методике «кто громче крикнет» или «надо сделать прям вчера». Естественно ни о системе контроля версий, continuous integration, процедурах и workflow речи и не шло.

     Сегодня ситуация сильно изменилась (хотя, кого я обманываю — только начинает меняться) и я хотел бы поделиться как техническими, так и процедурными деталями решений, которые мы используем сейчас. Технические детали на 90% касаются непосредственно разработки для Microsoft SQL Server, а вот процедурные изменения у нас коснулись и веб-девелоперов, и инженеров, и аналитиков, и тестеров.

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

     Кому интересны подробности — добро пожаловать под кат.
Warning: очень много текста, описания процедур и процессов (которые, может, никому и не интересны).
Читать дальше →
Total votes 15: ↑11 and ↓4 +7
Views 22K
Comments 25

Build-Deploy-Test. Непрерывная интеграция

ICL Services corporate blog IT systems testing *
Непрерывная интеграция (англ. Continuous Integration, далее CI) — это практика разработки программного обеспечения, которая заключается в выполнении частых автоматизированных сборок проекта для скорейшего выявления и решения проблем интеграции результатов работы нескольких разработчиков.

Подчеркну, что это не методика и не стандарт, это ПРАКТИКА, и она подразумевает постоянную работу и вовлеченность всех членов команды. Зачем? Да чтобы не дожидаться конца проекта для проведения интеграции и внезапного всемирного коллапса. Кроме того задача CI — обезопаситься от разрушительных изменений в следствие рефакторинга, добавления нового функционала, изменений архитектуры и кучи других непредвиденных или известных проблем.

С помощью интеграционных сборок можно избавиться от синдрома «не знаю, на моей машине всё работает». Также мы защищаемся от «плохого кода», часто повторяющихся багов, «кривых» слияний. CI увеличивает возможности обратной связи потому, что она позволяет следить за состоянием проекта в течение дня.
Читать дальше →
Total votes 13: ↑11 and ↓2 +9
Views 23K
Comments 10

Используем CircleCI для тестирования и деплоя iOS приложений

IT systems testing *Development for iOS *Development of mobile applications *Mobile applications testing *
CircleCI — это continuous integration сервис для веб и мобильных приложений. В статье опишу процесс настройки CircleCI для тестирования и последующего деплоя билда на Crashlytics.

Одно из преимуществ данного сервиса — сборка билда в облаке, то есть не нужна локальная билд-машина. Сервис позволяет гибко настраивать тестирование сборки, так как у пользователя есть доступ к sudo. Также существует возможность устанавливать сторонние пакеты. На данный момент поддержка iOS находится в бете, поэтому надо писать в support, чтобы открыли доступ.
Кого заинтересовал — прошу под кат.
Читать дальше
Total votes 10: ↑10 and ↓0 +10
Views 9.7K
Comments 0

Самоконфигурирующиеся приложения

Python *.NET *
Всем привет.
Внедрение методики непрерывной интеграции уверено шагает по нашей многострадальной родине и всё больше людей проникаются её идеями и концепциями, что очень хорошо. В данной статье я бы хотел рассказать про прием, который использую на одной из стадий непрерывной интеграции – конфигурирования приложений.


Фотку взял с Yaplakal
Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Views 14K
Comments 11

Опыт использования self-hosted continuous integration систем

Open source *IT systems testing *Version control systems *Build automation *

Введение


Сложно представить современную разработку без Continuous Integration. Многие компании выпускают по нескольку релизов в день и прогоняют тысячи тестов. Со времен Jenkins и Travis CI на рынке появилось много самых разнообразных инструментов. Большинство из них работают по модели SaaS — вы платите фиксированную плату за использование сервиса, или за количество пользователей.


Но использование hosted платформ не всегда возможно, например, если нельзя передавать код приложения, или не хочется зависеть от внешних сервисов. В таком случае выручают системы, которые можно установить на своих серверах (self-hosted). Бонусом вы имеете полный контроль над ресурсами и можете масштабировать их согласно вашим потребностям используя, к примеру, amazon ec2.


В этой статье представлен личный опыт использования нескольких opensource self-hosted continuous integration систем. Если вы использовали другие системы, расскажите об этом в комментариях.

Читать дальше →
Total votes 29: ↑23 and ↓6 +17
Views 22K
Comments 17

Как не тратить время на непрерывную интеграцию

Self Promo
Любая софтверная компания рано или поздно приходит к необходимости внедрения непрерывной интеграции, будь это разработка мобильного приложения, создание обычного сайта, или уж тем более, если это сложная микро-сервисная структура.

image
Ранее я писал, что наша команда занимается разработкой iOS и Android приложений под ключ, включая бекенд и фронтенд. Из этого вытекает острая потребность в наличии масштабируемого процесса дистрибьюции и устоявшихся стандартов по ведению проектов.

Но одно дело, когда у тебя единственный продукт, где можно сделать кое-как, а другое — если каждый месяц появляется новый, с особыми требованиями, большой командой, для которого надо быстро получить CI/CD.

Вы, наверное, подумали, что сейчас будет инструкция по настройке этой самой интеграции, где я поделюсь best practices, скриптами, рекомендациями по инфраструктуре и прочими лайфхаками.

Я тоже так думал.
Total votes 24: ↑20 and ↓4 +16
Views 8.7K
Comments 0

Откуда взялись в Google ненадёжные тесты

IT systems testing *Java *Web services testing *
Translation
Если тесты сбоят на ранее протестированном коде, то это явный признак того, что в коде появилась какая-то новая ошибка. Раньше тесты проходили успешно и код был правильный, сейчас тесты сбоят и код работает неправильно. Цель хорошего набора тестов заключается в том, чтобы сделать этот сигнал настолько ясным и чётко адресованным, насколько возможно.

Ненадёжные (flaky), то есть недетерминированные тесты ведут себя иначе. Они могут показать как положительный, так и отрицательный результат на одном и том же коде. Другими словами, сбой теста может означать, а может и не означать появление новой проблемы. И попытка воспроизвести ошибку путём перезапуска теста на той же версии кода может привести или не привести к успешному проходу теста. Мы рассматриваем такие тесты как ненадёжные, и в конце концов они теряют свою ценность. Если изначальная проблема — это недетерминизм в рабочем коде, то игнорирование теста означает игнорирование бага в продакшне.

Ненадёжные тесты в Google


В системе непрерывной интеграции Google работает около 4,2 млн тестов. Из них примерно 63 тыс. показывают непредсказуемый результат в течение недели. Хотя они представляют менее 2% от всех тестов, но всё равно ложатся серьёзным бременем на наших инженеров.
Читать дальше →
Total votes 26: ↑23 and ↓3 +20
Views 8.2K
Comments 8

Наш опыт с Kubernetes в небольших проектах (обзор и видео доклада)

Флант corporate blog *nix *Server Administration *DevOps *Kubernetes *
Дмитрий Столяров (Флант) с докладом про Kubernetes на RootConf, РИТ++ 2017

6 июня на конференции RootConf 2017, проходившей в рамках фестиваля «Российские интернет-технологии» (РИТ++ 2017), в секции «Непрерывное развертывание и деплой» прозвучал доклад «Наш опыт с Kubernetes в небольших проектах». В нём рассказывалось об устройстве, принципах работы и основных возможностях Kubernetes, а также о нашей практике использования этой системы в небольших проектах.

По традиции мы рады представить видео с докладом (около часа, гораздо информативнее статьи) и основную выжимку в текстовом виде.
Total votes 32: ↑32 and ↓0 +32
Views 49K
Comments 28

Непрерывная интеграция/внедрение приложения Symfony с помощью docker-compose и GitLab CI

Website development *Symfony *
Tutorial

В статье я поделюсь своим опытом автоматизации всего процесса разработки приложения Symfony с нуля от настройки инфраструктуры до деплоя в production. От development- и до production-окружения для запуска приложения будет использоваться docker-compose, а все процедуры непрерывной интеграции/внедрения будут запускаться через GitLab CI/CD Pipelines в docker-контейнерах.


Подразумевается, что вы знакомы с docker и docker-compose. Если нет или вы не знаете как его установить, я подготовил инструкцию по подготовке локального окружения разработчика. Фактически, для работы над приложением потребуется только Docker, VirtualBox и, опционально, Yarn.

Читать дальше →
Total votes 19: ↑19 and ↓0 +19
Views 28K
Comments 39
1