Подготовка к Jenkins сертификации CJE и CCJE
Что такое CJE и CCJE
Что такое сертификация я думаю не нужно объяснять, прежде всего сертификация выделяет Вас из толпы претендентов на вакантную позицию, Cloudbees предлагает два сертификата на выбор это:
Certified Jenkins Engineer (for proficiency with Jenkins)
Certified CloudBees Jenkins Engineer (for proficiency with CloudBees Core)
Для того чтобы понять какая сертификация нужно Вам можно перейти по ссылкам
- Certified Jenkins Engineer (CJE) 2018 Study Guide
- Certified CloudBees Jenkins Engineer (CCJE) 2018 Study Guide
Что это будет
На данной страницы я буду добавлять информацию какие темы надо знать и какими понятиями нужно оперировать для сдачи сертификации, так же будет страничка полезна(надеюсь) как не большая шпаргалка
Оглавление
CI/CD и Jenkins
Что такое continuous integration, continuous delivery, continuous deployment
Continuous integration
CI или Continuous integration - практика разработки програмного обеспечения которая заключается в непрерывной слиянии рабочих веток и основной, во время слияния должны произходит тестирование на предмет совместимости, проверка безопасности или любые другие тесты, которые могут помочь на раних стадиях отловить ошибки и потенцияльные баги. CI позволяет сгладить самый сложный этап в разработки, когда разные команды сливают свой код в релизную ветку и начинается стадия интеграций с системами. Переход к CI позволяет засчет раннего обноружении ошибки снизить цену ее исправления, снижение рисков как бизнес так и безопасности
CD или Continuous delivery - это набор практик, направленных на то, чтобы обновления программного обеспечения происходили постоянно и не прерывно. Данные методы гарантируют быстрое развёртывание на продакшене не меняя существующий функционал. Непрерывная доставка осуществима благодаря различным оптимизациям на ранних этапах процесса разработки. Говоря проще, каждая сборка это может быть развернута в любой момент времени
Continuous deployment часто путают с continuous delivery, хотя между ними существуют чёткие различия, которые следует знать и понимать.
Как выше было уже сказано непрерывная доставка обеспечивает постоянный выпуск обновлений. А непрерывное развёртывание отвечает за то, чтобы весь новый функционал после тестирования сразу же попал в основную среду без вмешательства из вне и ручных действий.
CI практика
- Один репозиторий для исходного кода
- Автоматические сборки
- Каждая сборка должна тестироваться
- Каждый разработчик должен комитить изменения ежедневно
- Каждый коммит должен запускать сборку
- Каждая проваленая сборка должна быть исправлена незамедлительно
- Сборка каждого коммита должна проходить как можно быстрее
- Каждое изменение должно быть протестировано
CD практика
- Check out
- Build and unit tests
- Automated acceptance tests
- User acceptance test
- Release
В чем разница между CI и CD
- CI не требует разворачивание в какой-либо среде
Стадии CI и CD
- Коммит в систему контроля версия запускает “сборку” которая в себя включает unit tests
- Запуск тестов направленных на UI тестирова, тестирование безопасности и других
- Завершающая стадия развертывание на какой-либо из сред
Jenkins jobs
Что такое jobs в Jenkins?
Jobs/Project в Jenkins спецализированные задачи для работы с исходном кодом при реализации концепции CI/CD
Какие типа бывают?
- Freestyle project
- Maven project
- Pipeline И многие другие
Это основыные типа, так же могут быть и будут другие типы, в зависимости от версии Jenkins или от наборов плагинов установленных в конкретной инсталяции Jenkins
Freestyle project
Задача со свободной конфигурацией - это работа общего назначения, которая обеспечивает максимальную гибкость. Вы можете создать проект в Jenkins, комбинируя любой SCM с любой системой сборки, и это может даже использоваться для чего-то другого, кроме сборки программного обеспечения. Так же такой тип самый простой и примитивный, с минимальный порогом вхождения
Maven project
Как видно из названия сборка maven проекта, данный тип сокращает количество настроек для сборки и настройки.
Pipeline
Jenkins Pipeline (или просто “Pipeline” с большой буквы “P”) представляет собой набор плагинов, которые помогат в реализации CI/CD концепции в Jenkins. Pipeline предоставляет расширяемый набор инструментов для создания CI/CD процессов любой сложности с помощью синтаксиса DSL (Pipeline domain-specific language (DSL)). Pipeline Jenkins могут из себя представлять текстовый файл Jenkinsfile либо обычный скрипт который можно править непосредственно в веб интерфейсе Jenkins.
Сборки в Jenkins
Сборка или build в Jenkins это результат выполнении задачи или проекта
Что такое стадии сборки, триггеры, артифакты, репозитории?
- Стадии сборки(Build step) – единица операции в ходе выполнения задачи
- Триггеры(Triggers) – Механизм запуска задачи, как от внешнего источника так и по расписани, внешним источником можно считать хук отправленный из система контроля версий
- Artifact – результат сборки
- Repository – репозиторий в системе контроля версий, который содержит исходный код
Jenkins changelogs
В разрезе Jenkins это изменения, которые были сделаны в системе контроля версий на момент запуска задачи по сборке
Distributed Builds
Что такое distributed builds?
- Запус задачи на сервере отличном от Jenkins master, в качестве сервера могут выступать как физические сервера, так и виртуальные машины или docker
Типы
- Master – Основной, ведущий сервер, доступен сразу после установки Jenkins
- Slaves – виртуальные машины/физические сервера/облачные провадеры/docker для ваыполнения сборок
Plugins. Что такое plugins?
- Любой плагин направлен на функциональное расширение возможностей Jenkins, такие дополнения значительно разширяют возможности Jenkins
Управление плагинами?
- Для управления плагинами, Jenkins предоставляет веб интерфейс под названием pluginManager, с его помощью вы можете управлять плагинами, установкой, удалением, обновлением
Fingerprints
- MD5 checksum файлов
Как работает Fingerprints
- При первом запуски задачи на сборку, Jenkins сгенерирует fingerprint.
- На основании fingerprint вы можете выгрудать артифакты и проверять на основе fingerprint совпадение контрольных сумм.