Step any не работает

Содержание
  1. Step any не работает
  2. STEP Проблемы с файлом: Почему ваш компьютер не откроет файл STEP
  3. Общие сообщения об ошибках
  4. Общий STEP — Связанные проблемы
  5. Универсальное решение для открытия STEP и других неясных файлов
  6. Рекомендуем
  7. Step any не работает
  8. Ошибки в Anydesk и способы их устранения
  9. Недостаточно оперативной памяти: ошибка Werfault
  10. Ожидание изображение
  11. AnyDesk не подключен к серверу
  12. Нет звука во время сеанса
  13. Не работает Ctrl + C, Ctrl + V
  14. Курсор с перечеркнутым кружком
  15. Could not find a device при запуске Wake-on-LAN AnyDesk
  16. Что делать, если при запуске Anydesk черный экран при подключении?
  17. Jenkins Pipeline. Что это и как использовать в тестировании
  18. Запуск автотестов на Jenkins — инструкция
  19. Почему падают тесты
  20. Что такое дожим
  21. «Дожимать? Опасно же!»
  22. Как решать задачу с дожимами
  23. Что такое Jenkins Pipeline
  24. Генераторы фрагментов — помощники в мире Jenkins
  25. Запуск тестов с помощью Pipeline — инструкция
  26. Хотим добавить немного дожатий
  27. Многократное использование шагов — Shared Steps
  28. Вынесение запуска тестов в shared steps в /var
  29. Получение упавших тестов из прогона
  30. Добавление условий перезапуска
  31. Условия перезапуска
  32. Итоговый pipeline
  33. Визуализация с Blue Ocean

Step any не работает

STEP Проблемы с файлом: Почему ваш компьютер не откроет файл STEP

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

Установить необязательные продукты — File Magic (Solvusoft) | EULA | Privacy Policy | Terms | Uninstall

Общие сообщения об ошибках

Сообщение об ошибке : Файл STEP поврежден

Единственное решение для коррумпированного файла — загрузить новую копию или попросить отправителя повторно отправить файл.

Сообщение об ошибке : Не удается найти программное обеспечение для открытия файла STEP

Эта ошибка довольно легко решить. Просто щелкните файл STEP и выберите PyDDR, AP203 Step File или ISO-10303 STEP Product Data из раскрывающегося списка, чтобы создать ассоциацию типов файлов по умолчанию. В будущем он автоматически откроется в выбранном вами программном обеспечении.

Общий STEP — Связанные проблемы

Проблема: Вы не имеете PyDDR, AP203 Step File или ISO-10303 STEP Product Data Установлено

Вы можете просто загрузить программное обеспечение PyDDR, AP203 Step File или ISO-10303 STEP Product Data. STEP по умолчанию использует PyDDR, но также совместим с AP203 Step File и ISO-10303 STEP Product Data. Если у вас установлено PyDDR, AP203 Step File или ISO-10303 STEP Product Data, попробуйте сделать один из этих программных пакетов вашей файловой ассоциацией по умолчанию для расширения типа файла STEP.

Проблема: У вас есть PyDDR, AP203 Step File или ISO-10303 STEP Product Data Установлено, но оно все еще не работает

Если у вас установлено PyDDR, AP203 Step File или ISO-10303 STEP Product Data, и вы все еще не можете открыть файл, вы должны связаться с разработчиками программного обеспечения для дальнейшей помощи. См. Наш график ниже, с которым можно связаться:

Программного обеспечения разработчик
PyDDR Unknown
AP203 Step File Microsoft Developer
ISO-10303 STEP Product Data Unknown

Проблема: Вы не можете установить PyDDR, AP203 Step File или ISO-10303 STEP Product Data

Если по какой-либо причине вы не можете или не хотите устанавливать PyDDR, AP203 Step File или ISO-10303 STEP Product Data, вы также можете искать в Интернете бесплатное программное обеспечение, которое использует файлы STEP , Но, как предостережение, будьте осторожны, так как многие бесплатные загрузки программного обеспечения заражены вредоносными программами или связаны с нежелательным программным обеспечением.

Универсальное решение для открытия STEP и других неясных файлов

Зачем устанавливать специальное программное обеспечение только для открытия файлов STEP один раз, когда вы можете быстро и легко просматривать эти и сотни других типов файлов с помощью одного программного обеспечения?

File Magic — идеальное решение. File Magic позволяет открывать сотни разных типов файлов только с одним программным обеспечением. Экономьте деньги, пространство на жестком диске и время с помощью универсального средства просмотра файлов. Загрузите File Magic сейчас и попробуйте сами.

Рекомендуем

Sorry, your browser doesn’t support embedded videos.

Установить необязательные продукты — File Magic (Solvusoft) | EULA | Privacy Policy | Terms | Uninstall

Источник

Step any не работает

BiG_ASU запись закреплена

Уголовный кодекс, N 63-ФЗ | ст 146 УК РФ

Статья 146. Нарушение авторских и смежных прав

[Уголовный кодекс РФ] [Глава 19] [Статья 146]
Показать полностью.
1. Присвоение авторства (плагиат), если это деяние причинило крупный ущерб автору или иному правообладателю, —

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

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

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

3. Деяния, предусмотренные частью второй настоящей статьи, если они совершены:

б) группой лиц по предварительному сговору или организованной группой;

в) в особо крупном размере;

г) лицом с использованием своего служебного положения, —

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

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

Источник

Ошибки в Anydesk и способы их устранения

Ниже приведены популярные ошибки при использовании Anydesk и методы решения.

Недостаточно оперативной памяти: ошибка Werfault

Среди вариантов решения:

  • Чистая загрузка Windows.
  • Проверка целостности системных файлов командой sfc/scannow.
  • Откат системы из точки восстановления.
  • Отключение загрузки сторонних служб.
  • Удаление менеджеров системы (штатных утилит для управления параметрами ноутбука).
  • Переустановка драйверов видеокарты.

Окно вызывается командой «msconfig».

Ожидание изображение

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

AnyDesk не подключен к серверу

Возможны обновления на сервере, попробуйте позже. Обновите приложение на обоих устройствах, откажитесь от использования VPN и прокси-сервера.

Нет звука во время сеанса

В настройках аудио разрешите передачу звука с текущего устройства.

Если не поможет, укажите целевое устройство в списке.

В настройках безопасности разрешите прослушивание звука в разделах «Неконтролируемый доступ» и «Разрешения для удалённых пользователей».

Не работает Ctrl + C, Ctrl + V

Чтобы горячие клавиши работали, активируйте параметры в подразделах «Безопасности» «Разрешения для удалённых…». Если разрешён неконтролируемый доступ – в одноимённом разделе.

Проблемы с клавиатурой.

Курсор с перечеркнутым кружком

Включите опцию «Управлять моими клавиатурой и мышью». Иногда помогает запуск программы от имени администратора.

Could not find a device при запуске Wake-on-LAN AnyDesk

Включите параметр Wake-On-LAN в BIOS/UEFI и AnyDesk.

Что делать, если при запуске Anydesk черный экран при подключении?

Такой баг замечен на Windows 10 после установки обновления 1903. Рекомендуется обновить графический драйвер. Скачайте последнюю версию программного обеспечения с официального сайта видеокарты и установите с заменой. Не загружайте драйвер через «Центр обновления» Windows.

Источник

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

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

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

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

Запуск автотестов на Jenkins — инструкция

Не новость, что автотесты эффективнее всего проводить после каждого изменения системы. Запускать их можно локально, но мы рекомендуем делать это только при отладке автотестов. Больший профит автотесты принесут при запуске на CI. В качестве CI-сервера у нас в компании используется Jenkins, в качестве тестового фреймворка — JUnit, а для отчетов — Allure Report.

Чтобы запускать тесты на Jenkins, нужно создать и сконфигурировать джобу.

Для этого достаточно выполнить несколько несложных шагов.

1) Нажать «Создать», выбрать задачу со свободной конфигурацией и назвать ее, например, TestJob.

Естественно, для этого у вас должны быть права в Jenkins. Если их нет, нужно обратиться к администратору Jenkins.

2) Указать репозиторий, откуда будет выкачиваться код проекта: URL, credentials и branch, с которого все будет собираться.

3) Добавить нужные параметры, в этом примере — количество потоков (threadsCount) и список тестов для запуска (testList).

Значение “*Test” для JUnit означает «Запустить все тесты».

4) Добавить команду для запуска тестов.

Наш вариант запускается на Gradle: мы указываем таску теста и передаем параметры в тесты.

./gradlew test -PthreadsCount=$threadsCount -PtestList=$testList

Можно выполнить шаг сборки «Выполнить команду shell», либо через Gradle Plugin использовать шаг «Invoke Gradle Script».

5) Нужно добавить Allure-report (должен быть установлен https://plugins.jenkins.io/allure-jenkins-plugin/) в «Послесборочные операции», указав путь к артефактам Allure после прогона (по умолчанию allure-result).

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

На скрине — реальный прогон. По таймлайну видно, как тесты разделяются по потокам и где были падения.

Несложно заметить, что тесты у нас падают.

Почему падают тесты

Падения могут случаться по разным причинам. В нашем случае на это влияют:

ограниченные ресурсы тестового стенда,

большое число микросервисов (

140); если при запуске интеграционных тестов какой-то один микросервис подтормаживает, тесты начинают валиться,

большое число интеграционных тестов (>3000 E2E),

врожденная нестабильность UI-тестов.

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

Что такое дожим

Дожим — это перезапуск автотестов в рамках одного прогона. При успешном прохождении автотеста можно считать его пройденным, не учитывая предыдущие падения в прогоне.

«Дожимать? Опасно же!»

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

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

Как решать задачу с дожимами

Мы пробовали разные решения: использовали модификацию поведения JUnit 4, JUnit 5, писали обертки на Kotlin. И, к сожалению, каждый раз реализация завязывалась на фичах языка или фреймворка.

Если процесс запускался с помощью JUnit 4 или JUnit 5, возможность перезапустить тесты была только сразу при падении. Тест упал, перезапустили его несколько раз подряд — и если сбоил какой-то микросервис из-за нагрузки, либо настройки тестовой среды были некорректные, то тест все три раза падал.

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

Мы взглянули на проблему шире, решили убрать зависимость от тестового фреймворка или языка и реализовали перезапуск на более высоком уровне — на уровне CI. И сделали это с помощью Jenkins Pipeline.

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

Что такое Jenkins Pipeline

Jenkins Pipeline — набор плагинов, позволяющий определить жизненный цикл сборки и доставки приложения как код. Он представляет собой Groovy-скрипт с использованием Jenkins Pipeline DSL и хранится стандартно в системе контроля версий.

Существует два способа описания пайплайнов — скриптовый и декларативный.

Они оба имеют структуру, но в скриптовом она вольная — достаточно указать, на каком слейве запускаться (node), и стадию сборки (stage), а также написать Groovy-код для запуска атомарных степов.

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

Рассмотрим подробнее декларативный пайплайн.

В структуре должна быть определена директива pipeline.

Также нужно определить, на каком агенте (agent) будет запущена сборка.

Дальше идет определение stages, которые будут содержаться в пайплайне, и обязательно должен быть конкретный стейдж с названием stage(“name”). Если имени нет, тест упадет в runtime с ошибкой «Добавьте имя стейджа».

Обязательно должна быть директива steps, в которой уже содержатся атомарные шаги сборки. Например, вы можете вывести в консоль «Hello».

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

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

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

Сначала я даже растерялся и не знал, с чего начать — настолько там много информации. Если вы первый раз сталкиваетесь с написанием пайплайна, начать лучше со знакомства с генераторами фрагментов пайплайна из UI-интерфейса.

Если к URL вашего веб-интерфейса Jenkins добавить ендпойнт /pipelines-syntax, откроется страница, в которой есть ссылки на документацию и два сниппет-генератора, позволяющие генерировать пайплайн даже без знания его синтаксиса:

Declarative sections generator

Генераторы фрагментов — помощники в мире Jenkins

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

Declarative sections generator (JENKINS-URL/directive-generator) — генератор фрагментов для декларативного описания пайплайна.

Для добавления стадии нужно написать ее имя и указать, что будет внутри (steps). После нажатия кнопки «Сгенерировать» будет выведен код, который можно добавлять в пайплайн.

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

Snippet Generator (JENKINS-URL/pipeline-syntax) — поможет сгенерировать фрагменты шагов.

В Sample Step выбрать build: Build a job.

(Дальше функционал подсказывает) — необходимо определить параметры, которые будут переданы в джобу (для примера задано branch, project).

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

Изменим параметры джобы на те, которые определили при ее создании.

где threadsCount — кол-во потоков для распараллеливания тестов, testList — список тестов для запуска, runId — идентификатор прогона тестов. Для чего нужны эти параметры, расскажу далее.

Snippet Generator удобен тем, что подсвечивает шаги в зависимости от установленных плагинов. Если у вас есть, например, Allure-report, то плагин сразу покажет наличие расширения и поможет сгенерировать код, который будет работать.

Вставим сгенерированный код степа в пайплайн на следующем шаге.

Запуск тестов с помощью Pipeline — инструкция

Итак, давайте с помощью Declarative sections generator создадим пайплайн. В нем нужно указать директивы: pipeline, agent (агент, на котором будет запускаться пайплайн), а также stages и steps (вставка ранее сгенерированного кода).

Так получится пайплайн, который запустит джобу, созданную на предыдущем шаге через UI.

Напомню, что в параметры для запуска тестов мы передавали количество потоков и список тестов. Теперь к этому добавляем параметр runId (идентификатор прогона тестов) — он понадобится позднее для перезапуска конкретного сьюта тестов.

Чтобы запустить пайплайн, нужно создать проект.

New Item -> Pipeline.

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

Добавить параметры runId, threadsCount, testList.

Склонировать из Git.

Пайплайн можно описать непосредственно как код и вставить в поле, но для версионирования нужно затягивать пайплайн из Git. Обязательно указываем путь до скрипта с пайплайном.

Готово, джобу можно запускать.

Хотим добавить немного дожатий

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

Для реализации нужно:

вынести шаг запуска тестов в библиотечную функцию (shared steps),

получить упавшие тесты из прогона,

добавить условия перезапуска.

Теперь немного подробнее про каждый из этих шагов.

Многократное использование шагов — Shared Steps

В процессе написания пайплайнов я столкнулся с проблемой постоянного дублирования кода (часто используемых степов). Этого хотелось избежать.

Решение нашлось не сразу. Оказывается, для многократного использования кода в Jenkins есть встроенный механизм — shared libraries, который позволяет описать методы один раз и затем применять их во всех пайплайнах.

Существуют два варианта подключения этой библиотеки.

Написанный проект/код подключить через UI Jenkins. Для этого требуются отдельные права на добавление shared libraries или привлечение девопс-специалистов (что не всегда удобно).

Хранить код в отдельном проекте или в проекте с пайплайнами. При использовании этот код подключается как динамическая библиотека и выкачивается каждый раз при запуске пайплайна.

Мы используем второй вариант — размещаем shared steps в проекте с пайплайнами.

Для этого в проекте нужно:

создать папку var,

в ней создать файл с названием метода, который планируется запускать — например, gradlew.groovy,

стандартно определить имя метода (должен называться call), то есть написать «def call» и определить входящие параметры,

в теле метода можно написать произвольный Groovy-код и/или Pipeline-степы.

Вынесение запуска тестов в shared steps в /var

Выносим startTests.groovy в /var.

Во-первых, нужно вынести запуск тестов в отдельный метод. Выглядит это так — создаем файл, называем метод def call, берем кусок кода, который был в пайплайне, и выносим его в этот step.

Для передачи параметров используется Map . Почему не передавать каждый параметр отдельно? Это не очень удобно, т.к. в Groovy параметры не обозначены по названиям. При использовании Map синтаксис позволяет указать “key:value“ через двоеточие. В коде (в месте вызова метода) это отображается наглядно.

Структура проекта будет выглядеть так.

Подключение shared steps как внешней библиотеки.

Дальше нужно добавить вынесенные шаги в пайплайн. При динамической подгрузке библиотек (во время запуска пайплайна) эти шаги выкачиваются из репозитория и подключаются на лету.

Сделать это можно с помощью сниппет-генератора — выбираем степ library и указываем ветку, в которую все будет собираться и репозиторий. Дальше нажимаем кнопку «Сгенерировать» и вставляем получившийся пайплайн.

Теперь после подключения shared steps вместо шага запуска тестов build нужно вставить startTest. Не забудьте, что имя метода должно совпадать с именем файла.

Теперь наш пайплайн выглядит так.

Первый шаг реализован, теперь можно многократно запускать тесты в разных местах. Переходим к 2 шагу.

Получение упавших тестов из прогона

Теперь нам нужны упавшие тесты. Каким образом их извлечь?

Установить в Jenkins плагин JUnit Test Result Report и использовать его API.

Взять результаты прогона JUnit (обычно в формате XML), распарсить и извлечь нужные данные.

Запросить список упавших тестов из нужного места.

В нашем случае таким местом является собственный написанный сервис — Reporter. Во время прогона тестов результат по каждому из них отправляется именно туда. В конце прогона делаем http-запрос и получаем упавшие тесты.

Добавление условий перезапуска

На этом шаге следует добавить getFailedTests.groovy в /var. Представим, что у вас есть такой сервис — Reporter. Нужно назвать файл getFailedTests, сделать запрос httpRequest в этот сервис и распарсить его.

Отлично, второй шаг выполнен. Осталось добавить ту самую изюминку — условия перезапуска. Но сначала посмотрим, что получается.

Есть запуск тестов и получение результатов прогона. Теперь нужно добавить те самые условия, которые будут говорить: «Если все хорошо, завершай прогон. Если плохо, давай перезапускать».

Условия перезапуска

Какие условия для перезапуска можно реализовать?

Приведу часть условий, которые используем мы.

1) Если нет упавших тестов, прогон завершается.

