Đánh dấu cú pháp Jenkinsfile trong dự án Java bằng Intellij Idea


101

Chúng tôi đã thử các cách tiếp cận như được liệt kê bên dưới:

Sau khi đã tìm kiếm trên web trong nhiều giờ trong nhiều ngày, chúng tôi vẫn chưa tìm thấy nguồn hữu ích về vấn đề này. Vì vậy, có vẻ hợp lý khi đặt một câu hỏi mới ở đây.

Chúng tôi đang phát triển các dự án Java của mình theo ý tưởng IntelliJ và muốn tích hợp các bản dựng của chúng tôi với Jenkins. Khi chúng tôi tạo tệp Jenkins trong Idea, chúng tôi không nhận được đánh dấu cú pháp hoặc tự động hoàn thành. Vì chúng tôi mới sử dụng Jenkins, những tính năng đó sẽ thực sự hữu ích đối với chúng tôi. Làm cách nào để chúng tôi có thể khiến Idea được Jenkinsfiles ủng hộ nhiều hơn?

Nếu không có cách nào để có được đánh dấu cú pháp và tự động hoàn thành cho một tệp Jenkins trong ý tưởng, thì những trình chỉnh sửa nào khác sẽ hữu ích?

Xin lưu ý:

  • chúng tôi đang làm việc với các dự án java, không phải các dự án phức tạp.
  • Chúng tôi đã thử plugin https://github.com/oliverlockwood/jenkinsfile-idea-plugin . Khi plugin được kích hoạt, Jenkinsfile được nhận dạng như vậy, nhưng thay vì tô sáng cú pháp, chúng tôi nhận được thông báo lỗi, vui lòng xem bên dưới.

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

    Ý tưởng làm nổi bật 'p' của 'đường ống' là lỗi. Thông báo lỗi ghi:

    JenkinsTokenType.COMMENT, JenkinsTokenType.CRLF hoặc JenkinsTokenType.STEP_KEY dự kiến, có 'p'

Cảm ơn vì bất kì sự giúp đỡ!



@ y.bedrov cảm ơn bình luận của bạn. Chúng tôi đã thử plugin đã nêu nhưng chỉ nhận được thông báo lỗi, nhưng không có đánh dấu cú pháp hoặc tự động hoàn thành. Trải nghiệm của bạn với plugin là gì, nó có phù hợp với bạn không?
rexford

1
Tôi không biết tại sao bạn cần một plugin cho những thứ cơ bản này. Chỉ cần thêm "Jenkinsfile" làm loại tệp cho Groovy (Cài đặt> Trình chỉnh sửa> Loại tệp> Groovy và thêm "Jenkinsfile" làm "Mẫu đã đăng ký"). Điều gì còn thiếu sau khi thiết lập đó?
Tom,

1
@Tom cảm ơn! Trên thực tế, nhận xét của bạn là về những gì chúng tôi đang tìm kiếm. Vui lòng cung cấp thông tin này như một câu trả lời và tôi sẽ chấp nhận nó là câu trả lời đúng / hữu ích nhất.
rexford

2
@Tom Điều còn thiếu là tự động hoàn thành và xác thực Jenkins DSL thực tế
OrangeDog

Câu trả lời:


224

Nếu bạn muốn IDEA nhận ra tệp Jenkins là tệp Groovy, thì bạn có thể thêm Chuỗi "Jenkinsfile" làm mẫu tên tệp hợp lệ (thường chứa phần cuối tệp) cho tệp Groovy. Điều này được hỗ trợ "ngoài hộp" mà không yêu cầu bất kỳ Plugin bổ sung nào (ngoại trừ Plugin "Groovy", nhưng đó đã là một phần của IDEA).

Để làm điều đó, hãy chuyển đến menu cài đặt, mở mục "Trình chỉnh sửa" và sau đó là "Loại tệp". Bây giờ chọn "Groovy" trong danh sách phía trên và thêm "Jenkinsfile". Bạn cũng có thể sử dụng một regex như "Jenkinsfile *" nếu bạn muốn linh hoạt hơn liên quan đến phần kết thúc tệp tùy chọn cho Jenkinsfile.
Cài đặt bây giờ sẽ giống như sau: Cài đặt loại tệp IDEA

Ví dụ của bạn bây giờ trông giống như thế này trong IDEA (với chủ đề Dracula): Đánh dấu cú pháp Jenkinsfile

Vì vậy, IDEA hiện cung cấp đánh dấu cú pháp và tự động hoàn thành theo như tôi có thể nói. Nó gợi ý các tên hàm / phương thức hiện có trong khi viết, nhưng tôi không phải là nhà phát triển Groovy, vì vậy tôi không thể biết nếu thiếu một số đề xuất.


6
Các tính năng mà mọi người muốn bao gồm xác thực / tự động hoàn thành / quickdocs cho GDSL và tích hợp linter . Một plugin lý tưởng sẽ làm cho mọi thứ "chỉ hoạt động" với cấu hình tối thiểu (ví dụ chỉ cần trỏ nó vào một phiên bản Jenkins).
OrangeDog

2
Chỉ cần lưu ý, loại tệp thú vị chỉ khả dụng trong InteliJ và Android studio, không có trong PyCharm 2018.3.2. Tôi nghĩ rằng vì plugin này là cần thiết plugins.jetbrains.com/plugin/1524-jetgroovy
Ming

Ngoài ra, hãy xem xét việc tải xuống tệp gdsl từ phiên bản Jenkins của bạn tại https: // <Jenkins> / job / <Tên công việc> / đường ống-cú pháp / gdsl và đưa chúng vào classpath Groovy trong dự án của bạn.
Stephan

1
Đây là một ý tưởng tốt đẹp nhưng đòi hỏi một Groovy SDK để được cấu hình
owensmartin

1
Xuất sắc! Ty rất nhiều! Tôi đã có thể gán lại các tệp Jenkinsfile.decl Compare của chúng tôi theo cách tương tự để chúng tôi nhận được cả đánh dấu cú pháp và hoàn thành mã. Đối với chúng tôi *.declarativeđã được chỉ định cho loại tệp Văn bản.
icfantv


1

Dưới đây là phản hồi mà chúng tôi nhận được từ IntelliJ . Chúng tôi sẽ theo dõi vấn đề này nếu chúng tôi có thể cung cấp giải pháp hiệu quả.

Andrey Dernov, IntelliJ, ngày 14 tháng 12, 07:50 CET

Xin chào Georg, không có hỗ trợ Intellisense của Editor đặc biệt nào để chỉnh sửa Jenkinsfiles trong IDE. Bạn sẽ cần viết một plugin ngôn ngữ tùy chỉnh cho việc này.

Hoặc bạn có thể xem xét triển khai hỗ trợ như vậy thông qua viết Kotlin DSL. Một số ví dụ để bắt đầu.


1

Nhìn vào mã nguồn, có vẻ như BÌNH LUẬN không được xác định (chúng được nhận xét trong mã)

STEP_KEY được định nghĩa là: STEP_NAME = "sh" | "song song, tương đông"

Tôi không chắc plugin còn làm được nhiều hơn thế nữa và nó đã không được cập nhật trong 2 năm.


-1

Nếu bạn thêm

#!groovy

đầu trang tới tệp jenkins của bạn thì bạn sẽ nhận được đánh dấu cú pháp thú vị trong IDE.


Trong intellij, nó không hoạt động và câu trả lời này nói chung là quá mơ hồ
Tomer Gal

-12

Sử dụng shnhư thế này và lỗi sẽ biến mất (phù hợp với tôi) ...

steps {
    sh """
        echo 'Hello, World!'
    """
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.