Рубрики
Uncategorized

Построить трубопровод Django CI / CD с помощью Jenkins

Я построил несколько проектов Django и развернул на серверах для тестирования на производстве, как среда. Сейчас был админдерный расход, который пришел с этим. В любое время я сделал изменение кода, я должен был …

Автор оригинала: Onyebuchi Valentine Ahiwe.

Я построил несколько проектов Django и развернул на серверах для тестирования на производстве, как среда. Сейчас был админдерный расход, который пришел с этим. В любое время я сделал изменение кода, мне пришлось подключиться к серверу, используйте элемент управления версией для обновления кода и перезапустить такие услуги, как Nginx и Gunicorn, чтобы мои изменения, чтобы задуматься о пределов. Теперь представьте себе делать это сто раз ( вытягивая волосы и кричащие в агонии ). К счастью, в прошлом году я узнал о DEVOPS и несколько хороших инструментов, которые поставляются с ним. ( Drumroll ) Представляем Jenkins, это инструмент CI/CD, который удаляет накладные расходы администратора, которые поставляются с повторяющимися задачами. Теперь давайте попробуем удалить этот администратор, я жаловался на ранее.

Предпосылки Вам понадобится VPS. Вы можете получить один на AWS или GCP. Я буду использовать AWS в этой статье. Вы можете обратиться к моему Статья о настройке VPS на AWS, а также настроить пространство подкачки для вашего VPS. При настройке групп безопасности сервера на AWS откройте следующие порты 22, 80 и 8080. Это позволит вам подключиться к Jenkins ui и веб-сайт образца, которые мы будем использовать. Мы будем использовать изображение CentOS 7 для этого развертывания. Убедитесь, что у вас есть обычный пользователь с привилегиями Sudo для выполнения всей установки и настройки. Вы можете обратиться к этой статье о том, как создать обычный пользователь.

Шаг 1: Установите Jenkins и дополнительные пакеты Мы будем использовать репозиторий, который я настроил со всеми необходимыми сценариями, а также трубопровод Jenkins. Этот проект был создан для случая использования в этой статье, но используя конфигурацию в этом репо, вы можете создать CI/CD для любого проекта. Пройдите через readme, чтобы понять работу в проекте. Вы можете проверить это здесь Отказ Откройте репозиторий и проверьте содержимое Intival-setup.sh. . Это поможет вам установить некоторые необходимые пакеты. Скопируйте содержимое файла на сервер.

$ vi initial-setup.sh

Сохраните и закройте файл. Запустите скрипт, чтобы установить пакеты.

$ chmod +x initial-setup.sh

$ ./initial-setup.sh

