9

स्थिति:स्वचालित रूप से जेनकींस में पोम फ़ाइल से अनिवार्य SonarQube गुण प्राप्त

मैं SonarQube (5.4) के साथ अपने प्रोजेक्ट का विश्लेषण करना चाहते जेनकींस (1.642.4) से शुरू हो रहा। यह एक जावा परियोजना मेवेन के साथ निर्माण है।

  1. पोस्ट क्रिया "Maven साथ SonarQube विश्लेषण" का निर्माण, लेकिन यह पदावनत है, तो मैं यह
  2. बिल्ड पश्चात चरण का उपयोग नहीं करना चाहते हैं ":

    मैं विश्लेषण को गति प्रदान करने के दो तरीके को देखने के सोनारक्यूब स्कैनर निष्पादित करें ", अनुशंसित तरीका है।

समस्या:

अगर मैं पदावनत कार्रवाई पोस्ट बिल्ड का उपयोग करें, सोनार परियोजना विन्यास के लिए गुण स्वचालित रूप से परियोजना पोम से हुआ है।

यह मैं सिफारिश की पोस्ट का निर्माण चरण का उपयोग करें, मैं अपवाद

आप 'अज्ञात' के लिए अनिवार्य गुण निम्नलिखित को परिभाषित करना होगा प्राप्त करते हैं: sonar.projectKey, sonar.projectName, sonar.projectVersion, sonar.sources

अवांछित समाधान:

समाधान जावा परियोजना में, आवश्यक गुण प्रदान करने के लिए sonar-project.properties फ़ाइल के माध्यम से है या जेनकींस चरण में पैरामीटर के माध्यम से।

आईएमएचओ: यह नकल है। सभी प्रासंगिक सूचनाओं को मेवेन पोम में परिभाषित किया गया है: प्रोजेक्टकी को आर्टिफैक्ट आईडी, प्रोजेक्टनाम और प्रोजेक्ट वर्जन से लिया जा सकता है मैवेन में समान गुण हैं। विशेष रूप से प्रोजेक्ट वर्जन महत्वपूर्ण है। मैं प्रत्येक रिलीज के बाद प्रोजेक्ट संस्करण को अपडेट नहीं करना चाहता (या इसे स्वचालित रूप से अपडेट करने के लिए रिलीज प्लगइन में कुछ कोड लिखें)।

मैं क्या चाहता हूँ

मैं सिफारिश की पोस्ट जेनकींस में बिल्ड कदम है, फिर से परिभाषित बिना मेरे सभी परियोजना सोनार को खुश करने के लिए सभी परियोजना गुणों का उपयोग करना चाहते हैं। इसके बजाय सोनार/जेनकींस/प्लगइन/जो भी मेरे मैवेन पोम फ़ाइल से गुण प्राप्त करना चाहिए। क्या कोई अतिरिक्त प्लगइन है जिसका मैं उपयोग कर सकता हूं? क्या मैं अपने जेनकींस-सोनार-प्लगइन को फिर से कॉन्फ़िगर कर सकता हूं?

मैं अपने पोम/प्रोजेक्ट में कोई सोनार विशिष्ट जानकारी प्रदान नहीं करना चाहता, क्योंकि परियोजना को सोनार की परवाह नहीं करनी चाहिए। इसमें परियोजना बनाने के लिए आवश्यक जानकारी होनी चाहिए।

उत्तर

15

The documentation (हालांकि थोड़ा उलझन में, नीचे संपादित देखें) बताता है कि बहिष्कृत पोस्ट-बिल्ड कार्रवाई के बजाय जेनेरिक पोस्ट-बिल्ड चरण (पर्यावरण चर का लाभ उठाने) का उपयोग कैसे करें। संक्षेप में:

  • नवीनतम सोनारक्यूब प्लगइन स्थापित करें (v2।4 अब के रूप में) जेनकींस
  • सिस्टम कॉन्फिग में
  • में SonarQube सर्वर के तहत: अपने Maven परियोजना के विन्यास में जाँच Enable injection of SonarQube server configuration as build environment variables
  • :
    • जांच Prepare SonarQube Scanner environment
    • एक के बाद निर्माण कदम Invoke top-level Maven targets जोड़ सकते हैं और लाभ उठाने

      $ SONAR_MAVEN_GOAL -Dsonar.host.url = $ SONAR_HOST_URL -Dsonar.login = $ SONAR_AUTH_TOKEN

      : Goals क्षेत्र जैसे में इंजेक्शन वातावरण चर

संपादित: जब the documentation कहते The Post-build Action for Maven analysis is deprecated., यह वर्ष के लिए संदर्भित करता कार्रवाई जो अब और दस्तावेज नहीं है के बाद का निर्माण। उस चेतावनी के बाद अनुच्छेद (इस उत्तर में संक्षेप में) वास्तव में अनुशंसित प्रक्रिया है। चित्रण here यदि यह अभी भी स्पष्ट नहीं है।

+1

आपके उत्तर के लिए धन्यवाद, लेकिन लिंक किए गए दस्तावेज़ों में आप निम्न पाठ देख सकते हैं: "मेवेन विश्लेषण के लिए पोस्ट-बिल्ड एक्शन को बहिष्कृत किया गया है। मेवेन विश्लेषण के लिए पोस्ट-बिल्ड एक्शन को बहिष्कृत किया गया है।" तो दुर्भाग्यवश यह समाधान मेरी आवश्यकताओं के अनुरूप नहीं है। –

+1

आप दस्तावेज़ीकरण को गलत समझ रहे हैं: पोस्ट-बिल्ड ** एक्शन ** को बहिष्कृत किया गया है। मेरे उत्तर में और दस्तावेज़ीकरण में (चेतावनी के नीचे) एक मानक मेवेन बिल्ड चरण (और पर्यावरण चर इंजेक्शन) का उपयोग करने का अनुशंसित तरीका है। इसे देखें [चित्रण] (http://i68.tinypic.com/x4er8y.png)। –

+0

आप सही हैं। इस मेवेन लक्ष्य को पोस्ट बिल्ड एसटीईपी के रूप में निष्पादित किया जाता है। तो बहिष्करण उस समाधान को संदर्भित नहीं किया जाता है। मैं अपना जवाब हटा दूंगा, क्योंकि जैसा आपने कहा है, स्वचालित परियोजना संरचना उपयोग के कारण यह एक बुरा विचार है। बहुत बहुत धन्यवाद –

1

एक पोस्ट का निर्माण कदम के रूप में SonarQube स्कैनर का उपयोग करके आप विश्लेषण गुण में कम से कम इस गुण के साथ इसे कॉन्फ़िगर कर सकते हैं:

sonar.projectKey=${POM_ARTIFACTID} 
sonar.projectName=${POM_DISPLAYNAME} 
sonar.projectVersion=${POM_VERSION} 
sonar.sources=src 
sonar.java.binaries=target 
sonar.language=java 
sonar.sourceEncoding=UTF-8 

POM_ * चर Maven GAV जानकारी से जेनकींस द्वारा मैप की जाती हैं, यहाँ देखो: https://github.com/jenkinsci/jenkins/pull/933/files

संबंधित मुद्दे