Pull to refresh

Jenkins Pipeline. Что это и как использовать в тестировании

Reading time15 min
Views92K

Меня зовут Александр Михайлов, я работаю в команде интеграционного тестирования компании ЮMoney.

Наша команда занимается приемочным тестированием. Оно включает в себя прогон и разбор автотестов на критичные бизнес-процессы в тестовой среде, приближенной по конфигурации к продакшену. Еще мы пишем фреймворк, заглушки, сервисы для тестирования — в целом, создаем экосистему для автоматизации тестирования и обучаем ручных тестировщиков автоматизации.

Надеюсь, что эта статья будет интересна как новичкам, так и тем, кто съел собаку в автоматизации тестирования. Мы рассмотрим базовый синтаксис Jenkins Pipeline, разберемся, как создать джобу на основе пайплайна, а также я расскажу про опыт внедрения неочевидной функциональности в CI — запуска и дожатия автотестов по условию.

Читать далее
Total votes 13: ↑13 and ↓0+13
Comments7

10 Kubernetes-инструментов из разряда «важно», шпаргалка по созданию Kubernetes-операторов на Java… и многое другое

Reading time3 min
Views3.7K


Прокачивайте скилы, читайте, смотрите, думайте, применяйте на практике! Станьте частью DevNation!
Читать дальше →
Total votes 9: ↑6 and ↓3+3
Comments5

Дизайн и подходы создания Big Data пайплайнов

Reading time23 min
Views8.6K
image
(Корень всех зол в data engineering лежит в излишне сложном конвейере обработки данных)

Исторический контекст


Разработка конвейера данных достаточно серьезная задача, а с учетом областей с огромными объемами данных, эта сложность многократно увеличивается. Инструменты и концепции, связанные с большими данными, начали развиваться примерно в начале 2000-х годов, когда масштабы и скорость интернета резко начали возрастать. Компании внезапно обнаружили, что им приходится иметь дело с огромными объемами и скоростью передачи данных. Возможно, одним из пионеров в этой области был Google, инженеры которого боролись с поисковым сканером и индексатором. По сути это по, которое в то время лежало в основе поисковика Google. Поскольку количество веб-сайтов и страниц астрономически росло, Google не мог решить, как масштабировать свой сканер/индексатор, используя существующие вычислительные ресурсы, которые были распределены географически. Ни одна из коммерческих баз данных или технологий в то время не могла масштабироваться быстро и с минимальными затратами, и обе эти технологии были необходимы Google для масштабирования своего основного продукта.
Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments4

MskDotNet Meetup 19/11

Reading time2 min
Views798
Вместе с сообществом MskDotNet встретились на онлайн-митапе 19 ноября. Поделились историей создания Dependency Pipeline — готового решения для стандартного DI-механизма .NET Core. Рассказали о переиспользовании модулей приложения при прототипировании, а после обсудили эту тему за виртуальным круглым столом.

Total votes 7: ↑6 and ↓1+5
Comments0

Как писать кодогенераторы в Go

Reading time14 min
Views13K

Однообразный код писать неинтересно, нудно, но приходится. Испокон веков изворотливые программисты ищут Святой Грааль формализма, позволяющего переложить рутинные задачи на машину, писать только раз и переиспользовать код. Так появились структурное программирование, потом объектно-ориентированное, полиморфизм с параметризованными типами, кодогенерация на основе формальных грамматик, препроцессоры макроязыка и прочее…​ Под катом рассмотрим, как обстоят дела именно в Go.

Читать далее
Total votes 13: ↑10 and ↓3+7
Comments6

Идеальный пайплайн в вакууме

Reading time6 min
Views18K

На собеседованиях на позицию, предполагающую понимание DevOps, я люблю задавать кандидатам такой вопрос (а иногда его еще задают и мне):

Каким, по вашему мнению, должен быть идеальный пайплайн от коммита до продашкена?/Опишите идеальный CI/CD / etc?

Сегодня я хочу рассказать про своё видение идеального пайплайна. Материал ориентирован на людей, имеющих опыт в построении CI/CD или стремящихся его получить.

Так-так-так что тут у вас...
Total votes 25: ↑24 and ↓1+23
Comments25

Dockle — Диагностика безопасности контейнеров

Reading time2 min
Views8.8K

В этой статье мы рассмотрим Dockle — инструмент для проверки безопасности образов контейнеров, который можно использовать для поиска уязвимостей. Кроме того, с его помощью можно выполнять проверку на соответствие Best Practice, чтобы убедиться, что образ действительно создается на основе сохраненной истории команд.

Читать далее
Total votes 10: ↑9 and ↓1+8
Comments0

