Архив рубрики: CI/CD

Continuous integration in software engineering is the practice of merging all developer working copies to a shared mainline several times a day.

Continuous delivery is a software engineering approach in which teams produce software in short cycles, ensuring that the software can be reliably released at any time and, when releasing the software, doing so manually. It aims at building, testing, and releasing software with greater speed and frequency.

AWS: ротация ключей IAM пользователей, EC2 IAM Roles и Jenkins

30 мая 2019
 

 Сегодня просматривал IAM-пользователей в AWS, и вспомнил, что с точки зрения безопасности иногда полезно менять ключи доступа: Но тут встал вопрос: хорошо, задать ключам expire, и периодически их обновлять в AWS IAM – это одно… Но эти ключи используются в куче скриптов, которые запускаются в Jenkins-джобах. Например – провижен бекенда выполняется из Ansible и модуля… Читать далее »

Jenkins: проверка публичных репозиториев Github-организации

16 апреля 2019
 

 Продолжаем внедрение проверки списка публичных репозиториев организации. Напомню: идея состоит в том, что бы если кто-то из девелоперов случайно расшарит приватный репозиторий, или создаст новый репозиторий не приватным, а публичным – получить об этом уведомление в Slack. Написание самой утилиты на Go есть в посте Go: проверка списка публичных репозиториев в Github и уведомления в… Читать далее »

Jenkins: your Jenkins data directory is almost full и автоматическая очистка диска

27 марта 2019
 

 Есть Jenkins, на котором имеется пачка билдов проекта. Спустя какое-то время – появилось сообщение вида: Jenkins: your Jenkins data directory /var/lib/jenkins (aka JENKINS_HOME) is almost full Проверяем диск с помощью ncdu, и находим несколько джоб, которые отжирают много места, например: [simterm] root@jenkins-production:/data/jenkins# du -h –max-depth 1 jobs/ .. 25G jobs/APITests … [/simterm] Кучу места занимают… Читать далее »

Jenkins: jenkins.model.RunIdMigrator doMigrate WARNING: found unexpected dir lastSuccessfulBuil

15 марта 2019
 

 Имеется Jenkins, запущен в Docker-контейнере. Проблема После рестарта через systemctl – “Шеф, усё пропало!” Сам сервис выглядит так: [simterm] root@jenkins-production:/opt/jenkins# systemctl cat jenkins # /etc/systemd/system/jenkins.service [Unit] Description=Jenkins service Requires=docker.service After=docker.service [Service] Restart=always WorkingDirectory=/opt/jenkins # Compose up ExecStart=/usr/local/bin/docker-compose -f jenkins-compose.yml up # Compose down, remove containers and volumes ExecStop=/usr/local/bin/docker-compose -f jenkins-compose.yml down -v [Install] WantedBy=multi-user.target [/simterm]… Читать далее »

Jenkins: HTTP full-duplex channel timeout

15 марта 2019
 

 При подключении к Jenkins с помощью Jenkins CLI – оно завершается с ошибкой. Т.е. в консоли ничего не выводится, но если после подключения выполнить echo $?, что бы вывести код последней команды – то там был, кажется, 255 ответ. Происходило пару дней тому, не записал в черновик. Подключение выглядит так: [simterm] $ java -jar jenkins-cli.jar… Читать далее »

Jenkins: копирование проекта на другой сервер

13 марта 2019
 

 Имеется старый Jenkins с пачкой iOS джоб, которые надо перенести на новый сервер. Документация предлагает: Move a job from one installation of Jenkins to another by simply copying the corresponding job directory. Т.е. вариант первый, самый простой – просто скопировать всю папку jobs, или вложенных задач. Недостаток (или преимущество, в зависимости от задачи) такого подхода… Читать далее »

Jenkins: JNLP-slave из Docker-образа

21 января 2019
 

 Имеется у нас зоопарк билд-агентов (macOS, Ubuntu), работающих в офисе. Сам Jenkins при этом запущен в AWS, на ЕС2, и обращается к агентам через проброс SSH-портов на офисном роутере. Задача – перенастроить схему, что бы агенты сами обращались к Jenkins, и, таким образом, отказаться от пробоса портов. Сесурити и вот это вот всё. Простой пример… Читать далее »

Jenkins: Remote call on JNLP4-connect connection failed

15 января 2019
 

 Имеется Jenkins, для которого подключили новый слейв. Слейв запущен на Mac Mini, и используется для iOS билдов. Но во время запуска – возникает ошибка: [EnvInject] – Injecting environment variables from a build step. [EnvInject] – Injecting as environment variables the properties file path ‘propsfile’ [EnvInject] – Variables injected successfully. FATAL: Remote call on JNLP4-connect connection… Читать далее »

Android Studio: emulator – qt_setup.cpp:28:Qt library not found

12 декабря 2018
 

 При запуске emulator (см. Appium: Android Virtual Device, Original error: Condition unmet after 60159 ms и костыль) – возникает ошибка qt_setup.cpp:28:Qt library not found: [139824804910912]:ERROR:android/android-emu/android/qt/qt_setup.cpp:28:Qt library not found at ../emulator/lib64/qt/lib Could not launch ‘/home/projectname/projectname/../emulator/qemu/linux-x86_64/qemu-system-i386’: No such file or directory Девайс запускается из Jenkins-джобы: node(‘android’) { stage(‘Run UI tests’) { ws(‘/home/projectname/projectname’) { sh ‘/usr/local/bin/appium -p 4723 –session-override… Читать далее »

Appium: Android Virtual Device, Original error: Condition unmet after 60159 ms и костыль

6 декабря 2018
 

 Проблема: UI-тесты, запускаемые с помощью Appium, падают. Задача: найти причину, и пофиксить. Что бы воспроизвести проблему –  установили Android Studio на рабочую машинку и создали устройство. Теперь – можно настроить “тестовый тест”, а потом попробовать запустить наши реальные тесты. Забегая наперёд – проблема была найдена, но решения не нашёл, потому пришлось костылить в Jenkins-джобе. Сама проблема на… Читать далее »