вторник, 31 марта 2020 г.

Интеграция Jenkins с private-репозиторием в Bitbucket

Если у нас публичный репозиторий, то достучаться до него в Jenkins проблем вообще нет, в pipeline скрипте указываем:

git 'https://okiseleva@bitbucket.org/testbasecode/test_1.git' 

И готово!

А что, если у нас приватный репозиторий? Что, собственно, и будет на реальной работе, кто ж свои автотесты в общий дотуп то кладет =))

Подключать надо через SSH-ключ. Для этого идем в битбакете в настройки проекта —  General— Access keys. И там будет ссылка на актуальную инструкцию!


Сейчас эта ссылка ведет сюда — https://confluence.atlassian.com/bitbucket/set-up-an-ssh-key-728138079.html

Я настраивала для Linux. Ой, ну ладно, муж настраивал, не суть 
Шаги настройки:

Разграничение доступа по папкам Jenkins-а

Как сделать так, чтобы новый пользователь в Jenkins имел доступа только к части проектов? При этом мог создавать задачи и конфигурировать их. Для этого надо разбить проекты на папочки и раздавать права на директорию. Как?

Устанавливаем плагин — Folder-based Authorization Strategy.

Тогда в настройках дженкинса появится стратегия авторизации в папках:


Открываем ее, переходим в раздел «Manage Folder Roles» (над ним еще глобальные настройки есть, там можно дать view доступ)


суббота, 28 марта 2020 г.

Панбагон. Ошибка воспроизведения в youtube после простоя

В последние несколько дней youtube меня разлюбил )))

Там ведь как обычно? Вот ты смотришь видео. Остановился. Можно даже вкладку закрыть! Но когда следующий раз откроешь это видео — воспроизведение пойдет с того места, где ты остановился.

А у меня сейчас получается так. Я остановила видео. Вкладку не закрывала, но с ним не работала. Через часа 4-5 снова вернулась к видео, нажимаю «продолжить», а оно мне ошибку:


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


пятница, 27 марта 2020 г.

Панбагон. Привет, ноунейм!

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

Искала, искала, попробовала justfood — https://www.justfood.pro/. Когда делаешь заказ, там нужно ввести имя, то есть оно у них есть:

Оформление заказа

Так вот, сделала я пробный заказ (990 рублей за 1 день на 2000 ккал), приходит мне такое письмо:

Письмо с пустотой внутри

Упс, имя то забыли! Хотя, напомню, оно у них есть =)


среда, 25 марта 2020 г.

Кроссбраузерные баги

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

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

Основные браузеры:

  • IE
  • Firefox
  • Chrome



вторник, 24 марта 2020 г.

Удаленный запуск джобы в Jenkins через curl

В Jenkins есть возможность запускать задачи удаленно, через curl:

curl -X POST http://API_USER_ID:API_TOKEN@JENKINS_URL/job/JOB_NAME/build -H "CRUMB"



А вот как составить этот curl, мне помогла статья на stackoverflow, которая, в свою очередь, ссылается на оригинальный пост.

Хочу сохранить это решение:

Допустим, мы хотим запустить удаленно задачу под названием «Football».
Дженкинс у нас находится по адресу http://192.168.99.20:8080 и входим ты под пользователем admin.

Что нужно сделать?

1. Создать задачу


1. «Создать Item» (да, в русифицированной версии это так называется)




Со свободной конфигурацией, назвать «Football». 



Хочу заметить, что, если вы собираетесь вызывать джобу через curl, лучше не использовать пробел в ее названии. А то потом огребете проблем там, где не ждали. Это имхо, но лучше использовать CamelCase  или snake_case.

См также:

суббота, 21 марта 2020 г.

Ошибка в Jenkins: newman: command not found

Установил мне админ Jenkins на моем сервере. Стала настраивать связку с Postman по инструкции — «Integration with Jenkins».

Вроде установила и nodejs, и newman. Запускаю тест, а он мне обломчик:


Started by user Админ 
Running as SYSTEM
Building in workspace /var/lib/jenkins/workspace/Newman_test
[Newman_test] $ /bin/sh -xe /tmp/jenkins166732700398555443.sh
+ newman run https://www.getpostman.com/collections/c2eb72db4c1191c3d36d
/tmp/jenkins166732700398555443.sh: 2: /tmp/jenkins166732700398555443.sh: newman: not found
Build step 'Execute shell' marked build as failure
Finished: FAILURE