От эскиза до релиза: пайплайн регулярного создания контента на примере идеи для оружия от игрока

Reading time15 min
Views12K

Огромное количество игр построено на сервисной поддержке, будь то тактический шутер Rainbow Six Siege или большая ролевая World of Warcraft. Игроков постоянно вовлекают ивентами, игровыми режимами, картами, персонажами или перками. Но когда в проекте уже сотни и тысячи единиц контента, а релизы ежемесячно — это может стать проблемой для разработчиков.

В какой-то момент мы тоже с этим столкнулись в мобильном PvP-шутере и пришлось искать решение. В итоге полностью пересмотрели пайплайн создания контента и оптимизировали процессы так, чтобы одна гугл-таблица заменила нам таск-трекеры. О нашем опыте на проекте со 170 млн инсталлов и 1 млн DAU подробно расскажу под катом.

Читать далее
Total votes 35: ↑35 and ↓0+35
Comments4

Как эффективно проводить эксперименты по машинному обучению. Общий процесс работы над ML/DL проектом

Reading time8 min
Views3.6K

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

Читать далее
Total votes 6: ↑6 and ↓0+6
Comments0

Иерархия потребностей по Маслоу при разработке документации

Reading time8 min
Views7.9K

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

Сегодня эта теория известна под названием «Иерархия потребностей» и, как правило, изображается в виде пирамиды. Основная идея заключается в том, что человек начинает испытывать потребности более высокого уровня только после удовлетворения потребностей нижних уровней.

Читать далее
Total votes 4: ↑4 and ↓0+4
Comments1

Качай DevOps

Reading time9 min
Views5.6K

Статья будет полезна тем, кто начинает или планирует проведение цифровой трансформации и DevOps трансформации как ее части.

Перед ДОМ.РФ и Банком ДОМ.РФ стоит задача цифровой трансформации компании, в том числе DevOps трансформации. Меня зовут Евгений Панков и я – один из участников группы, задача которой, проводить изменения подходов, связанных с разработкой, тестированием и эксплуатацией.

Движение DevOps включает в себя практики, инструменты и культурные изменения. Я расскажу о своем опыте формирования видения того, какие практики мы будем рекомендовать для использования в командах, какие подходы использовал я для взаимодействия с командами для понимания состояния развития практик в них и донесения до коллег общего видения, какие практики мы хотим развивать.

Вопросы, которые нужно при этом решить виделись следующие:

Читать далее
Total votes 2: ↑2 and ↓0+2
Comments0

Корпоративный Release Manager: муки и радости

Reading time11 min
Views2.9K

Автоматизация процессов разработки и тестирования программного обеспечения (ПО) — лучший способ уйти от рутины и заняться действительно интересными задачами. Азарт от реализации новой функции может быть погребен под рутиной сборки, подготовкой и выпуска нового релиза. Как избежать этой неизбежной скучной задачи, но выпустить релиз ПО, не упустив при этом ни одной мелочи при его подготовке?

Выпуск релиза ПО — это не только сборка ПО в определённого формата пакет и отправка пакета на место его установки. Зачастую выпуск релиза включает в себя множество других задач, таких как:

Читать далее
Total votes 1: ↑1 and ↓0+1
Comments0

Автоматическое управление номером версии c помощью Azure DevOps

Reading time5 min
Views2.8K

В этой статье я расскажу, как мы организовали последовательное автоматическое увеличение номера версии приложения при выполнении коммита в ветку main с помощью Azure DevOps Pipeline.

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

Читать далее
Total votes 1: ↑1 and ↓0+1
Comments6

Построение архитектуры проекта при работе с PySpark

Reading time19 min
Views7.7K

В настоящее время уже сложно найти крупную компанию, которая не использовала бы возможности накопления и использования больших данных. Меня зовут Никита Сурков и я работаю в проекте ценообразования "Пятёрочки" X5 Group. Проект является ярким примером использования больших данных, так как Пятёрочка -- это 18000 магазинов по всей стране. Чтобы построить систему ценообразования в такой сети требуется обработка миллиардов строк информации из чеков, данных по остаткам, себестоимостей и многих других данных. Для всего этого преимущественно используется PySpark, как один из популярных инструментов для работы с расперделёнными системами. В данной статье будет представлен один из методов написания кода на PySpark таким образом, чтобы он был более читаем, легко тестируем и поддерживаем. Сразу оговорюсь, что не представляю здесь единственное правильное решение, но оно доказало свою жизнеспособность на примере того проекта, в котором я работал.

Читать далее
Total votes 3: ↑2 and ↓1+1
Comments9

Лайфхак – пишем и бесплатно хостим в облаке вебсайт с гостевой книгой

