java - मैं ट्रैक्टर, मैवेन और गिथूब के फोर्क से पुल अनुरोधों को चलाने के लिए सोनारक्लाउड को कैसे प्राप्त करूं?




maven github (2)

यह संभवत: आसान समाधान नहीं है, परन्तु मुझे नहीं लगता कि जब तक पुल अनुरोधों का निर्माण करते समय रहस्यों का उपयोग करने का एक आसान तरीका नहीं है, जब तक कि ट्रैविस कुछ रूपों में इसका समर्थन नहीं करता। सब के बाद, गुप्त चर एक अच्छे कारण के लिए उपलब्ध नहीं हैं क्योंकि पुल अनुरोधों में मनमाना कोड शामिल हो सकता है जो निर्माण के दौरान निष्पादित होता है। एक हमलावर इसका उपयोग पुल अनुरोध बनाने के लिए कर सकता है जो डिक्रिप्टेड वातावरण चर को पढ़ने के लिए बिल्डिंग प्रक्रिया को बदलता है और उसे उन्हें भेजता है।

अंतर्निहित समस्या ये है कि वह कोड जो निर्माण होता है और बनाया गया कोड उसी (कभी-कभी अविश्वस्त) स्रोत से आता है। निर्माण प्रक्रिया में रहस्यों का उपयोग करने में सक्षम होने के लिए, जो कोड बनाता है और जो कोड बनाया गया है उसे अलग करना होगा और बिल्ड कोड को किसी विश्वसनीय स्रोत से आने की आवश्यकता है। अविश्वस्त स्रोत से कोई कोड निष्पादित नहीं किया जाना चाहिए जब तक कि यह सैंडबॉक्स नहीं होता है ताकि वह किसी भी रहस्य को एक्सेस नहीं कर सके।

मेरी जानकारी के लिए ट्रैविस इस को प्राप्त करने के लिए एक मानक विधि प्रदान नहीं करता है।

निर्माण कोड और कोड को अलग करने के विचार को देखते हुए बाहरी पुर्न अनुरोधों के विरुद्ध सोनार्क्बे विश्लेषण निष्पादित करने के लिए संभव है।

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

दूसरा चरण "बिल्ड कोड" रिपॉजिटरी के निर्माण को ट्रिगर करना है, जब भी पुल अनुरोध वास्तविक स्रोत कोड रिपॉजिटरी के विरुद्ध किया जाता है। ट्रैविस बिल्ड को ट्रिगर करने के लिए एपीआई प्रदान करता है । हालांकि, यह भी एक रहस्य की आवश्यकता है इसलिए पुल अनुरोध का निर्माण करते समय हम केवल "बिल्ड कोड" रिपॉजिटरी के निर्माण को ट्रिगर नहीं कर सकते हम क्या कर सकते हैं, हालांकि, गिटौब पर स्रोत कोड भंडार पर एक वेबहूक स्थापित करना है, जो एक पुल अनुरोध किया जाता है, जब एक छोटी वेब सेवा कॉल करता है। यह सेवा तब ट्रविज़ एपीआई को विश्वसनीय बिल्ड कोड रिपॉजिटरी के निर्माण को ट्रिगर करने के लिए कहती है।

मुझे लगता है कि इसका मतलब बनता है। कृपया मुझे बताएं कि कुछ स्पष्ट नहीं है।

मैंने अभी तक ऐसा नहीं किया है। इसलिए मैं कोई भी कोड प्रदान नहीं कर सकता। लेकिन मुझे लगता है कि यह एक छोटी सी वेब सेवा स्थापित करने में बहुत मुश्किल नहीं होनी चाहिए, जिससे ट्रैविस के लिए बिल्ड अनुरोध के लिए गिथब अनुरोध से एक वेबहूक बन गया।

मेरे हालिया प्रश्न पर गौर करते हुए, ट्रैविस, मावेन और गिथूब के साथ सोनारक्लाउड की विफलता मुझे एहसास हुआ कि मैं गलत सवाल पूछ रहा था। मैं अंतर्निहित समस्या के बजाय एक लक्षण का समाधान करने की कोशिश कर रहा था।

एक परियोजना जिस पर मैं काम करता हूं ( ग्रहण / स्कैनिंग ) का इस्तेमाल जिथूब के रूप में होता है क्योंकि यह एक संग्रह और कोड विश्लेषण के लिए ट्रॉजिटरी और सोनारक्लाउड के साथ ट्रैविस होता है।

जबकि सोनारक्लाउड विश्लेषण आंतरिक पुल अनुरोधों (ठीक से ग्रहण / स्कैनिंग पर सीधे शाखाओं से अनुरोधित पुलों से अनुरोध खींचने पर) को ठीक करता है, जबकि ट्रेविस बाहरी पुल अनुरोधों (फोर्क रेपो से) के लिए चल रहा है।

अंतर्निहित समस्या यह है कि जिस समय हम सोनारक्लाउड चला रहे हैं वह पर्यावरण चर पर निर्भर करता है जो सुरक्षा कारणों के लिए बाह्य पुल अनुरोधों के लिए आबादी नहीं हैं:

Encrypted environment variables have been removed for security reasons.
See https://docs.travis-ci.com/user/pull-requests/#Pull-Requests-and-Security-Restrictions

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

इसलिए,

  • क्या सुरक्षा उपाय पेश किए बिना फोर्क किए गए रिपॉजिटरी से पुल अनुरोधों के सोनारक्लाउड विश्लेषण को सक्षम करने का कोई तरीका है?

ध्यान दें कि यह प्रश्न ट्रैविस पब्लिक रिपॉजिटरी में एक कदम से आगे है, एक सिक्योर वेरिएबल कैसे जोड़ता है जो पुल अनुरोधों पर काम करता है, जिसमें अभी तक कोई उत्तर नहीं है


जैसा कि आपने पूरी तरह से अनुमान लगाया है, जब तक कि आप अपने गिटहब और सोनारक्लाउड टोकन (जो स्पष्ट रूप से आप नहीं चाहते हैं, उन्हें सार्वजनिक तौर पर अनावरण नहीं करने के लिए) कड़ी मेहनत करते हैं, तो वर्तमान में बाह्य पुल अनुरोधों का विश्लेषण करने का कोई तरीका नहीं है। यह आधिकारिक सोनारक्लाउड ट्रैविस ऐड-ऑन पेज पर प्रलेखित है।

हम वर्तमान में सक्रिय रूप से इस उपयोग के मामले का सही तरीके से समर्थन करने के लिए काम कर रहे हैं - और मुझे आशा है कि हम वर्ष के अंत से पहले कुछ के साथ आएंगे।





travis-ci