Построение и развертывание приложения может быть сложной задачей. Почему бы не использовать Сборочную задачу Jenkins для автоматизации всего процесса? Вы сосредотачиваетесь на создании, пока Jenkins обрабатывает развертывание кода.
В этом руководстве вы узнаете, как автоматизировать развертывание своего кода с помощью Jenkins, чтобы экономить время и одновременно сосредотачиваться на других задачах.
Готовы? Погружаемся!
Предварительные требования
В этом руководстве представлены практические демонстрации. Если вы хотите следовать за нами, убедитесь, что у вас есть следующее:
- Система Ubuntu – В этом руководстве используется Ubuntu 20.04 для демонстраций
- A GitHub account
- OpenJDK версии 1.8.0_292
- Версия Jenkins 2.303.1
- Версия Node.js 14.17.6
- Форкните этот репозиторий GitHub – После форка обратите внимание на URL репозитория GitHub, так как вам это понадобится позже.
Хотя репозиторий, показанный на нижеприведенных скриншотах, немного отличается от связанного выше, после его форка вы будете использовать другой URL репозитория.
Создание задачи сборки в Jenkins
Jenkins – это сервер автоматизации с открытым исходным кодом, который помогает автоматизировать жизненный цикл разработки программного обеспечения. Этот жизненный цикл включает в себя сборку, тестирование и развертывание, что облегчает непрерывную интеграцию и непрерывную доставку.
В этом демо вы узнаете, как создать задачу сборки в Jenkins. Задача сборки обычно представляет собой конфигурацию для автономного выполнения задач по сборке/упаковке программного обеспечения.
- Запустите свой любимый браузер, перейдите по адресу http://localhost:8080/ и войдите в панель управления Jenkins. Порт
8080
– это порт по умолчанию для доступа к панели управления Jenkins.
2. На панели управления Jenkins’ Dashboard нажмите кнопку New Item в левой панели, чтобы начать создание задачи сборки. После этого браузер перенаправит вас на страницу новой задачи.

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

4. Нажмите на вкладку Общее и установите флажок Проект GitHub, чтобы связать менеджер исходного кода и сообщить Jenkins, откуда брать ваш код. В этом демо в качестве менеджера исходного кода используется Git для образца проекта, размещенного на GitHub, который вы ранее форкнули. Вставьте URL-адрес репозитория GitHub из вашего аккаунта GitHub в поле URL проекта ниже.

