Автономное развертывание руководства по ошибкам Jenkins
Автономное развертывание руководства по ошибкам Jenkins

Автономное развертывание руководства по ошибкам Jenkins

Привет, я Вуконг.

Каталог этой статьи выглядит следующим образом:

1. Предыстория

Ранее я познакомил вас с тем, как развертывать Jenkins онлайн в системах Windows, как развертывать интерфейсные и внутренние проекты через Jenkins и как управлять разрешениями Jenkins.

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

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

2. Зависимости

При развертывании серверных проектов вам необходимо полагаться на Java, Maven и Git. Соответствующие версии автономного пакета показаны в таблице ниже.

серийный номер

Зависимости

Версия

1

Linux-сервер

Рекомендую Ubuntu 20 или выше

2

Пакет офлайн-войны Дженкинса

2.426.1(текущийдо настоящего времени Версия)

3

Автономный пакет Java, необходимый для развертывания серверной части.

Java 11, Java 17 or Java 21

4

Автономная установка Maven, необходимая для внутреннего развертывания.

Maven 3.8.8

5

Автономный пакет Git, получение кода

2.9.5(текущийдо настоящего времени Версия)

Что касается фронтенд-проекта «Автономное развертывание», я оставлю это на следующей лекции.

3. Загрузите установочный пакет Jenkins.

Путь к установочному пакету:

Язык кода:javascript
копировать
https://get.jenkins.io/war-stable/

выбирать Версия:2.426.1

После загрузки это военный пакет. Затем вы можете использовать Java для запуска военного пакета.

4. Установите Java

Загрузите установочный пакет Java 17.

Создать целевой каталог

Язык кода:javascript
копировать
sudo mkdir -p /usr/local/java

Скопируйте установочный пакет в целевой каталог.

Язык кода:javascript
копировать
sudo cp /path/to/jdk-17_linux-x64_bin.tar.gz /usr/local/java

Разархивируйте установочный пакет

Язык кода:javascript
копировать
cd /usr/local/java
sudo tar -xvzf jdk-17_linux-x64_bin.tar.gz

Удалить сжатый пакет

Язык кода:javascript
копировать
sudo rm jdk-17_linux-x64_bin.tar.gz

Настройка переменных среды

Язык кода:javascript
копировать
sudo vim /etc/profile

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin

Загрузить переменные среды

Язык кода:javascript
копировать
source /etc/profile

исследовать Java Версия

Язык кода:javascript
копировать
java -version

java Версия

5. Запустите Дженкинса

Существует два метода запуска:

  • прямой старт
  • Начните тихо в фоновом режиме

Запустите Дженкинс напрямую

Выполните команду запуска:

Язык кода:javascript
копировать
java -jar jenkins.war --httpPort=8082

Начните тихо в фоновом режиме

Выполните команду запуска:

Язык кода:javascript
копировать
nohup java -jar jenkins.war --httpPort=8082 >nohup.out 2>&1 &

Откройте сайт Дженкинса

Откройте сайт Дженкинса http://<тыизсерверip>:8082。

Если возникает исключение, подсказка выглядит следующим образом:

Язык кода:javascript
копировать
java.lang.RuntimeException: Fontconfig head is null, check your fonts or fonts configuration

решение:

Язык кода:javascript
копировать
Воля Установить java8 из fontconfig.bfc документ Копировать в jenkins Этот серверначальствоиз java lib в каталоге

fontconfig.bfc Пример пути: C:\Program Files\Java\jre1.8.0_191\lib\fontconfig.bfc

скопировать в /usr/local/java/lib/ Оглавление

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

Дженкинс работает в каталоге

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

Как показано на рисунке ниже, в каталоге /home/xxx/.jenkins.

Дженкинс работает в каталоге

В этом каталоге есть очень важный каталог: плагины. Мы можем скопировать в этот каталог некоторые плагины, чтобы Дженкинс мог запускать эти плагины.

6. Настройте maven

Адрес загрузки:

Язык кода:javascript
копировать
https://maven.apache.org/download.cgi

Разархивируйте папку:

