Мы уже пробовали подходы, перечисленные ниже:
- https://github.com/oliverlockwood/jenkinsfile-idea-plugin
- https://st-g.de/2016/08/jenkins-pipeline-autocompletion-in-intellij
После многочасового поиска в Интернете в течение нескольких дней мы так и не нашли полезного ресурса по этому вопросу. Таким образом, имеет смысл задать здесь новый вопрос.
Мы разрабатываем наши Java-проекты на IntelliJ idea и хотим интегрировать наши сборки с Jenkins. Когда мы создаем Jenkinsfile в Idea, мы не получаем подсветки синтаксиса или автозавершения. Поскольку мы новички в Jenkins, эти функции были бы нам действительно полезны. Как мы можем сделать Idea более поддерживающей с помощью Jenkinsfiles?
Если нет возможности получить подсветку синтаксиса и автоматическое завершение для Jenkinsfile в идее, какие другие редакторы были бы полезны?
Пожалуйста, обратите внимание:
- мы работаем с java-проектами, а не с Groovy-проектами.
Мы уже пробовали плагин https://github.com/oliverlockwood/jenkinsfile-idea-plugin . Когда плагин активирован, Jenkinsfile распознается как таковой, но вместо выделения синтаксиса мы получаем сообщение об ошибке, см. Ниже.
pipeline { agent { docker 'maven:3.3.3' } stages { stage('build') { steps { sh 'echo Hello, World!' } } } }
Идея выделяет букву «p» в «pipeline» как ошибку. Сообщение об ошибке гласит:
Ожидается JenkinsTokenType.COMMENT, JenkinsTokenType.CRLF или JenkinsTokenType.STEP_KEY, получено 'p'
Спасибо за любую помощь!
Ответы:
Если вы хотите, чтобы IDEA распознавала Jenkinsfile как файл Groovy, вы можете добавить строку «Jenkinsfile» в качестве допустимого шаблона имени файла (обычно содержащего окончания файлов) для файлов Groovy. Это поддерживается «из коробки», не требуя никаких дополнительных подключаемых модулей (кроме подключаемого модуля «Groovy», который уже является частью IDEA).
Для этого зайдите в меню настроек, откройте пункт «Редактор», а затем «Типы файлов». Теперь выберите «Groovy» в верхнем списке и добавьте «Jenkinsfile». Вы также можете использовать регулярное выражение, такое как «Jenkinsfile *», если вы хотите быть более гибкими в отношении необязательного окончания файла для Jenkinsfile.
Теперь настройка должна выглядеть так:
Теперь ваш пример в IDEA (с темой Дракулы) выглядит так:
Итак, IDEA теперь обеспечивает подсветку синтаксиса и автоматическое завершение, насколько я могу судить. Он предлагает существующие имена функций / методов во время написания, но я не разработчик Groovy, поэтому я не могу сказать, отсутствуют ли какие-то предложения.
источник
*.declarative
был назначен тип файла Text.Другой вариант - использовать шабанг поверх Jenkinsfile вот так
#!/usr/bin/env groovy
. Также вы можете попробовать gdsl: https://st-g.de/2016/08/jenkins-pipeline-autocompletion-in-intellij, но пока он не поддерживает декларативные конвейеры: https: //issues.jenkins-ci .org / просмотреть / JENKINS-40127источник
Глядя на исходный код, похоже, что КОММЕНТАРИИ не определены (они закомментированы в коде)
STEP_KEY определяется как: STEP_NAME = "sh" | "параллельный"
Я не уверен, что плагин умеет намного больше, и он не обновлялся уже 2 года.
источник
Наконец-то мы нашли решение, которое работает для нас и обеспечивает подсветку синтаксиса и завершение кода для Jenkinsfile, присутствующего в обычном Java-проекте в Idea. Решение взято отсюда , здесь (и из дополнительных личных экспериментов / исследований)
Загрузите Groovy SDK (если вы еще этого не сделали) со страницы Groovy и настройте его в своем проекте Java. Для получения справки см. Здесь
Загрузите файл GDSL конвейера из вашего экземпляра Jenkins, который должен быть доступен по ссылке, например https: //yourJenkinsInstance.tld/pipeline-syntax/gdsl , и добавьте его в путь к классам вашего Java-проекта. Например, создав новую папку src / main / jenkins, поместив туда файл конвейера gdsl и пометив папку как исходный корень в IntelliJ Idea.
Добавьте Jenkinsfile в качестве допустимого шаблона имени файла для файлов Groovy, как описано здесь.
Чтобы избежать сообщения об ошибке
'node' cannot be applied to '(groovy.lang.Closure<java.lang.Object>)
, вы можете добавить эту строку вверху вашего Jenkinsfile:// noinspection GroovyAssignabilityCheck
источник
Если вы добавите
в ваш jenkinsfile, тогда вы должны получить отличную подсветку синтаксиса в IDE.
источник
Используйте
sh
это так, и ошибка должна исчезнуть (сработало для меня) ...steps { sh """ echo 'Hello, World!' """ }
источник