
Spring Cloud Gateway repository जो CVE-2022-22947 के शोषण को API सुरक्षा परीक्षण और भेद्यता विश्लेषण के लिए प्रदर्शित करता है।
//// इस फ़ाइल को संपादित न करें। यह जनरेट की गई है। इस फ़ाइल में मैन्युअल बदलाव पुनः जनरेशन पर खो जाएंगे। इसके बजाय src/main/asciidoc/ निर्देशिका में फ़ाइलों को संपादित करें। ////
image::https://circleci.com/gh/spring-cloud/spring-cloud-gateway/tree/master.svg?style=svg["CircleCI", link="https://circleci.com/gh/spring-cloud/spring-cloud-gateway/tree/master"] image::https://codecov.io/gh/spring-cloud/spring-cloud-gateway/branch/master/graph/badge.svg["Codecov", link="https://codecov.io/gh/spring-cloud/spring-cloud-gateway/branch/master"] image::https://api.codacy.com/project/badge/Grade/a6885a06921e4f72a0df0b7aabd6d118["Codacy code quality", link="https://www.codacy.com/app/spring-cloud/spring-cloud-gateway?utm_source=github.com&utm_medium=referral&utm_content=spring-cloud/spring-cloud-gateway&utm_campaign=Badge_Grade"]
यह प्रोजेक्ट स्प्रिंग इकोसिस्टम के ऊपर निर्मित एक API गेटवे प्रदान करता है, जिसमें शामिल हैं: Spring 5, Spring Boot 2 और Project Reactor। Spring Cloud Gateway का उद्देश्य API को रूट करने और उन्हें सुरक्षा, मॉनिटरिंग/मीट्रिक्स और लचीलापन जैसी क्रॉस-कटिंग चिंताएं प्रदान करने का एक सरल, फिर भी प्रभावी तरीका प्रदान करना है।
== विशेषताएँ
DiscoveryClient का समर्थन करता है== निर्माण
:jdkversion: 1.8
=== बुनियादी संकलन और परीक्षण
स्रोत बनाने के लिए आपको JDK {jdkversion} स्थापित करना होगा।
Spring Cloud अधिकांश बिल्ड-संबंधित गतिविधियों के लिए Maven का उपयोग करता है, और आपको रुचि के प्रोजेक्ट को क्लोन करके और टाइप करके काफी जल्दी शुरू हो जाना चाहिए
नोट: आप स्वयं Maven (>=3.3.3) भी स्थापित कर सकते हैं और नीचे दिए गए उदाहरणों में ./mvnw के स्थान पर mvn कमांड चला सकते हैं। यदि आप ऐसा करते हैं तो आपको
-P spring जोड़ने की भी आवश्यकता हो सकती है यदि आपकी स्थानीय Maven सेटिंग्स में
स्प्रिंग प्री-रिलीज़ आर्टिफैक्ट के लिए रिपॉजिटरी घोषणाएँ नहीं हैं।
नोट: ध्यान रखें कि आपको MAVEN_OPTS पर्यावरण चर को -Xmx512m -XX:MaxPermSize=128m जैसे मान के साथ सेट करके Maven के लिए उपलब्ध मेमोरी की मात्रा बढ़ाने की आवश्यकता हो सकती है। हम .mvn कॉन्फ़िगरेशन में इसे कवर करने का प्रयास करते हैं, इसलिए यदि आप पाते हैं कि बिल्ड को सफल बनाने के लिए आपको ऐसा करना है, तो कृपया सेटिंग्स को स्रोत नियंत्रण में जोड़ने के लिए एक टिकट उठाएँ।
जिन प्रोजेक्ट्स को परीक्षण के लिए मिडलवेयर (जैसे Redis) की आवश्यकता होती है, उन्हें आमतौर पर आवश्यकता होती है कि Docker का एक स्थानीय इंस्टेंस स्थापित और चल रहा हो।
=== दस्तावेज़ीकरण
spring-cloud-build मॉड्यूल में एक "docs" प्रोफ़ाइल है, और यदि आप इसे चालू करते हैं तो यह src/main/asciidoc से asciidoc स्रोतों को बनाने का प्रयास करेगा। उस प्रक्रिया के भाग के रूप में यह एक README.adoc की तलाश करेगा और सभी इन्क्लूड को लोड करके इसे संसाधित करेगा, लेकिन इसे पार्स या रेंडर नहीं करेगा, बस इसे ${main.basedir} (डिफ़ॉल्ट ${basedir} है, यानी प्रोजेक्ट की जड़) पर कॉपी करेगा। यदि README में कोई बदलाव हैं तो वे Maven बिल्ड के बाद सही स्थान पर एक संशोधित फ़ाइल के रूप में दिखाई देंगे। बस इसे कमिट करें और परिवर्तन को push करें।
=== कोड के साथ काम करना यदि आपके पास IDE की प्राथमिकता नहीं है तो हम अनुशंसा करते हैं कि आप कोड के साथ काम करते समय https://www.springsource.com/developer/sts[Spring Tools Suite] या https://eclipse.org[Eclipse] का उपयोग करें। हम maven समर्थन के लिए https://eclipse.org/m2e/[m2eclipse] eclipse प्लगइन का उपयोग करते हैं। अन्य IDE और टूल भी बिना किसी समस्या के काम करने चाहिए जब तक वे Maven 3.3.3 या बेहतर का उपयोग करते हैं।
==== Spring Maven प्रोफ़ाइल सक्रिय करें Spring Cloud प्रोजेक्ट्स को स्प्रिंग माइलस्टोन और स्नैपशॉट रिपॉजिटरी को हल करने के लिए 'spring' Maven प्रोफ़ाइल को सक्रिय करने की आवश्यकता होती है। इस प्रोफ़ाइल को सक्रिय सेट करने के लिए अपने पसंदीदा IDE का उपयोग करें, अन्यथा आपको बिल्ड त्रुटियों का अनुभव हो सकता है।
==== m2eclipse के साथ eclipse में आयात करना हम eclipse के साथ काम करते समय https://eclipse.org/m2e/[m2eclipse] eclipse प्लगइन की अनुशंसा करते हैं। यदि आपके पास पहले से m2eclipse स्थापित नहीं है तो यह "eclipse marketplace" से उपलब्ध है।
नोट: m2e के पुराने संस्करण Maven 3.3 का समर्थन नहीं करते हैं, इसलिए एक बार प्रोजेक्ट्स को Eclipse में आयात करने के बाद आपको m2eclipse को प्रोजेक्ट्स के लिए सही प्रोफ़ाइल का उपयोग करने के लिए भी बताना होगा। यदि आप प्रोजेक्ट्स में POM से संबंधित कई अलग-अलग त्रुटियाँ देखते हैं, तो जाँच लें कि आपके पास अद्यतन स्थापना है। यदि आप m2e को अपग्रेड नहीं कर सकते हैं, तो अपने settings.xml में "spring" प्रोफ़ाइल जोड़ें। वैकल्पिक रूप से आप पैरेंट पॉम के "spring" प्रोफ़ाइल से रिपॉजिटरी सेटिंग्स को अपने settings.xml में कॉपी कर सकते हैं।
==== m2eclipse के बिना eclipse में आयात करना यदि आप m2eclipse का उपयोग नहीं करना पसंद करते हैं तो आप निम्न कमांड का उपयोग करके eclipse प्रोजेक्ट मेटाडेटा उत्पन्न कर सकते हैं:
$ ./mvnw eclipse:eclipse
उत्पन्न eclipse प्रोजेक्ट्स को file मेनू से import existing projects चुनकर आयात किया जा सकता है।
== योगदान देना
:spring-cloud-build-branch: master
Spring Cloud गैर-प्रतिबंधात्मक Apache 2.0 लाइसेंस के तहत जारी किया गया है, और एक बहुत ही मानक Github विकास प्रक्रिया का पालन करता है, जिसमें मुद्दों के लिए Github ट्रैकर और मास्टर में पुल अनुरोधों को मर्ज करना शामिल है। यदि आप कुछ भी तुच्छ भी योगदान देना चाहते हैं तो कृपया संकोच न करें, लेकिन नीचे दिए गए दिशानिर्देशों का पालन करें।
=== योगदानकर्ता लाइसेंस समझौते पर हस्ताक्षर करें इससे पहले कि हम एक गैर-तुच्छ पैच या पुल अनुरोध स्वीकार करें, हमें आपको https://cla.pivotal.io/sign/spring[योगदानकर्ता लाइसेंस समझौते] पर हस्ताक्षर करने की आवश्यकता होगी। योगदानकर्ता समझौते पर हस्ताक्षर करने से किसी को मुख्य रिपॉजिटरी में कमिट अधिकार नहीं मिलता है, लेकिन इसका मतलब है कि हम आपके योगदान को स्वीकार कर सकते हैं, और यदि हम ऐसा करते हैं तो आपको लेखक क्रेडिट मिलेगा। सक्रिय योगदानकर्ताओं को कोर टीम में शामिल होने और पुल अनुरोधों को मर्ज करने की क्षमता देने के लिए कहा जा सकता है।
=== आचार संहिता यह प्रोजेक्ट योगदानकर्ता वाचा https://github.com/spring-cloud/spring-cloud-build/blob/master/docs/src/main/asciidoc/code-of-conduct.adoc[आचार संहिता] का पालन करता है। भाग लेकर, आपसे इस संहिता को बनाए रखने की अपेक्षा की जाती है। कृपया अनुचित व्यवहार की रिपोर्ट [email protected] पर करें।
=== कोड परंपराएँ और गृह व्यवस्था पुल अनुरोध के लिए इनमें से कोई भी आवश्यक नहीं है, लेकिन ये सभी मदद करेंगे। इन्हें मूल पुल अनुरोध के बाद लेकिन मर्ज से पहले भी जोड़ा जा सकता है।
eclipse-code-formatter.xml फ़ाइल का उपयोग करके फ़ॉर्मेटर सेटिंग्स आयात कर सकते हैं। यदि IntelliJ का उपयोग कर रहे हैं, तो आप उसी फ़ाइल को आयात करने के लिए https://plugins.jetbrains.com/plugin/6546[Eclipse Code Formatter Plugin] का उपयोग कर सकते हैं।.java फ़ाइलों में कम से कम एक @author टैग है जो आपको पहचानता है, और अधिमानतः कम से कम एक पैराग्राफ है कि क्लास किस लिए है, इसके साथ एक सरल Javadoc क्लास टिप्पणी है।.java फ़ाइलों में ASF लाइसेंस हेडर टिप्पणी जोड़ें (प्रोजेक्ट में मौजूदा फ़ाइलों से कॉपी करें)@author के रूप में जोड़ें जिन्हें आप काफी हद तक संशोधित करते हैं (कॉस्मेटिक परिवर्तनों से अधिक)।Fixes gh-XXXX जोड़ें (जहाँ XXXX मुद्दा संख्या है)।=== Checkstyle
Spring Cloud Build चेकस्टाइल नियमों के एक सेट के साथ आता है। आप उन्हें spring-cloud-build-tools मॉड्यूल में पा सकते हैं। मॉड्यूल के अंतर्गत सबसे उल्लेखनीय फ़ाइलें हैं:
<1> डिफ़ॉल्ट Checkstyle नियम <2> फ़ाइल हेडर सेटअप <3> डिफ़ॉल्ट दमन नियम
==== Checkstyle कॉन्फ़िगरेशन
Checkstyle नियम डिफ़ॉल्ट रूप से अक्षम हैं। अपने प्रोजेक्ट में चेकस्टाइल जोड़ने के लिए बस निम्नलिखित गुण और प्लगइन परिभाषित करें।
<reporting>
<plugins>
<plugin> <5>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
</plugin>
</plugins>
</reporting>
यदि आपको कुछ नियमों को दबाने की आवश्यकता है (उदा. लाइन की लंबाई अधिक लंबी होने की आवश्यकता है), तो आपके लिए अपने दमन के साथ ${project.root}/src/checkstyle/checkstyle-suppressions.xml के अंतर्गत एक फ़ाइल परिभाषित करना पर्याप्त है। उदाहरण:
अपने प्रोजेक्ट में ${spring-cloud-build.rootFolder}/.editorconfig और ${spring-cloud-build.rootFolder}/.springformat को कॉपी करना उचित है। इस तरह, कुछ डिफ़ॉल्ट फ़ॉर्मेटिंग नियम लागू होंगे। आप इस स्क्रिप्ट को चलाकर ऐसा कर सकते हैं:
$ curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/.editorconfig -o .editorconfig
$ touch .springformat
=== IDE सेटअप
==== Intellij IDEA
Intellij सेटअप करने के लिए आपको हमारे कोडिंग सम्मेलनों, निरीक्षण प्रोफ़ाइलों को आयात करना चाहिए और checkstyle प्लगइन सेट करना चाहिए। निम्नलिखित फ़ाइलें https://github.com/spring-cloud/spring-cloud-build/tree/master/spring-cloud-build-tools[Spring Cloud Build] प्रोजेक्ट में पाई जा सकती हैं।
<1> डिफ़ॉल्ट Checkstyle नियम <2> फ़ाइल हेडर सेटअप <3> डिफ़ॉल्ट दमन नियम <4> Intellij के लिए प्रोजेक्ट डिफॉल्ट्स जो अधिकांश Checkstyle नियम लागू करते हैं <5> Intellij के लिए प्रोजेक्ट शैली सम्मेलन जो अधिकांश Checkstyle नियम लागू करते हैं
.कोड शैली
File -> Settings -> Editor -> Code style पर जाएँ। वहाँ Scheme अनुभाग के आगे आइकन पर क्लिक करें। वहाँ, Import Scheme मान पर क्लिक करें और Intellij IDEA code style XML विकल्प चुनें। spring-cloud-build-tools/src/main/resources/intellij/Intellij_Spring_Boot_Java_Conventions.xml फ़ाइल आयात करें।
.निरीक्षण प्रोफ़ाइलें
File -> Settings -> Editor -> Inspections पर जाएँ। वहाँ Profile अनुभाग के आगे आइकन पर क्लिक करें। वहाँ, Import Profile पर क्लिक करें और spring-cloud-build-tools/src/main/resources/intellij/Intellij_Project_Defaults.xml फ़ाइल आयात करें।
.Checkstyle
Intellij को Checkstyle के साथ काम करने के लिए, आपको Checkstyle प्लगइन स्थापित करना होगा। JUnit अभिकथनों को स्वचालित रूप से परिवर्तित करने के लिए Assertions2Assertj स्थापित करना भी उचित है।
File -> Settings -> Other settings -> Checkstyle पर जाएँ। वहाँ Configuration file अनुभाग में + आइकन पर क्लिक करें। वहाँ, आपको परिभाषित करना होगा कि चेकस्टाइल नियम कहाँ से लिए जाने चाहिए। उपरोक्त छवि में, हमने क्लोन किए गए Spring Cloud Build रिपॉजिटरी से नियम लिए हैं। हालाँकि, आप Spring Cloud Build के GitHub रिपॉजिटरी की ओर इशारा कर सकते हैं (उदा. checkstyle.xml के लिए: https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/main/resources/checkstyle.xml)। हमें निम्नलिखित चर प्रदान करने होंगे:
checkstyle.header.file - कृपया इसे Spring Cloud Build की spring-cloud-build-tools/src/main/resources/checkstyle-header.txt फ़ाइल की ओर इंगित करें, चाहे आपके क्लोन किए गए रेपो में या https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/main/resources/checkstyle-header.txt URL के माध्यम से।checkstyle.suppressions.file - डिफ़ॉल्ट दमन। कृपया इसे Spring Cloud Build की spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml फ़ाइल की ओर इंगित करें, चाहे आपके क्लोन किए गए रेपो में या https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml URL के माध्यम से।checkstyle.additional.suppressions.file - यह चर आपके स्थानीय प्रोजेक्ट में दमन से मेल खाता है। उदा. आप spring-cloud-contract पर काम कर रहे हैं। फिर project-root/src/checkstyle/checkstyle-suppressions.xml फ़ोल्डर की ओर इंगित करें। के लिए उदाहरण होगा: ।महत्वपूर्ण: Scan Scope को All sources पर सेट करना याद रखें क्योंकि हम उत्पादन और परीक्षण स्रोतों के लिए चेकस्टाइल नियम लागू करते हैं।
=== डुप्लिकेट फ़ाइंडर
Spring Cloud Build अपने साथ basepom:duplicate-finder-maven-plugin लाता है, जो जावा क्लासपाथ पर डुप्लिकेट और विरोधाभासी कक्षाओं और संसाधनों को ध्वजांकित करने में सक्षम बनाता है।
==== डुप्लिकेट फ़ाइंडर कॉन्फ़िगरेशन
डुप्लिकेट फ़ाइंडर डिफ़ॉल्ट रूप से सक्षम है और आपके Maven बिल्ड के verify चरण में चलेगा, लेकिन यह आपके प्रोजेक्ट में तभी प्रभावी होगा जब आप प्रोजेक्ट के pom.xml के build अनुभाग में duplicate-finder-maven-plugin जोड़ेंगे।
अन्य गुणों के लिए, हमने https://github.com/basepom/duplicate-finder-maven-plugin/wiki[प्लगइन दस्तावेज़ीकरण] में सूचीबद्ध डिफ़ॉल्ट सेट किए हैं।
आप चयनित गुण के मान को duplicate-finder-maven-plugin से उपसर्ग करके आसानी से ओवरराइड कर सकते हैं। उदाहरण के लिए, अपने बिल्ड में डुप्लिकेट जाँच को छोड़ने के लिए duplicate-finder-maven-plugin.skip को true पर सेट करें।
यदि आपको अपने सेटअप में ignoredClassPatterns या ignoredResourcePatterns जोड़ने की आवश्यकता है, तो सुनिश्चित करें कि उन्हें अपने प्रोजेक्ट के प्लगइन कॉन्फ़िगरेशन अनुभाग में जोड़ें:
spring-cloud-contract/home/username/spring-cloud-contract/src/checkstyle/checkstyle-suppressions.xml