З допомогою VSTS можна автоматизувати розгортання та тестування програмного забезпечення в різних середовищах. Суть Continuous Integration полягає у виконанні частих автоматизованих збірок проекту для якнайшвидшого виявлення і вирішення інтеграційних проблем. Зокрема CI дозволяє автоматизувати регрессионное тестування додатків.

В якості ознайомлення з можливостями VSTS пропоную опублікувати і налаштувати Continuous Integration c Unit тестами простого UWP програми.

Читати далі →

Інкрементальний аналіз в PVS-Studio: тепер і на складальному сервері


Введення
При впровадженні статичного аналізатора в існуючий процес розробки, команда може зіткнутися з певними труднощами. Наприклад, дуже корисно перевіряти змінений код перед тим, як він потрапить в систему контролю версій. Однак, виконання статичного аналізу в цьому випадку може вимагати досить тривалого часу, особливо на проектах з великою кодовою базою. У цій статті ми розглянемо режим інкрементального аналізу в статичному аналізаторі PVS-Studio, що дозволяє перевіряти тільки змінені файли, що значно скорочує час, необхідний для аналізу коду. Отже, розробники зможуть використовувати статичний аналіз так часто, як це необхідно, і мінімізувати ризики потрапляння код, що містить помилку, систему контролю версій. Приводом для написання статті стало, по-перше, бажання ще раз розповісти про такий корисної функції нашого аналізатора, а по-друге, той факт, що ми повністю переписали механізм інкрементального аналізу і додали підтримку цього режиму у версію нашого аналізатора для командного рядка.

Читати далі →

Перехід з CruiseControl.NET на Jenkins в команді розробників PVS-Studio

<img src=«habrastorage.org/getpro/habr/post_images/1bb/7a8/97e/1bb7a897e17c6d5626f949ad85534c73.png» alt=«Picture » 1" />
Зараз важко уявити розробку програмного забезпечення автоматизованих збірок проекту і тестування. Для мінімізації часових витрат на інтеграцію змін розробників в проект, існують різні готові рішення. У даній статті я розповім про заміну сервера безперервної інтеграції CruiseControl.NET на Jenkins в команді розробників PVS-Studio. А також про те, що нас до цього спонукало, які цілі ми переслідували і з якими проблемами зіткнулися.

Читати далі →

Огляд self-hosted continuous integration систем

Введення
Важко уявити сучасну розробку без Continuous Integration. Багато компаній випускають по кілька релізів в день і проганяють тисячі тестів. З часів Jenkins і Travis CI на ринку з'явилося багато різноманітних інструментів. Більшість з них працюють за моделлю SaaS — ви платите фіксовану плату за використання сервісу, або за кількість користувачів.
Але використання hosted платформ не завжди можливо, наприклад, якщо не можна передавати код додатка, або не хочеться залежати від зовнішніх сервісів. У такому разі виручають системи, які можна встановити на своїх серверах (self-hosted). Бонусом ви маєте повний контроль над ресурсами і можете масштабувати їх відповідно до ваших потреб використовуючи, наприклад, amazon ec2.
У цій статті представлений огляд декількох opensource self-hosted continuous integration систем, а також особисті враження від їх використання.

Читати далі →

TeamCity як Debian-репозиторій

… або використання TeamCity для складання
*.deb
-пакетів і не тільки.
Написати статтю мене спонукала знайомство з модулем tcDebRepository. Я наївно вважав, що "от зараз я його підключу, і все чарівним чином запрацює". Як водиться, не запрацювало, і врешті-решт був накопичений певний досвід, який захотілося систематизувати.
Стаття ні в якій мірі не є введенням в основи TeamCity і передбачає, що читач вже знайомий і власне з TeamCity, і з інфраструктурою Debian GNU/Linux. Якщо ви вже уявляєте, що таке continuous integration, але ще жодного разу не тримали в руках TeamCity — вам, напевно, сюди. Про збірці пакунків Debian можна почитати в Debian New Maintainers' Guide.
Для ігор (на випадок, якщо хтось захоче відтворити результати) використовувався сервер TeamCity 10 і 3 агента п/упр Debian 8.0 (Jessie). 3 агента — це ліміт у разі TeamCity Professional. Всі ниженаписанное, думаю, без проблем переноситься на будь-який інший дистрибутив на основі Debian GNU/Linux, напр., Astra Linux.
Читати далі →

