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

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

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

Проблема

После рестарта через systemctl – “Шеф, усё пропало!

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

[simterm]

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

[/simterm]

И Compose файл:

[simterm]

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"

[/simterm]

Первым, что заметил – перестала работать авторизация, постоянно писало 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, т.е. – в запущенном контейнере.

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

[simterm]

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

[/simterm]

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

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

Решение

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

[simterm]

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

[/simterm]

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

Выводы

Вывод?

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

В общем – “Пятница удалась” (с) 🙂