Язык кода:javascript
копировать
cd /usr/local
tar -zvxf /usr/local/maven/apache-maven-3.8.8-bin.tar.gz
mv  apache-maven-3.8.8/* maven
sudo rm -rf apache-maven-3.8.8
sudo rm -rf /usr/local/maven/apache-maven-3.8.8-bin.tar.gz

Добавьте переменные среды:

Язык кода:javascript
копировать
 sudo vim /etc/profile

Информация о конфигурации:

Язык кода:javascript
копировать
export M2_HOME=/usr/local/maven
export MAVEN_HOME=/usr/local/maven
export PATH=${M2_HOME}/bin:${PATH}

Загрузить конфигурацию

Язык кода:javascript
копировать
 source /etc/profile

Проверьте, вступила ли в силу конфигурация maven:

Язык кода:javascript
копировать
mvn -version

7. Настройте Git

Загрузите установочный пакет

Язык кода:javascript
копировать
Путь к веб-сайту: https://mirrors.edge.kernel.org/pub/software/scm/git/

Скопируйте в этот каталог /usr/local/git/, если каталога git нет, создайте новый.

Язык кода:javascript
копировать
sudo mkdir -p /usr/local/git

Разархивируйте установочный пакет git

Язык кода:javascript
копировать
sudo tar -xvzf /usr/local/git/git-2.9.5.tar.gz -C /usr/local/git

скомпилировать git

Язык кода:javascript
копировать
cd /usr/local/git
./configure --prefix=/usr/local/git
make && make install

Подскажите, что нет компилятора gcc

решение:Оффлайн Установитьполагаться Сумка。

  • скачатьполагатьсяиз Инсталляционный пакет

Адрес загрузки:https://pkgs.org/search/?q=libnl-genl

  • Установитьполагатьсяиз Инсталляционный пакет
Язык кода:javascript
копировать
dpkg -i xxx.deb

Скомпилируйте еще раз, и появится сообщение об успешной компиляции.

Добавьте переменные среды git

Язык кода:javascript
копировать
export PATH=$PATH:/usr/local/git/bin
source /etc/profile

Проверять git Версия

Язык кода:javascript
копировать
git --version

8. Установите плагин Jenkins.

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

  • Способ 1: успешно загрузите плагин Offline Bag и импортируйте его в Jenkins За кулисами.
  • Способ 2: Пакетное копирование такое же, как версия. Jenkins существовать Проволока Установитьизплагин。

Способ 1. Загрузите плагин и импортируйте его.

Оба следующих сайта могут существовать в режиме загрузки плагина.

https://plugins.jenkins.io/

http://updates.jenkins-ci.org/download/plugins/

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

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

Язык кода:javascript
копировать
 - Plugin is missing: structs (308.v852b473a2b8c)
 - Plugin is missing: workflow-scm-step (2.13)
 - Plugin is missing: scm-api (595.vd5a_df5eb_0e39)
 - Plugin is missing: mailer (408.vd726a_1130320)
 - Plugin is missing: credentials (2.6.1)
 - Plugin is missing: git-client (3.11.0)
 - Plugin is missing: script-security (1131.v8b_b_5eda_c328e)
 - Plugin is missing: workflow-step-api (622.vb_8e7c15b_c95a_)
 - Plugin is missing: credentials-binding (1.27.1)
 - Plugin is missing: ssh-credentials (1.19)

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

Способ 2. Пакетное копирование установленных плагинов.

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

Каталог, в котором находится плагин, обычно находится здесь:

Язык кода:javascript
копировать
/home/<user>/.jenkins/plugins/

После копирования перезапустите Jenkins, и эти плагины будут установлены автоматически.

9. Настройте глобальные инструменты

Настройте параметры Maven

существовать Jenkins Управление серверной системой->глобальные инструменты Конфигурациясерединадобавить в Maven settings Конфигурация, как показано на рисунке ниже.

Путь — это путь к файлу настроек Maven: /usr/local/maven/conf/settings.xml.

Настройте установку Maven

существовать Jenkins Управление серверной системой->глобальные инструменты Конфигурациясерединадобавить в Maven Установить Конфигурация, как показано на рисунке ниже.

Путь — это путь установки Maven: /usr/local/maven/.

Настройка Java JDK

существовать Jenkins Управление серверной системой->глобальные инструменты Конфигурациясерединадобавить в Java Конфигурация, как показано ниже.

Путь — это путь установки Java: /usr/local/java/.

Конфигурация пути JDK

Настроить Git

существовать Jenkins Управление серверной системой->глобальные инструменты Конфигурациясерединадобавить в Git Конфигурация, как показано ниже:

Путь — это путь установки Java: /usr/bin/git.

10. Вопросы

Проблема 1. Поле ввода конвейера не отображается.

Средство отладки F12 может сообщать следующую информацию об ошибках:

Язык кода:javascript
копировать
jenkins workflow-editor.js Ajax is not defined ReferenceError: Ajax is not defined
причина

Есть проблема с плагином.

решение

Заменить всеплагиндокумент。Установитьто же самое Версияиз jenkins, and live line скачать плагин и удалить оригинал jenkins каталог плагина, а затем замените все файлы плагина.

Проблема 2. Команда bat не распознается

Язык кода:javascript
копировать
java.io.IOException: Batch scripts can only be run on Windows nodes
причина

текущий Jenkins развертыватьсуществовать Linux система, поэтому ее нельзя распознать bat Заказ. потому что bat Команда windows команды, используемые системой, в то время как sh Команда linux Команда, используемая системой.

решение

Измените биту на sh.

Вопрос 3. Для выполнения команды sudo необходим пароль

Язык кода:javascript
копировать
SSH: EXEC: STDOUT/STDERR from command [sudo docker service update --force job-executor] ...
SSH: EXEC: connected
sudo: no tty present and no askpass program specified
причина

Это вызвано тем, что учетная запись Jenkins не защищена паролем.

Решение

Даватьjenkinsдобавить в Использовать без пароляsudoиз Разрешения。

Язык кода:javascript
копировать
sudo vi /etc/sudoers

существоватьsudoersдокументсерединадобавить строку:

Язык кода:javascript
копировать
jenkins ALL=(ALL) NOPASSWD:ALL

Вопрос 4. Проблема с плагином RoleBasedAuthorizationStrategy

Сообщение об ошибке

Язык кода:javascript
копировать
 SEVERE  jenkins.InitReactorRunner$1#onTaskFailed: Failed Loading global config
com.thoughtworks.xstream.mapper.CannotResolveClassException: com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategy
причина

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

решение

Измените файл /home/xxx/.jenkins/config.

Язык кода:javascript
копировать
<authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy">
  <denyAnonymousReadAccess>true</denyAnonymousReadAccess>
</authorizationStrategy>

Вопрос 5. Необходимо обновить версию плагина

Язык кода:javascript
копировать
частьплагинпотому что Недостатокполагаться Не удалось загрузить。Чтобы восстановить этиплагинпоставлятьиз Функция,Этот вопрос необходимо исправить и перезапустить Дженкинса.
причина

Отсутствует плагин или неверная версия.

решение

Воляпереписыватьсяиз Версияизплагин xxx.jpi После скачивания существование загружается в фоновом режиме, а после завершения развертывания плагина установите флажок для перезагрузки. jenkins Служить.

Вопрос 6. Git извлекает код, подсказывает проблему с сертификатом

Сообщение об ошибке:

Язык кода:javascript
копировать
 server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile:
причина

Сертификат отсутствует.

решение

Пропустить проверку сертификата для Git.

Язык кода:javascript
копировать
git config --global http.sslVerify false

Вопрос 7. После настройки переменных среды не удается найти команду sudo

Сообщение об ошибке:

Язык кода:javascript
копировать
Command 'sudo' is available in '/usr/bin/sudo'
причина

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

решение

Используйте следующее Заказснова Открыть /etc/profile документ

Язык кода:javascript
копировать
/usr/bin/sudo /usr/bin/vim /etc/profile

Настройте следующие переменные среды перед другими переменными среды в профиле.

Язык кода:javascript
копировать
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Вопрос 8. Разница во времени в Дженкинсе составляет 8 часов.

решение

Войдите на страницу управления системой Jenkins.

Нажмите «Командная строка сценария».

Выполните следующую команду, чтобы установить часовой пояс по пекинскому времени:

Язык кода:javascript
копировать
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')

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

11. Резюме

Эта статья объясняетсуществовать Оффлайн Как насчет окружающей средыразвертывать Jenkins、Jenkins Плагины, Maven, Java, Git инструмент.

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

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose