Выделение синтаксиса Jenkinsfile в проекте Java с использованием Intellij Idea

Мы уже пробовали подходы, перечисленные ниже:

После многократного поиска в Интернете в течение нескольких дней мы все еще не нашли полезного ресурса по этому вопросу. Таким образом, представляется целесообразным задать здесь новый вопрос.

Мы разрабатываем наши Java-проекты в идее IntelliJ и хотим интегрировать наши сборки с Jenkins. Когда мы создаем Jenkinsfile в Idea, мы не получаем подсветку синтаксиса или автоматическое завершение. Поскольку мы новичок в Jenkins, эти функции были бы действительно полезны для нас. Как мы можем сделать идею более благоприятной с Jenkinsfiles?

Если нет способа получить подсветку синтаксиса и автоматическое завершение для идеи Jenkins в идее, какие другие редакторы были бы полезны?

Обратите внимание:

  • мы работаем с java-проектами, а не с проектами groovy.
  • Мы уже пробовали плагин https://github.com/oliverlockwood/jenkinsfile-idea-plugin. Когда плагин активирован, файл Jenkins распознается как таковой, но вместо подсветки синтаксиса мы получаем сообщение об ошибке, см. Ниже.

    pipeline {
    agent { docker 'maven:3.3.3' }
    stages {
        stage('build') {
            steps {
                sh 'echo Hello, World!'
            }
        }
      }
    }
    

    Идея выделяет "p" "конвейера" как ошибку. Сообщение об ошибке:

    JenkinsTokenType.COMMENT, JenkinsTokenType.CRLF или JenkinsTokenType.STEP_KEY ожидается, получил 'p'

Спасибо за любую помощь!

Ответ 1

Если вы хотите, чтобы IDEA распознал Jenkinsfile как файл Groovy, вы можете добавить String "Jenkinsfile" в качестве допустимого шаблона имени файла (обычно содержит окончание файла) для Groovy файлов. Это поддерживается "из коробки", не требуя дополнительного плагина (кроме плагина "Groovy", но это уже часть IDEA).

Для этого перейдите в меню настроек, откройте пункт "Редактор", а затем "Типы файлов". Теперь выберите "Groovy" в верхнем списке и добавьте "Jenkinsfile". Вы также можете использовать регулярное выражение типа "Jenkinsfile *", если вы хотите быть более гибким относительно дополнительного файла, заканчивающегося для файла Jenkins.
Теперь настройка должна выглядеть так: Параметры типа файла IDEA

Ваш пример теперь выглядит так в IDEA (с темой Dracula): подсветка синтаксиса Jenkinsfile

Таким образом, IDEA теперь предоставляет подсветку синтаксиса и автоматическое завершение, насколько я могу судить. Он предлагает существующие имена функций/методов во время записи, но я не разработчик Groovy, поэтому я не могу сказать, отсутствуют ли какие-либо предложения.

Ответ 2

Глядя на исходный код, похоже, что комментарии не определены (они закомментированы в коде)

STEP_KEY определяется как: STEP_NAME = "sh" | "параллельно"

Я не уверен, что плагин делает намного больше, и он не обновлялся в течение 2 лет.

Ответ 3

Ниже приведена обратная связь, полученная от IntelliJ. Мы будем следить за этим, если мы сможем предоставить рабочее решение.

Андрей Дернов, IntelliJ, 14 дек, 07:50 CET

Привет, Георг, нет специальной поддержки редактора Intellisense для редактирования Jenkinsfiles в среде IDE. Для этого вам нужно написать настраиваемый языковой плагин.

Или вы можете рассмотреть возможность внедрения такой поддержки посредством написания DSL Kotlin. Некоторые примеры для начала.

Ответ 5

Используйте sh как это, и ошибка должна уйти (работал для меня)...

steps {
    sh """
        echo 'Hello, World!'
    """
}