Jenkins: jenkins.model.RunIdMigrator doMigrate WARNING: found unexpected dir lastSuccessfulBuil

Автор: | 03/15/2019
 

Имеется Jenkins, запущен в Docker-контейнере.

Проблема

После рестарта через systemctl — «Шеф, усё пропало!»

Сам сервис выглядит так:

root@jenkins-production:/opt/jenkins# systemctl cat jenkins
/etc/systemd/system/jenkins.service
[Unit]
Description=Jenkins service
Requires=docker.service
After=docker.service
[Service]
Restart=always
WorkingDirectory=/opt/jenkins
Compose up
ExecStart=/usr/local/bin/docker-compose -f jenkins-compose.yml up
Compose down, remove containers and volumes
ExecStop=/usr/local/bin/docker-compose -f jenkins-compose.yml down -v
[Install]
WantedBy=multi-user.target

И Compose файл:

root@jenkins-production:/opt/jenkins# cat /opt/jenkins/jenkins-compose.yml
version: '3'
networks:
jenkins:
services:
jenkins:
user: jenkins
user: root
image: jenkins/jenkins:lts
restart: always
networks:
- jenkins
ports:
- '8080:8080'
- '50000:50000'
volumes:
- /data/jenkins:/var/lib/jenkins
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
- /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7
environment:
- JENKINS_HOME=/var/lib/jenkins
- JAVA_OPTS=-Duser.timezone=Europe/Kiev
logging:
driver: "journald"

Первым, что заметил — перестала работать авторизация, постоянно писало Login failed.

Далее в логах контейнера — сообщения вида:

Mar 15, 2019 4:31:03 PM org.jenkinsci.plugins.ghprb.GhprbRepository createHook
SEVERE: Could not create web hook for repository project-dev/project-iOS. Does the user (from global configuration) have admin rights to the repository?

Пятница.

Вечер.

CI лежит, вся работа всех девелоперов — стоит.

Жопа(

Окей…

Утром делал апгрейд — наверно, что-то поломалось…

Подключаю диск с бекапом, монтирую его в контейнер вместо нынешнего — нет… Та же ерунда…

Потом обратил внимание на сообщения вида:

INFO: Migrating build records in /var/lib/jenkins/jobs/iOS Project/jobs/Unit Test/builds
Mar 15, 2019 4:31:05 PM jenkins.model.RunIdMigrator doMigrate
WARNING: found unexpected dir lastSuccessfulBuild

Что за миграции?

Откуда?

Причины

И тут до меня начало доходить — дело в версии самого Jenkins. С плагинами, которые в бекапах и на «боевом» диске — всё нормально.

Итак: Jenkins обновлялся через его UI, т.е. — в запущенном контейнере.

А под вечер — я сделал рестарт через:

root@jenkins-production:/opt/jenkins# systemctl restart jenkins

И что произошло?

А произошло то, что подтянулся Docker-образ с хоста, в котором лежала совсем древняя версия, т.к. образ я не обновлял уже несколько месяцев.

Решение

А потому — делаем:

root@jenkins-production:/opt/jenkins# docker-compose -f jenkins-compose.yml pull

Перезапускаем контейнер ещё раз — и всё заработало.

Выводы

Вывод?

Надо или автоматизировать обновление образа, или добавить какую-то нотификацию о том, что доступна новая версия jenkins/jenkins:lts, или использовать не jenkins/jenkins:lts, а использовать конкретный тег, например — 2.164.1.

В общем — «Пятница удалась» (с) 🙂