Поиск по сайту:

Как установить Jenkins на CentOS и подключить его к GitHub


На этой странице

  1. Установка Дженкинса:
  2. Настройка параметров:
  3. Конфигурация Дженкинса:
    1. Установите подключаемые модули:
    2. Добавить учетные данные:

    Jenkins предоставляет широко используемые инструменты CI/CD с открытым исходным кодом. В этой статье мы узнаем, как установить Jenkins и настроить его с помощью Github для отправки файлов на сервер с помощью SSH.

    Установка Дженкинса:

    Jenkins — это приложение на основе JAVA, поэтому, прежде всего, нам нужно установить JAVA. Следующая команда установит JAVA на Centos 7.

    sudo yum install java-1.8.0-openjdk-devel

    Проверьте версию Java

    [ ~]# java -version
    openjdk version "1.8.0_212"
    OpenJDK Runtime Environment (build 1.8.0_212-b04)
    OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)

    Теперь настройте репозиторий Jenkins, используя следующие команды.

    curl --silent --location http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo | sudo tee /etc/yum.repos.d/jenkins.repo

    Это покажет следующие результаты.

    [jenkins]
    name=Jenkins-stable
    baseurl=http://pkg.jenkins.io/redhat-stable
    gpgcheck=1

    Затем выполните следующую команду, чтобы добавить ключ Jenkins.

    sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key

    Теперь мы настроили репозиторий Jenkins и готовы установить Jenkins, используя следующие простые команды.

    sudo yum install jenkins

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

    sudo systemctl start Jenkins
    sudo systemctl enable jenkins

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

    sudo systemctl enable jenkins

    Теперь разрешите Jenkins в брандмауэре.

    firewall-cmd --permanent --add-port=8080/tcp
    firewall-cmd --reload

    Настроить параметры:

    Мы не можем использовать Jenkins напрямую, нам нужно ввести доменное имя или IP-адрес в веб-браузере, а затем номер порта Jenkins по умолчанию 8080.

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

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

    Это даст вывод, например, 2179c452db3b45f98cf9e4c4961ab635.

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

    Заполните все данные и нажмите «Сохранить и продолжить».

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

    Теперь наши Jenkins сохранены и готовы к использованию.

    Поздравляем, новая установка Jenkins успешно завершена и готова к использованию.

    На следующем снимке экрана показана панель управления по умолчанию для Jenkins.

    Конфигурация Дженкинса:

    Установите плагины:

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

    Перейдите в раздел «Управление Jenkins» -> «Управление плагином» -> «Доступно» -> «Фильтровать» -> найдите следующий плагин, который необходим для интеграции с GitHub.

    Опубликовать через SSH
    Git
    плагин GitHub
    плагин клиента Git

    Здесь плагин Publish Over SSH необходим для передачи наших файлов на сервер через SSH.

    Добавьте учетные данные:

    Нам нужно добавить учетные данные сервера в Jenkins.

    Перейдите на панель инструментов Jenkins → учетные данные → система → Глобальные учетные данные (без ограничений) → Добавить учетные данные.

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

    ssh на сервере Дженкинс.

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

    Для этого нам нужно создать ssh-соединение между сервером Jenkins и удаленным сервером.

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

    Мы хотим подключиться к веб-серверу из Jenkins с пользователем root. Например, наш веб-сервер — 138.197.151.144 и пользователь root, поэтому нам нужно войти на этот сервер с помощью ssh.

    ssh 

    Теперь перейдите в домашний каталог и перейдите в папку .ssh.

    cd ~/.ssh

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

    ssh-keygen -t rsa -f private_key_for_jenkins

    После выполнения вышеуказанной команды будет запрошена \Введите кодовую фразу\, нам не нужно вводить кодовую фразу. Поэтому нажмите «Ввод» два раза, и он сгенерирует два ключа на веб-сервере: private_key_for_jenkins и private_key_for_jenkins.pub.

    Здесь private_key_for_jenkins — это закрытый ключ 138.197.151.144, и нам нужно использовать содержимое этого файла на нашем сервере Jenkins.

    У нас есть второй файл с именем private_key_for_jenkins.pub, который является открытым ключом веб-сервера. Нам нужно скопировать его данные в другой файл с именем authorized_keys, расположенный в том же каталоге.

    В большинстве случаев файлы authorized_keys присутствуют в папке ~/.ssh/, но иногда они отсутствуют, и нам нужно сгенерировать новые файлы authorized_keys. Просто запустите следующую команду, чтобы скопировать ее в authorised_keys, эта команда также генерирует новые авторизованные_ключи, если она доступна.

    cat private_key_for_jenkins.pub > authorized_keys

    Теперь войдите на сервер Jenkins, затем перейдите в «Управление Jenkins» -> «Настроить системы».

    В качестве альтернативы мы можем напрямую написать http://ip_address:8080/configure в веб-браузере, это откроет Configure Systems для конфигураций ssh.

    Теперь найдите раздел Сервер SSH-серверов в разделе «Настройка Jenkins». Обратите внимание, что этот раздел доступен только в том случае, если на сервере Jenkins установлен плагин SSH Credential Plugin.

    Перейдите в раздел «Публикация через SSH», перейдите к ключу и вставьте содержимое private_key_for_jenkins.

    Теперь в опции «SSH-серверы» нажмите кнопку «Добавить» и введите данные SSH-сервера. Мы можем изменить порт ssh и другие параметры в разделе «Дополнительно».

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

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

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

    Наконец, нажмите кнопку «Сохранить» и сохраните наши изменения. Мы успешно создали ssh-соединение с удаленным сервером. Теперь мы можем отправить файл на удаленный сервер, а также можем выполнить любую команду или скрипт на этом сервере.

    Конфигурация Дженкинса с Github

    Для автоматизации сборок, запускаемых запросами PUSH и PULL, Jenkins WebHook необходимо добавить в каждый репозиторий GitHub или веб-перехватчики организации.

    Шаги по настройке веб-хука из репозитория Github.

    1. Войдите в свои учетные записи GitHub.

    2. Кликаем по репозиторию, на который нам нужно установить вебхук

    3. перейдите к параметрам настроек для этого репозитория

    4. Нажмите Webhooks и добавьте URL-адрес полезной нагрузки. Он выглядит как http://jenkins_ip:8080/github-webhook/.

    5. Выберите «application/json» в качестве типа кодировки из «Тип контента».

    6. Оставьте «Секрет» пустым (если секрет не был создан и настроен в разделе Jenkins «Настроить систему -> Плагин GitHub»)

    7. Выберите \Позвольте мне выбрать отдельные события\

    8. Включите событие PUSH и Pull Request.

    9. Убедитесь, что установлен флажок «Активно».

    10. Наконец, нажмите кнопку «Добавить веб-перехватчик».

    Подробности смотрите на скриншоте ниже.

    Jenkins теперь будет получать уведомления о запросах push и pull для этого репозитория, а соответствующие сборки будут запускаться автоматически.

    Создание первой работы на Jenkins

    Теперь перейдите на панель инструментов Jenkins, выберите «Новый элемент», затем введите имя элемента, выберите «Проект Freestyle».

    После нажатия на ОК вы будете перенаправлены в раздел настройки.

    Сейчас мы находимся на вкладке «Общие», как показано на скриншоте ниже. В общем, на вкладке дайте описание проекта и нажмите на проект Github. Здесь введите наш URL-адрес GitHub для проекта.

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

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

    Затем перейдите в «Ветки» для сборки и выберите ветку */master, мы можем добавить любую ветку в соответствии с требованиями нашего проекта.

    Теперь перейдите на вкладку Триггер сборки и выберите триггер ловушки Github для параметра опроса GITScm. Это будет
    автоматически создаваться всякий раз, когда мы вносим какие-либо изменения в репозиторий GitHub.

    Теперь перейдите к сборке среды и выберите «Отправить файлы или выполнить команды через SSH» после запуска сборки.

    Это отправит файлы на удаленный сервер после запуска сборки.

    Перейдите к SSH Publishers --> SSH Server --> выберите имя сервера в раскрывающемся меню.

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

    Теперь нам нужно добавить, какой файл мы хотим скопировать по ssh. Здесь мы выбираем все папки и файл нашего репозитория GitHub. Для добавления файлов и выбора папки просто добавьте **/* в исходные файлы.

    Аналогичным образом мы можем указать любую команду в текстовом поле Exec command, которая будет выполняться на нашем удаленном сервере.

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

    Издатели SSH --> Передачи --> Набор передач --> Исходные файлы --> добавить **/*

    Издатели SSH --> Передачи --> Набор переносов --> Удаленный каталог --> /jenkins-test

    Издатели SSH --> Передачи --> Набор передач --> Команда Exec --> команда

    По умолчанию Jenkins исключает определенные файлы, такие как .git .svn .gitignore и т. д. Здесь мы хотим скопировать все файлы на удаленный сервер. Для этого нажмите кнопку «Дополнительно» чуть ниже команды «Выполнить» и установите флажок «Нет исключений по умолчанию».

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

    Тест сборки

    Пришло время протестировать нашу конфигурацию.

    Перейдите на панель инструментов Jenkins и нажмите на наш проект Jenkins-test.

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

    Давайте проверим наш процесс сборки, просто нажмите на номер сборки, как показано на скриншоте.

    Теперь нажмите Консольный вывод. Здесь мы можем видеть каждый процесс в подробном режиме.

    Наконец, мы увидим строку \Finished: SUCCESS\ в конце вывода консоли.

    Поздравляем! наш Jenkins успешно интегрирован с GitHub и готов к использованию.