Виділення синтаксису Jenkinsfile в проекті Java за допомогою Intellij Idea


101

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

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

Ми розробляємо наші проекти Java в ідеї IntelliJ і хочемо інтегрувати свої конструкції з Jenkins. Коли ми створюємо файл Jenkins у Idea, ми не отримуємо підсвічування синтаксису або автоматичне заповнення. Оскільки ми новачок у Дженнінкі, ці функції були б нам дуже корисні. Як ми можемо зробити Ідею більш прихильною для Jenkinsfiles?

Якщо немає можливості отримати виділення синтаксису та автоматичне заповнення для файлу Jenkins, які інші редактори були б корисними?

Будь ласка, запиши:

  • ми працюємо з Java-проектами, а не з груві-проектами.
  • Ми вже випробували плагін 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'

Дякуємо за будь-яку допомогу!


Є спеціальний плагін: plugins.jetbrains.com/plugin/10127-jenkinsfile-idea-plugin та запит на функцію: youtrack.jetbrains.com/issue/IDEA-158104
y.bedrov

@ y.bedrov дякую за ваш коментар. Ми вже спробували вказаний плагін, але отримали лише повідомлення про помилку, але не підсвічували синтаксис і не завершували автоматично. Який ваш досвід роботи з плагіном, чи працює він у вас?
Рексфорд,

1
Я не уявляю, навіщо вам потрібен плагін для цього базового матеріалу. Просто додайте "Jenkinsfile" як тип файлу для Groovy (Налаштування> Редактор> Типи файлів> Groovy та додайте "Jenkinsfile" як "Зареєстрований шаблон"). Що не вистачає після цієї установки?
Том,

1
@Tom спасибі! Власне, ваш коментар стосується того, що ми шукали. Будь ласка, надайте цю інформацію як відповідь, і я прийму її як правильну / найбільш корисну відповідь.
Рексфорд,

2
@Tom Чого не вистачає, це автозаповнення та перевірка фактичного DSL Дженкінса
OrangeDog

Відповіді:


224

Якщо ви хочете, щоб IDEA розпізнавала Jenkinsfile як файл Groovy, тоді ви можете додати рядок "Jenkinsfile" як дійсний шаблон імені файлу (як правило, містить закінчення файлу) для файлів Groovy. Це підтримується "поза коробкою", не вимагаючи додаткового плагіна (крім плагіну "Groovy", але це вже є частиною IDEA).

Для цього перейдіть до меню налаштувань, відкрийте пункт «Редактор», а потім «Типи файлів». Тепер виберіть "Groovy" у верхньому списку та додайте "Jenkinsfile". Ви також можете використовувати регулярний вираз, наприклад "Jenkinsfile *", якщо ви хочете бути більш гнучкими щодо необов'язкового файлу, що закінчується для Jenkinsfile.
Налаштування тепер має виглядати так: Налаштування типу файлу IDEA

Тепер ваш приклад виглядає так в IDEA (з темою Дракула): Виділення синтаксису Jenkinsfile

Отже, IDEA тепер забезпечує виділення синтаксису та автоматичне заповнення, наскільки я можу зрозуміти. Він пропонує існуючі назви функцій / методів під час написання, але я не розробник Groovy, тому я не можу сказати, чи відсутні якісь пропозиції.


6
Особливості, які люди хочуть, включають перевірку / автодоповнення / швидкі записи для GDSL та інтеграцію лінійки . Ідеальний плагін змусив би все "просто працювати" з мінімальною конфігурацією (наприклад, просто вказувати на екземпляр Дженкінса).
OrangeDog

2
Лише зауважте, типовий тип файлу доступний лише в студії InteliJ та Android, а не в PyCharm 2018.3.2. Я думаю, тому що цей плагін потрібен plugins.jetbrains.com/plugin/1524-jetgroovy
Ming

Також розгляньте можливість завантаження файлу gdsl з вашого екземпляра Jenkins за адресою https: // <Jenkins> / job / <Job Name> / pipeline-syntax / gdsl і помістіть їх у шлях до класу Groovy вашого проекту.
Стефан

1
Це гарна ідея, але для налаштування
пакету

1
Блискуче! TY так багато! Мені вдалося перевлаштувати наші файли Jenkinsfile.declarative таким же чином, щоб ми отримали як підсвічування синтаксису, так і завершення коду. Для нас *.declarativeбув призначений тип текстового файлу.
icfantv


1

Нижче наведено відгуки від IntelliJ . Ми будемо продовжувати цю роботу, якщо зможемо запропонувати робоче рішення.

Андрій Дернов, IntelliJ, 14 грудня, 07:50 CET

Привіт Георге, у редакторі IDE немає спеціальної підтримки для редагування Jenkinsfiles у редакторі Jenkinsfiles. Для цього вам потрібно буде написати власний мовний плагін.

Або ви можете розглянути можливість застосування такої підтримки, написавши DSL Kotlin. Кілька прикладів для початку.


1

Дивлячись на вихідний код, здається, КОМЕНТАРИ не визначені (вони коментуються в коді)

STEP_KEY визначається як: STEP_NAME = "sh" | "паралельний"

Я не впевнений, що плагін робить набагато більше, і він не оновлювався протягом 2 років.


-1

Якщо додати

#!groovy

заголовка до вашого jenkinsfile, тоді ви повинні отримати бурхливе підсвічування синтаксису в IDE.


У Intellij це не працює, і ця відповідь загалом занадто розпливчаста
Томер Гал,

-12

Використовуйте shтак, і помилка повинна піти (працював для мене) ...

steps {
    sh """
        echo 'Hello, World!'
    """
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.