Автономное развертывание руководства по ошибкам 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
YOLOv10 — истинное сквозное обнаружение целей в реальном времени (введение в принципы + детали кода + структурная блок-схема)
boy illustration
Учебное пособие для няни: использование исходного кода diffy для локального развертывания платформы разработки приложений LLM
boy illustration
Проблема со входом в Docker: невозможно подключиться к Docker Hub
boy illustration
Установите докер на виртуальной машине CentOS
boy illustration
Контейнерное путешествие программистов в облако в 2024 году. Эпизод 1: Пересечение границ
boy illustration
Инфраструктура как код (IaC): будущее автоматизированного управления инфраструктурой
boy illustration
Как создать онлайн-банк вопросов для тестов и помочь пользователям бесплатно формировать статьи и тесты.
boy illustration
Корпоративная практика Traefik: внедрение Traefik на производственном уровне
boy illustration
Каковы основные модели обслуживания облачных вычислений? Каковы их характеристики?
boy illustration
Дополнительные правила поощрения Роспотребнадзора на 22 марта
boy illustration
Анализ и лечение причин вирусов-вымогателей и майнинга на серверах
boy illustration
Hexo -26- Бесплатное ускорение CDN CloudFlare
boy illustration
Разница между традиционным хранилищем и объектным хранилищем
boy illustration
Использование хост-порта и хост-сети в Kubernetes
boy illustration
Учебное пособие о том, как создать частный сервер Palworld одним щелчком мыши
boy illustration
[Зона легкого облачного игрового сервера] Как продлить срок действия игрового сервера и вернуть деньги за него?
boy illustration
Исследование и практика реального бизнес-производства и применения GBI (генеративная бизнес-аналитика)
boy illustration
Перейти в облако государственных активов или облако по делам правительства? Безопасное облако зависит от оценки облака
boy illustration
Поговорим о ситуационной осведомленности с нуля
boy illustration
Внедрение промежуточного программного обеспечения универсального хранилища файлов через протокол S3.
boy illustration
Поймите управление продукцией в одной статье: от теоретических норм, практического применения до безопасности цепочки поставок.
boy illustration
Feiniu fnos использует Docker для развертывания учебника по iptv-источникам
boy illustration
RDMA — принцип проектирования подкачки по требованию ODP, преимущества и анализ исходного кода
boy illustration
Этот вычислительный кластер, выпущенный Goose Factory, может обучать большие модели с триллионами параметров за самые быстрые 4 дня.
boy illustration
[Техническая посадка] Дабл Одиннадцать! Приближается большая волна скидок на создание веб-сайтов, почему бы не прийти сюда, чтобы создать веб-сайт?
boy illustration
[Представление сообщества] Реализация шлюза k8s на основе Pingora, практика кода (1)
boy illustration
Стратегия создания веб-сайтов IIS на облачном сервере Сколько веб-сайтов может создать облачный сервер?
boy illustration
Cloud Native использует Docker для развертывания личной навигационной страницы на домашней странице.
boy illustration
Разработка приложения HarmonyOS | HarmonyOS Next-анализ всего процесса от разработки приложения до запуска
boy illustration
Поделитесь хорошим местом для загрузки оригинального iso-файла server2025 от Microsoft.