2) Как я уже писал выше, на тестовой среде ресурсы ограничены, и бывает такое, что ТС захлебывается в большом количестве параллельных тестов. Чтобы на дожатии избежать падений тестов по этой причине, понижаем число потоков на повторном запуске. Именно для этого при создании джобы и в самом пайплайне мы добавили параметр threadsCount.

Если и после уменьшения потоков тесты не дожимаются (количество упавших тестов на предыдущем прогоне равно числу упавших тестов на текущем), тогда считаем, что дело не во влиянии ТС на тесты. Останавливаем прогон для анализа причин падений — и тем самым предотвращаем последующий холостой запуск.

3) Третья и самая простая проверка состоит в том, что если падает большое количество тестов, то дожимать долго. Скорее всего, причина падений какая-то глобальная, и ее нужно изучать.

Для себя мы определили: если тестов > 40, дожимать не автоматически не будем, потому что 40 наших E2E могут проходить порядка 15 минут.

Последние два условия — так называемые fail fast. Они позволяют при глобальных проблемах на тестовом стенде не делать прогоны, которые не приведут к дожиму тестов, но будут занимать ресурсы тестового стенда.

Итоговый pipeline

Итак, все 3 шага реализованы — итоговый пайплайн выглядит так.

Визуализация с Blue Ocean

