Skip to content
Exlogare
← Ко всем постам
Команда Exlogare Jenkins CI/CD shared library troubleshooting

Jenkins shared library: почему stack trace указывает на `vars/`, а не на Jenkinsfile

Как читать ошибки Jenkins Pipeline из shared library: `vars/`, `src/`, CPS stack trace, sandbox и что объяснять автору MR вместо пересылки raw console log.

В Jenkins Pipeline shared library помогает не копировать один и тот же Groovy между репозиториями. Но когда pipeline падает, stack trace часто указывает не на Jenkinsfile, а на файл в vars/ или src/ общей библиотеки.

Для автора MR это выглядит странно: «я поменял одну строку в приложении, почему ошибка в shared library?»

Коротко: что такое shared library

Shared library — общий Groovy-код для Jenkins Pipeline. Папка vars/ обычно содержит удобные pipeline steps вроде buildDockerImage(), а src/ — классы и вспомогательную логику. Jenkinsfile вызывает эти функции, но ошибка может произойти внутри библиотеки.

Почему stack trace путает

1. Ошибка в параметрах. Jenkinsfile передал null или неправильный map, а упало внутри vars/deploy.groovy.

2. Ошибка в самой библиотеке. Обновили shared library, и старый Jenkinsfile стал несовместим.

3. CPS stack trace шумит. Jenkins преобразует pipeline-код, поэтому trace содержит внутренние вызовы, которые не помогают новичку.

4. Sandbox блокирует метод. Ошибка выглядит как проблема кода, но причина в Script Security approvals.

5. Версия library не та. Репозиторий может использовать branch/tag библиотеки, отличный от ожидаемого.

Что смотреть

  • Какая версия shared library подключена.
  • Какая функция из vars/ вызвана в Jenkinsfile.
  • Какие параметры переданы.
  • Первая прикладная строка stack trace до внутренних Jenkins/CPS вызовов.
  • Есть ли sandbox/security approval errors.

Мини-пример

@Library('company-ci@v3') _

pipeline {
  stages {
    stage('Build') {
      steps {
        buildDockerImage(imageName: env.IMAGE_NAME)
      }
    }
  }
}

Если IMAGE_NAME пустой, stack trace может указывать на vars/buildDockerImage.groovy, но первичная причина — параметр из Jenkinsfile или окружения.

Где тут Exlogare

Raw Jenkins console log часто слишком шумный для автора MR. Exlogare может получить console output, найти прикладной фрагмент stack trace и вернуть короткий RCA: «shared library step получил пустой imageName; проверьте env/parameters». Подключение описано в Jenkins ingest.

Читайте также

Чеклист

  • Найдите версию shared library.
  • Отличите ошибку параметров от ошибки библиотеки.
  • Игнорируйте внутренний CPS-шум до первой полезной строки.
  • Проверьте sandbox approvals.
  • Дайте автору MR короткий RCA, а не весь console log.