Но как это «newman: not found»?? Ведь если зайти через SSH на сервер и запустить ту же самую команду

newman run https://www.getpostman.com/collections/c2eb72db4c1191c3d36d

То все работает!

четверг, 19 марта 2020 г.

Месяц на пределе. Джесси Ицлер


Ссылка на OZON

Это не бизнес-книга, но это книга победы над собой и саморазвития. И она мне очень понравилась, поэтому я решила написать о ней в основном блоге Smile :)

В чем суть — Джесси Ицлер бегал марафоны, а в 40+ лет решил бросить себе новый вызов и пригласить «морского котика» для тренировок. На месяц. Вот этот месяц в книге и описан, в виде дневничка: день 1, день 2...

Имя «Котика» не называется (ладно, спойлер, один раз его назовут). Так по всей книге и идет: «Котик» сказал то, «Котик» сделал это...

Вообще автор думал, что тренировки сорвутся, потому что пригласил «Котика» под новый год, когда стабильно было -10 градусов, а то и ниже. Как бы не так! Каждый день бегали как миленькие. Автор одевался в несколько слоев термоодежды, а «Котик» бегал в шортах и футболке.

Автор пишет с юмором, из серии «Зачем я в это ввязался вообще??». А такие мысли, надо признать, лично меня посещают, когда я вписываюсь в ту же «Бешеную сушку», да или просто хожу в спортзал.

среда, 18 марта 2020 г.

Вложил аттач? Сошлись на него по тексту бага

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

За такое мы на курсах ругаемся:

— На какой скриншот мне смотреть?
— Он там один, зачем уточнять?

Объясняю.
Реальная жизнь выглядит так, на примере бага:

— Вася заводит баг, в нем один скриншот.
— Тестировщица Маша комментирует баг "воспроизвелся на моей ветке тоже", и прикладывает новый скриншот.
— Разработчик Петя не понимает, что творится в логах, прикладывает скриншот, логи, и просит разработчика Мишу посмотреть.
— Разработчик Миша смотрит логи, объясняет Пете, в чем дело, прикладывает аттач с серверными логами, соответствующими клиентским
- ....

В результате вы имеете баг, в котором аттачей полтора десятка. И если в описании задачи написано «см аттач», то автора начинают тихо ненавидеть. Потому что непонятно, а на какой смотреть-то?

суббота, 14 марта 2020 г.

Что такое минимальный файл для воспроизведения бага

Допустим, что у нас есть система, в которую можно загружать файлы:

Пример функционала с загрузкой файла

И вот мы загрузили файл, а система упала. Отчего? Из-за названия, расширения, данных внутри или размеров? Найдите проблему и уберите лишнее:
  • Падает из-за названия? Внутри пусть будет 1 ячейка (одна колонка, одна строка)
  • Нельзя загрузить больше 10 столбцов? Пусть столбцов будет 10, но лишь 1 строка
  • Слишком много строк? Строки оставляем, а колонку делаем одну
  • Проблема в конкретном значении? Например, система не может обработать високосный год? Снова оставляем одну ячейку — с этим годом. А еще лучше — пробуем воспроизвести без файла (если система предоставляет альтернативу).

То есть минимальный файл — это в котором ничего лишнего. Минимум:
  • строк
  • колонок
  • данных внутри
  • длины имени файла

Но, разумеется, на этом минимальном файле баг должен воспроизводиться. Упадет на одной ячейке? Ок, оставляем только ее. А если система первую строку игнорирует / считывает как «шапку», то нам понадобится уже две строки — одна для шапки, а вторая с «падающим» значением.

вторник, 10 марта 2020 г.

Сообщение об ошибке «Ты совсем дурак?»

Встретилось сегодня в фб:


С одной стороны, смешно ))

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

Хотите пошутить? Шутите в локальной сборке, не коммитя такие изменения в SVC.
А тестировщикам напомню, что сообщения об ошибках тоже надо тестировать. В том числе на грамотность и вежливость.

См также:
Сообщения об ошибках — тоже документация, тестируйте их! — подробнее о том, зачем их тестировать и как

