Penyorotan sintaks Jenkinsfile dalam proyek Java menggunakan Intellij Idea

102

Kami sudah mencoba pendekatan seperti yang tercantum di bawah ini:

Setelah menelusuri web selama berjam-jam dalam beberapa hari, kami masih belum menemukan sumber daya yang berguna tentang masalah ini. Jadi, tampaknya masuk akal untuk mengajukan pertanyaan baru di sini.

Kami sedang mengembangkan proyek Java kami dengan ide IntelliJ dan ingin mengintegrasikan build kami dengan Jenkins. Saat kami membuat Jenkinsfile di Idea, kami tidak mendapatkan penyorotan sintaks atau penyelesaian otomatis. Karena kami baru mengenal Jenkins, fitur-fitur itu akan sangat berguna bagi kami. Bagaimana kita bisa membuat Idea lebih mendukung dengan Jenkinsfiles?

Jika tidak ada cara untuk mendapatkan penyorotan sintaks dan penyelesaian otomatis untuk Jenkinsfile dalam ide, editor lain apa yang akan membantu?

Tolong dicatat:

  • kami bekerja dengan proyek java, bukan proyek keren.
  • Kami sudah mencoba plugin https://github.com/oliverlockwood/jenkinsfile-idea-plugin . Saat plugin diaktifkan, Jenkinsfile dikenali, tetapi alih-alih menyoroti sintaks kami mendapatkan pesan kesalahan, silakan lihat di bawah.

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

    Ide menyoroti 'p' dari 'pipeline' sebagai kesalahan. Pesan kesalahan tersebut berbunyi:

    JenkinsTokenType.COMMENT, JenkinsTokenType.CRLF atau JenkinsTokenType.STEP_KEY diharapkan, dapatkan 'p'

Terima kasih atas bantuannya!

rexford
sumber
@ y.bedrov terima kasih atas komentar Anda. Kami sudah mencoba plugin yang disebutkan, tetapi hanya mendapat pesan kesalahan, tetapi tidak ada penyorotan sintaks atau penyelesaian otomatis. Apa pengalaman Anda dengan plugin, apakah ini berhasil untuk Anda?
rexford
1
Saya tidak tahu mengapa Anda membutuhkan plugin untuk hal-hal dasar ini. Cukup tambahkan "Jenkinsfile" sebagai jenis file untuk Groovy (Pengaturan> Editor> Jenis File> Groovy dan tambahkan "Jenkinsfile" sebagai "Pola Terdaftar"). Apa yang hilang setelah penyiapan itu?
Tom
1
@Tom terima kasih! Sebenarnya, komentar Anda adalah tentang apa yang kami cari. Harap berikan informasi ini sebagai jawaban, dan saya akan menerimanya sebagai jawaban yang benar / paling membantu.
rexford
2
@ Tom Apa yang hilang adalah pelengkapan otomatis dan validasi Jenkins DSL yang sebenarnya
OrangeDog

Jawaban:

225

Jika Anda ingin IDEA mengenali Jenkinsfile sebagai file Groovy, Anda dapat menambahkan String "Jenkinsfile" sebagai pola nama file yang valid (biasanya berisi akhiran file) untuk file Groovy. Ini didukung "di luar kotak" tanpa memerlukan Plugin tambahan (kecuali Plugin "Groovy", tetapi itu sudah menjadi bagian dari IDEA).

Untuk melakukan itu pergi ke menu pengaturan, buka item "Editor" dan kemudian "Jenis File". Sekarang pilih "Groovy" di daftar atas dan tambahkan "Jenkinsfile". Anda juga dapat menggunakan regex seperti "Jenkinsfile *" jika Anda ingin lebih fleksibel terkait dengan file opsional yang diakhiri dengan Jenkinsfile.
Pengaturannya sekarang akan terlihat seperti ini: Pengaturan jenis file IDEA

Contoh Anda sekarang terlihat seperti ini di IDEA (dengan tema Drakula): Sorotan sintaks Jenkinsfile

Jadi IDEA sekarang menyediakan penyorotan sintaks dan penyelesaian otomatis sejauh yang saya tahu. Ini menyarankan nama fungsi / metode yang ada saat menulis, tetapi saya bukan pengembang Groovy, jadi saya tidak tahu apakah beberapa saran hilang.

Tom
sumber
6
Fitur yang diinginkan orang termasuk validasi / pelengkapan otomatis / quickdocs untuk GDSL dan integrasi linter . Sebuah plugin yang ideal akan membuat semuanya "bekerja" dengan konfigurasi minimal (misalnya, arahkan saja ke instance Jenkins).
OrangeDog
2
Sekadar catatan, tipe file groovy hanya tersedia di InteliJ dan Android studio, bukan di PyCharm 2018.3.2. Saya pikir karena plugin ini diperlukan plugins.jetbrains.com/plugin/1524-jetgroovy
Ming
Pertimbangkan juga untuk mendownload file gdsl dari instance Jenkins Anda di https: // <Jenkins> / job / <Job Name> / pipeline-syntax / gdsl dan meletakkannya ke classpath Groovy proyek Anda.
Stephan
1
Ini adalah ide yang bagus tetapi membutuhkan Groovy SDK untuk dikonfigurasi
owensmartin
1
Cemerlang! Terima kasih banyak! Saya dapat menetapkan kembali file Jenkinsfile.declarative kami dengan cara yang sama sehingga kami mendapatkan penyorotan sintaks dan penyelesaian kode. Bagi kami *.declarativeditugaskan ke jenis file Teks.
icfantv
1

Di bawah ini adalah umpan balik yang kami dapatkan dari IntelliJ . Kami akan menindaklanjuti ini jika kami dapat memberikan solusi yang berfungsi.

Andrey Dernov, IntelliJ, 14 Desember, 07:50 CET

Halo Georg, tidak ada dukungan Intellisense Editor khusus untuk mengedit Jenkinsfiles di IDE. Anda perlu menulis plugin bahasa kustom untuk ini.

Atau Anda dapat mempertimbangkan untuk mengimplementasikan dukungan tersebut melalui penulisan Kotlin DSL. Beberapa contoh untuk memulai.

rexford
sumber
1

Melihat kode sumber, sepertinya KOMENTAR tidak ditentukan (dikomentari di dalam kode)

STEP_KEY didefinisikan sebagai: STEP_NAME = "sh" | "paralel"

Saya tidak yakin plugin melakukan lebih banyak lagi dan belum diperbarui dalam 2 tahun.

Neil Millard
sumber
-1

Jika Anda menambahkan

#!groovy

header ke jenkinsfile Anda, maka Anda harus mendapatkan penyorotan sintaks yang asyik di IDE.

Kamil Wróbel
sumber
Dalam intellij itu tidak berfungsi dan jawaban ini terlalu kabur secara umum
Tomer Gal
-12

Gunakan shseperti ini dan kesalahan akan hilang (berhasil untuk saya) ...

steps {
    sh """
        echo 'Hello, World!'
    """
}
Josh M.
sumber