Reading time6 min
Views12K

Хостим в облаке вебсайт с гостевой книгой бесплатно


В наше время развернуть в облаке свой вебсайт с доменным именем второго уровня можно бесплатно. Вам интересно как? Читайте дальше.


Предлагаю вам разобрать то, как можно создать гостевую книгу на ASP.NET Core (с reCAPTCHA) и захостить ее бесплатно на довольно известном облачном хостинге (да, с ограничениями, но для персонального вебсайта с не особо большим трафиком годится вполне)

Читать дальше →
Total votes 24: ↑20 and ↓4+16
Comments23

Непрерывная интеграция в Unity: как сократить время сборок и сэкономить ресурсы + пайплайн в подарок

Reading time6 min
Views9.6K


Всем привет, на связи Александр Панов, техлид из Pixonic. В компании я отвечаю за межпроектные решения и околопроектную периферию и сегодня хочу поделиться своим опытом и наработками.

Платформы непрерывной разработки и интеграции, или CI/CD, сейчас используются повсеместно в тех отраслях, где решающую роль играет итеративность и отлаженность технических процессов. В этой статье речь пойдёт о CI/CD для реализации наших Unity-проектов для мобильной геймдев-разработки: с какими проблемами мы столкнулись, как их удалось решить, каких улучшений мы добились и как прописан наш пайплайн сборок билдов.

Сразу договоримся, что в качестве сервера CI мы используем TeamCity от JetBrains, в качестве хранилища Git-репозиториев ― GitHub, для хранения артефактов сборки ― Nexus.
Читать дальше →
Total votes 30: ↑29 and ↓1+28
Comments8

Как с помощью DevOps построить полноценную inhouse-разработку — опыт ВТБ

Reading time9 min
Views9.2K
Практики DevOps работают. Мы убедились в этом сами, когда сократили время установки релизов в 10 раз. В системе FIS Profile, которую мы используем в ВТБ, установка теперь занимает не 90 минут, а 10. Время сборки релиза снизилось с двух недель до двух дней. Число постоянных дефектов внедрения при этом упало почти до минимума. Чтобы уйти от «ручного труда» и устранить зависимость от вендора, нам пришлось пройти через работу с костылями и найти неожиданные решения. Под катом — подробная история о том, как мы построили полноценную внутреннюю разработку.


Читать дальше →
Total votes 12: ↑10 and ↓2+8
Comments12

Экспорт Google Forms + загрузка Google Script через REST API (Python)

Reading time13 min
Views16K


У нас было две гугл-формы, 75 вопросов в каждой, 5 бизнес-пользователей, которые активно правили эти формы, а еще гугл-скрипт, экспортирующий форму в JSON. Не то что бы его было сложно каждый раз запускать руками, но раз начал автоматизировать свою работу, то иди в этом увлечении до конца.

В официальной документации сам черт ногу сломит, поэтому под катом мы подробно рассмотрим удаленную загрузку и запуск Google Apps Script через REST API, используя Python.
Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments1

Как я запускал Докер внутри Докера и что из этого получилось

Reading time4 min
Views17K

Всем привет! В своей предыдущей статье, я обещал рассказать про запуск Докера в Докере и о практических аспектах применения этого занятия. Настало время выполнить свое обещание. Опытный девопс, пожалуй, возразит, что тем кому нужен Докер внутри Докера, просто пробрасывают сокет Докер демона из хоста внутрь контейнера и этого хватит в 99% случаев. Но не спешите кидать в меня печеньки, ведь речь пойдет о реальном запуске Докера внутри Докера. У этого решения много возможных областей применения и об одном из них эта статья, так что усаживайтесь поудобнее и выпрямите руки перед собой.


image

Total votes 11: ↑8 and ↓3+5
Comments6

Приглашаем на DINS QA EVENING 12.12.19: создаем Jenkins Pipeline и узнаем, как с их помощью распараллелить запуск тестов

Reading time2 min
Views1.1K
Рады пригласить всех интересующихся автоматизацией тестирования на очередной открытый DINS QA EVENING, который состоится в нашем офисе на Старо-Петергофском, 19.

Этим вечером Александр Михайлов из Яндекс.Деньги поделится опытом написания Jenkins Pipeline и на примерах покажет, чем это помогает в тестировании. Илья Гуляев из DINS расскажет, как распараллелить запуск тестов на несколько машин и сделать это максимально эффективно, используя все те же Jenkins Pipeline.

Под катом — подробнее о докладах и спикерах, ссылка на регистрацию для участия во встрече, информация о трансляции, материалы с прошлой встречи.

image
Читать дальше →
Total votes 6: ↑6 and ↓0+6
Comments2