5. Наконец, нажмите на вкладку Управление исходным кодом, затем выберите Git, который является вашим менеджером исходного кода.
Скопируйте и вставьте этот URL-адрес репозитория GitHub (https://github.com/Claradev32/webDeploy.git) в поле ввода. Нажмите кнопку Сохранить, чтобы сохранить текущую конфигурацию.

Создание учетных данных для проекта Jenkins
Возможно, вы предпочитаете оставить ваш репозиторий закрытым, что часто бывает при проектах для клиентов. Если это так, вам нужно создать учетные данные, чтобы авторизовать Jenkins на клонирование вашего проекта с GitHub.
Для создания учетных данных для вашего проекта Jenkins сначала необходимо сгенерировать и добавить ключ SSH в ваш аккаунт GitHub:
1. Откройте терминал Ubuntu и запустите следующую команду, чтобы сгенерировать SSH-ключ с ed25519
в качестве типа ключа. Замените [email protected]
на свой адрес электронной почты GitHub, чтобы добавить его в качестве комментария к сгенерированному SSH-ключу.
2. Сохраните свой открытый SSH-ключ следующим образом:
- Укажите местоположение для сохранения SSH-ключа и нажмите Enter. Если вы этого не сделаете, команда сохранит SSH-ключ в каталоге по умолчанию, как показано ниже.
- Введите безопасную фразу для SSH-ключа, нажмите Enter, чтобы подтвердить фразу, и вы увидите вывод вашего открытого SSH-ключа.
- Запомните местоположение сгенерированного SSH-ключа, так как вы добавите его в свою учетную запись GitHub в следующих шагах.

3. Войдите в GitHub в своем веб-браузере и перейдите на страницу настроек вашей учетной записи.
4. Нажмите ссылку SSH и GPG ключи в левой панели, а затем нажмите New SSH Key, как показано ниже, чтобы настроить новый SSH-ключ.

5. Наконец, введите предпочтительное название для SSH-ключа. Название предназначено только для внутренней документации. Вставьте ваш SSH-ключ из ранее сохраненного файла в поле ввода Key, и нажмите Add SSH Key, чтобы сохранить ключ.
Помните, что это ваш открытый ключ, а не закрытый ключ!

Добавление закрытого ключа SSH в учетные данные Jenkins
Теперь, когда вы создали свою пару ключей SSH для использования в качестве учетных данных Jenkins, вам также необходимо добавить свой приватный ключ SSH в учетные данные Jenkins, чтобы авторизовать доступ Jenkins к вашему репозиторию GitHub. Но сначала обратите внимание на SSH-URL вашего репозитория GitHub.
1. Перейдите на страницу своего репозитория GitHub, нажмите на Код → SSH, и нажмите на иконку копирования, показанную ниже, чтобы скопировать SSH-URL в буфер обмена.

2. Затем перейдите на панель управления Jenkins, затем нажмите Управление Jenkins, чтобы получить доступ к странице настроек вашего проекта.

3. Прокрутите вниз, затем нажмите на опцию Управление учетными данными в разделе Безопасность, чтобы просмотреть список учетных данных Jenkins.

4. Нажмите Jenkins на странице Учетные данные, показанной ниже, чтобы получить доступ к странице “Система”, где вы можете добавить новые учетные данные.

5. Теперь, на странице Система, наведите указатель мыши на опцию Глобальные учетные данные (неограниченные), чтобы отобразить выпадающее меню, и нажмите на значок стрелки вниз.
Нажмите на Добавить учетные данные в выпадающем меню. Страница перенаправляется на форму, где вы будете настраивать новые учетные данные, показанные на следующем шаге.

6. Выберите SSH Имя пользователя с закрытым ключом на первом поле ввода и введите имя пользователя проекта в поле Имя пользователя. В этом примере имя пользователя – CI/CD.
В этом случае имя пользователя представляет собой чисто внутреннюю документацию и не используется для аутентификации.

7. Запустите команду ниже, чтобы просмотреть свой SSH-закрытый ключ, измените расположение в соответствии с тем, где находится ваш ключ, как показано ниже (ключ находится в домашнем каталоге). Запишите свой SSH-закрытый ключ, поскольку вы добавите его в учетные данные Jenkins на следующем этапе.

8. Как только вы записали свой SSH-закрытый ключ, вернитесь на страницу Глобальные учетные данные (неограниченные).
Введите пароль, который вы установили в разделе “Создание учетных данных для проекта Jenkins” (шаг два) в поле ввода Пароль и нажмите OK. Это авторизует Jenkins для доступа к вашему репозиторию GitHub.
Если вы не включили пароль при создании SSH-ключа, нажмите Ввести напрямую и нажмите кнопку Добавить. Введите свой SSH-закрытый ключ в поле ввода Ключ, как показано ниже, и нажмите кнопку OK, чтобы сохранить учетные данные.

8. Вернитесь на свою Главную панель Jenkins, наведите указатель мыши на свой проект и нажмите на стрелку вниз, затем выберите Настроить, как показано ниже. Страница перенаправляется на страницу конфигурации вашего проекта.

10. Наконец, выберите учетные данные пользователя в раскрывающемся поле (из шага шесть раздела “Добавление секретного ключа в учетные данные Jenkins”). Jenkins по умолчанию применяет принцип CID, чтобы обеспечить непрерывную интеграцию и развертывание вашего проекта.

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

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

Создаваемый вами оболочечный скрипт зависит от вашей среды разработки. Если вы используете Windows, скрипт будет выполняться в Windows; то же самое относится и к другим операционным системам.
3. Введите нижеприведенные команды оболочки и нажмите Сохранить, чтобы сохранить сценарий сборки. После сохранения изменений страница перенаправит вас обратно на панель управления вашего проекта.
Ниже приведены команды, которые извлекают (pull
) ваш код из удаленного источника (origin master
) и с помощью NodeJS NPM install (npm install
) устанавливают необходимые зависимости для запуска вашего проекта. Эти команды выполняются каждый раз, когда вы отправляете запрос на внесение изменений в свой менеджер исходного кода.
Данный проект использует NodeJS для зависимостей, но ваш проект может быть другим.

4. Теперь на панели управления вашего проекта нажмите Build Now, чтобы запустить сборку.

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

Если сборка не удалась, вы увидите отображенный ниже вывод.

6. Затем прокрутите вверх и нажмите на Configure, чтобы настроить действия после сборки проекта.

7. Нажмите на вкладку Post Build Actions, затем нажмите на Add post-build action и выберите Git publisher. Страница раскрывает раздел настроек Git Publisher (следующий шаг).

8. Наконец, включите опцию Push Only If Build Succeeds и нажмите кнопку Save, чтобы сохранить изменения. Включение этой опции сообщает Jenkins развертывать код только в случае успешного запуска сборки.

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