После того, как сценарий будет выполняться, посетите свои серверы Public IP-адрес на порту 8080, чтобы просмотреть панель инструментов Jenkins ( HTTP://IP вашего сервера>: 8080 ). Вы увидите экран, похожий на один ниже.

1 * iz6gjbnwydhvkeagpujffg.png.

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

$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword

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

1 * eo8fimnrsjjil1_p7knxqq.png.

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

1 * yscz2o-7hhzlie0mttptgq.png

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

1 * mhx5vzhqwaal_wozmgsieg.png.

Шаг 2: Отключить конфигурацию SELinux и Extra Jenkins SELinux определяет контроль доступа для приложений, процессов и файлов в системе. Он использует политики безопасности, которые являются набором правил, которые показывают SELinux, что может или не может быть доступно, чтобы обеспечить доступ к доступу, разрешенным политикой. Но при попытке отлаживать проблемы с разрешениями, это может иметь смысл временно отключить SELinux. В этом случае вы можете выбрать в режиме допустимого режима SELinux, либо для всей системы, либо для конкретного (набора) типов или отключить его. Запустите эту команду, чтобы проверить состояние SELINUX:

$ sestatus

Если он включен и установлен в режим исполнения, то мы изменим его в разрешительный режим. Nginx может не получить доступ к файлу сокета, если эти инструкции не выполняются. Откройте файл конфигурации SELinux:

$ sudo vi /etc/selinux/config

Изменение принудительно к разрешению

// Remove
SELINUX=enforcing

// Replace with 
SELINUX=permissive

Сохраните и закройте файл. Мы предназначены для перезагрузки сервера для изменения в силу, но до того, как давайте сделаем некоторые конфигурации Jenkins для простоты использования. Использование Jenkins на Centos — это хлопот. Одной из причин является то, что пользователь Jenkins устанавливается как Сервисная учетная запись вместо учетной записи пользователя . Это предотвращает пользователю Jenkins наличие суперпользовательских привилегий. Это отличается на Ubuntu, где пользователь Jenkins является учетной записью пользователя, и я могу предоставить привилегии пользователя Sudo с помощью Visudo Отказ Для вашей работы будет работать гладко на CentOS, вы должны переключать пользователь, выполняющий задания от Jenkins пользователю с привилегией Sudo. Я буду переключаться на CentOS пользователя. Откройте этот скрипт (используя VI или другой редактор):

$ sudo vi /etc/sysconfig/jenkins

Найдите эту строку и перейдите на «CentOS» или любой пользователь, который вы предпочитаете:

$JENKINS_USER="centos"

Затем измените право собственности Дженкинс Дом, Webroot and Logs:

$ sudo chown -R centos:centos /var/lib/jenkins 

$ sudo chown -R centos:centos /var/cache/jenkins

$ sudo chown -R centos:centos /var/log/jenkins

Перезапустите Jenkins и проверьте, что пользователь был изменен:

$ sudo /etc/init.d/jenkins restart 

$ ps -ef | grep jenkins

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

$ sudo shutdown now -r

Подсоедините обратно в свой экземпляр и проверьте состояние SELINUX:

$ sestatus

Если он изменился на разрешительность, то вы хотите пойти.

Шаг 3: Настройка трубопровода Jenkins Мы почти готовы настроить трубопровод Дженкинса. Мы должны сделать немного домашнего хозяйства. Войдите в панель инструментов Jenkins.

1 * mhx5vzhqwaal_wozmgsieg.png.

На левой боковой панели нажмите на управление Jenkins. Это открывает панель управления Дженкинсом. Нажмите на «Настроить глобальную безопасность». Прокрутите вниз и включите «включить совместимость прокси» на «защите CSRF». Применить и сохранить.

1 * hdjzblw0sffgx6fmj0rpzw.png.

Теперь мы можем настроить трубопровод Дженкинса. Перейдите в Дженкинс домой и нажмите на новый предмет. Введите имя и выберите Трубопровод:

1 * evnvfiljkjrut3wyzic4uq.png.

Перейдите на следующую страницу. Прокрутите вниз, переключите определение трубопровода на «скрипт трубопровода от SCM», выберите Git в качестве SCM и введите URL-адрес вашего репозитория.

1 * ydmrelkvfvjmn63ifuyaea.png.

Добавьте триггер к трубопроводу, чтобы перезапустить, когда появится новый коммит. Это то, что обновляет код изменения в вашем приложении автоматически без вас вручную запускаю команды. Вы можете добавить несколько триггеров, таких как работает в разное время дня. Триггеры используют формат строки работы Linux Cron. Вы можете прочитать больше об этом здесь Отказ

1 * bfmnipwjnasqzfd3hca83w.png.

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

1 * _Z9OR1TGGOI-ZYCWD3CXAQ.PNG

Трубопровод успешно побежал. Хотя это не гарантирует, что все в порядке. Вы можете проверить журналы этапов в трубопроводе, чтобы убедиться, что все работает.

1 * dolb1wiphcmuhahwzahuca.png.
1 * 3U2A6TPTXNG9HZH2QZVSZG.PNG.

После проверки журналов всех этапов выглядит все, что все прошло нормально. Теперь я могу посетить веб-страницу с помощью IP-адреса сервера.

1 * r6e9tjw9gnnwkterxcqt-g.png

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

Поздравляю!!! Мы смогли устранить накладные расходы администратора, которые поставляются с тестированием вашего проекта Django в области производства, как среда. Это позволит вам внести изменения и увидеть эффекты практически сразу. Удачи!!!

Ссылки ссылок:

  1. https://medium.com/fusiontec/how-to-run-jenkins-using-the-root-user-in-linux-centos-79d96749ca5a
  2. https://stackoverflow.com/questions/17940612/authentication-error-in-jenkins-on-using-sudo

Оригинал: «https://www.codementor.io/@vahiwe/build-a-django-ci-cd-pipeline-using-jenkins-1avemkw6hq»