воскресенье, 8 марта 2020 г.

Мои 12 недель в году. Часть 12


Первый опытвторойтретий4567891011

Что это за техника


Вы собираетесь с друзьями в группу и ставите себе цели на 12 недель (3 месяца). Это могут быть как рабочие, так и личные задачи. Такие, которые вы вроде как хотите сделать, но вечно откладываете, так как «некогда, потом, щас, вот только мелочевку разгребу и тот пожарчик потушу».

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

Я комбинирую с магией утра.


Результаты кратко


Очень красивый цикл по датам. 12 цикл 12 недель... Куда вошел Новый год (на 3 неделе). А результаты по нему я подвела 8 марта. Красота Wink ;)

Основные цели:

— книга: дописать книгу!
— курсы: закончить урок 6
— курсы: записать урок 7
— статья на ХАБР!

Нууу, что тут скажешь. С книгой я погорячилась! Глава последняя тоже немаленькая получается. Пока 119 страниц. И идет тяжело, ведь раньше я писала главы по готовым материалам из своих лекций, а тут надо с нуля объяснять мысль.

В общем, можно было бы попу рвать, ночами не спать, но доделать. Но это не мой путь. Я не хочу торопиться в мыле только потому, что «аааа, скоро закончатся 12 недель, аааааааа, а это же моя цель была». Да, я понимаю, что такой подход был бы эффективнее с точки зрения результата, но насколько хватит человека с вечными авралами?

У меня закончился 12 цикл 12 недель. Красивая дата! А еще это 12 раз по 3 месяца. То есть 3 года! Я работала и встречалась с коллегой по 12недель на обедах. Я ходила беременная, я родила ребенка и ему уже 1.5 года. Все меняется, а циклы все продолжаются. Это работает, если не пытаться загнать себя в могилу ради результата. Так что закончу книгу в следующий цикл (или послеследующий).

А вот по курсам я не просто выполнила, но даже перевыполнила план! Сделала уроки 6, 7 и даже 8 (почти целиком). Но об этом чуть ниже. А пока пройдемся кратенько. Итак, что я успела за цикл:
  1. Написала 120 страниц последней главы книги!
  2. Заходы к книге — почти каждый день, очень стабильно, я довольна! 
  3. Посты из книги, пополняя бесплатный онлайн-вариант —  9 штук ٩(◕‿◕。)۶
  4. Новые книги — 2 штуки в процессе ツ
  5. Курс — закончила обработку 6 урока
  6. Полностью сделала 7 урок
  7. Записала урок 8 — это 2ч итогового видео \(〇_o)/
  8. Улучшалки по текущим курсам — они небольшие, но набирается прилично! 
    1. Улучшалки по ШНАТ — 28 штук \(〇_o)/
    2. Рест — 1 штука
    3. Локализация — 1 штука
  9. Пополняю раздел «работы студентов» — 12 штук!
  10. Нашла 3 кандидатов в тренеры
  11. Инструменты 12 недель — продолжаю вести файлик DONE, это все еще очень круто
  12. Добавила инструмент — хвастаюсь каждую неделю своими успехами (во флудилке)
  13. Выложила полезные видосики на свой youtube-канал — 4 штуки
  14. Testbase — 2 улучшалки ¯\_(ツ)_/¯
  15. Folks — 6 улучшалок
  16. Прочитала 3 книги (。•́︿•̀。)
  17. Находила время на всякие "найс ту ду", но мало, курс увлек
  18. Ездила в 4ДХ
  19. Ходила и в местный кинотеатр
  20. Встречались с друзьями, ко мне в гости заезжали в основном
  21. Два раза (!) выехали к друзьями с Владом сами — на дачу
  22. Занималась ремонтом (в начале цикле наняли дизайнера)
  23. Вызвали химчистку ковра и дивана
  24. Ездила к имплантологу — ох, что мне предстоит в следующем цикле (((
  25. Покрасилась
  26. Подстригли сына (ну типа надо же в годик, чтобы волосы лучше росли и бла-бла-бла)
  27. Сходила на массаж
  28. Ездила в СПА одна! Красота ))) Полный релакс)))
  29. Ездили в СПА с подругой
  30. Начала сидеть в ванной с книжкой, как в старые добрые времена! Хотя бы иногда))

Результаты подробнее