Як ми вже 4 роки виживаємо в умовах двох релізів в день



Здрастуй, Хабр! Сьогодні я хочу завершити цикл статей про організацію тестування (почався з вивчення помилок і досвіду), розповівши про те, як же все-таки Badoo випускає два якісних серверних релізу кожен день. Крім п'ятниці, коли ми релизимся тільки вранці. Не треба релизиться в п'ятницю ввечері.
Я прийшов до Badoo трохи більше чотирьох років тому. Весь цей час наші процеси та інструменти для тестування невпинно розвивалися і вдосконалювалися. Для чого? Число розробників і тестувальників збільшилася приблизно в два рази — значить, для кожного релізу готується більше завдань. Кількість активних зареєстрованих користувачів і теж подвоїлася — а значить, і ціна будь-якої нашої помилки стала вище. Для того щоб доставляти користувачам максимально якісний продукт, нам потрібні все більш і більш потужні засоби контролю якості, і ця гонка не закінчується ніколи. Мета цієї статті-не тільки продемонструвати працюючий приклад, але й показати, що якими б крутими не були ваші процеси контролю якості, напевно можна зробити їх ще краще. Технічні реалізації деяких інструментів ви зможете знайти за посиланнями на інші статті, про деяких з них нам ще належить написати.

В Badoo існує кілька різних QA-флоу, відмінність яких обґрунтовано різними засобами розробки та цільовими платформами (але ми використовуємо для них загальні системи: JIRA, TeamCity, Git і т. д.), і я вам розкажу про процес тестування і деплоя наших серверних завдань (а заодно і веб-сайту). Його можна умовно розділити на 5 великих етапів (хоча тут, звичайно, багато моїх колег вважають по-різному), кожен з яких включає в себе і ручну, і автоматизовану складову. Постараюся розповісти вам по черзі кожного з них, окремо виділяючи те, що змінювалося і розвивалося в останні роки.

Читати далі →

Як подружити етапи розробки з gitflow

У цій статті я розповім про те як я намагався створити бета-стенд і вбудувати його в звичайний gitflow. Спільно з читачами ми пройдемо шлях від проблем пов'язаних з цим до нової схеми роботи з гитом.
Читати далі →

Автоматичне розгортання Django з GitLab

У цій статті я опишу налаштування автоматичного розгортання веб-додатки на стеку Django + uWSGI + PostgreSQL + Nginx з репозиторію на сервісі GitLab.com. Викладене також стосується кастомних інсталяції GitLab. Передбачається, що читач має досвід у створенні веб-додатків на Django, а так само досвід адміністрування Linux-систем.
Читати далі →

Jenkins для Android на чистій системі і без UI

На Хабре вже є схожі статті на тему складання Android додатки з допомогою Jenkins. Ключовими особливостями/доповненнями поточної буде наступне:

  1. Ми встановимо Jenkins на віддалену Linux машину, де відсутня UI.
  2. Ми будемо збирати додаток з приватного репозиторію.
  3. Ми вирішимо проблему складання програми з гілки ім'я якої нам не відомо.
  4. Після складання .apk файлів ми відправимо їх у Fabric і оповістимо тестувальників.
  5. Після відправлення в Fabric ми опублікуємо програму на Google Play.
  6. Захистимо завдання щодо публікації додатки від запуску тестерами.

Читати далі →

Особистий досвід: як виглядає наша система Continuous Integration

image Ми в Positive Technologies не тільки проводимо дослідження безпеки різних ІТ-систем, але і розробляємо продукти, які допомагають виявляти і запобігати загрозам, а також мінімізувати збиток від можливих атак.

За останні кілька років лінійка наших продуктів серйозно розширилася — до відомої багатьом на ринку системі MaxPatrol додався цілий ряд нових інструментів від міжмережевих екранів рівня додатків до інструментів управління інцидентами. Такий розвиток поставило нас перед необхідністю адаптації процесів розробки в компанії — тому ми активно впроваджуємо в свою роботу практики DevOps і пов'язані з цим технології.

Сьогодні ми хочемо розповісти вам про моделі створеної нами системи Continuous Integration.

Читати далі →