Как все это выглядит при прогоне в Jenkins? У нас, к примеру, для визуализации в Jenkins установлен плагин Blue Ocean.

На картинке ниже можно увидеть, что:

запустился метод testwith_rerun,

прошел первый запуск,

прошла проверка упавших тестов,

запустился второй прогон,

после успешной проверки джоба завершилась.

Вот так выглядит визуализация нашего настоящего прогона.

В реальном примере две ветки: мы параллельно запускаем два проекта с тестами (на Java и Kotlin). Можно заметить, что тесты одного проекта прошли с первого раза, а вот тесты другого пришлось дожимать еще раз. Таким образом визуализация помогает найти этап, на котором падают тесты.

А так выглядит реальный timeline приемки релиза.

После первого прогона отправили дожимать упавшие тесты. Во второй раз упавших тестов намного меньше, дожимаем в третий раз — и вуаля, успешный build.

Мы перенесли логику перезапусков упавших тестов из тестового проекта на уровень выше — на CI. Таким образом сделали механизм перезапуска универсальным, более гибким и независимым от стека, на котором написаны автотесты.

Раньше наши тесты дожимались безусловно, по несколько раз, с неизменным количеством параллельных потоков. При перегрузке тестового стенда, некорректных настройках тестового окружения либо каких-то других проблемах — красные тесты перезапускались фиксированное число раз без шансов дожаться. В худшем случае прогоны могли длиться часами. Добавив условия fail fast, мы сократили это время.

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

Какой профит мы получили:

уменьшили time-to-market тестируемых изменений,

сократили длительность аренды тестового стенда под приемочное тестирование,

увеличили пропускную способность очереди приемочного тестирования,

не завязаны на тестовый фреймворк («под капотом» может быть что угодно — дожатия будут работать),

поделились знаниями об использовании Jenkins Pipeline.

Примеры кода выложены на GitHub. Если будут вопросы, задавайте — обязательно отвечу.

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

Помимо +100 к опыту и знаниям Jenkins вы получаете ачивку «Ю Academic»! 🙂

Источник

Читайте также:  Сломалась видеокарта нет изображение
Оцените статью