परिचय: CI/CD Java डेवलपर के लिए क्यों ज़रूरी है
आधुनिक Java डेवलपमेंट ऑटोमेशन के बिना अधूरी है। टेस्ट को मैन्युअल रूप से चलाना, .jar फ़ाइलें बनाना और सर्वर पर डिप्लॉय करना घंटों लगा सकता है और मानवीय त्रुटियों का कारण बन सकता है। CI/CD (Continuous Integration / Continuous Deployment) इस समस्या को हल करता है: रिपॉजिटरी में हर कमिट अपने आप चेक, बिल्ड और ज़रूरत पड़ने पर प्रोडक्शन में भेजा जाता है।
GitHub Actions GitHub का एक अंतर्निहित टूल है जो आपको सीधे रिपॉजिटरी में पाइपलाइन बनाने की सुविधा देता है। यह सार्वजनिक प्रोजेक्ट्स के लिए मुफ़्त है, Maven/Gradle के साथ आसानी से इंटीग्रेट होता है और Java 8–21 को सपोर्ट करता है। इस लेख में हम पूरे चक्र को समझेंगे: पुश ट्रिगर से लेकर आर्टिफैक्ट प्रकाशन तक।
1. GitHub Actions की मूल बातें: workflow की संरचना
Workflow एक YAML फ़ाइल है जो .github/workflows/ में होती है। इसमें शामिल हैं:
- ट्रिगर (push, pull_request, schedule);
- Jobs (कार्य), जो वर्चुअल मशीनों (runner) पर चलते हैं;
- Steps (चरण) प्रत्येक कार्य के अंदर।
Java प्रोजेक्ट के लिए एक सामान्य workflow में JDK सेटअप, Maven/Gradle टेस्ट चलाना और आर्टिफैक्ट बनाना शामिल है।
1.1. पहला workflow: Java प्रोजेक्ट का परीक्षण
निम्नलिखित सामग्री के साथ .github/workflows/ci.yml फ़ाइल बनाएँ:
name: Java CI
on: push: branches: [ "main" ] pull_request: branches: [ "main" ]
jobs: build: runs-on: ubuntu-latest
steps: - uses: actions/checkout@v4 - name: Set up JDK 17 uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' cache: maven - name: Build with Maven run: mvn -B package --file pom.xml - name: Run tests run: mvn testयहाँ क्या हो रहा है:
actions/checkout— रिपॉजिटरी को क्लोन करता है;setup-java— JDK 17 (Temurin) सेट करता है और Maven डिपेंडेंसी को कैश करता है;mvn package— प्रोजेक्ट बनाता है और टेस्ट चलाता है;mvn test— टेस्ट का स्पष्ट रन (package के साथ जोड़ा जा सकता है)।
main में पुश करने के बाद आप कमिट के बगल में एक हरा निशान देखेंगे — इसका मतलब है कि पाइपलाइन सफलतापूर्वक चली।
2. Java के लिए उन्नत सेटअप: वर्जन मैट्रिक्स और कैशिंग
वास्तविक प्रोजेक्ट्स को अक्सर Java के कई वर्जनों पर जाँच की आवश्यकता होती है। GitHub Actions मैट्रिक्स स्ट्रेटेजी को सपोर्ट करता है।
2.1. JDK मैट्रिक्स
jobs: test: runs-on: ubuntu-latest strategy: matrix: java: [11, 17, 21] steps: - uses: actions/checkout@v4 - name: Set up JDK ${{ matrix.java }} uses: actions/setup-java@v4 with: java-version: ${{ matrix.java }} distribution: 'temurin' cache: maven - run: mvn testयह दृष्टिकोण सुनिश्चित करता है कि आपका कोड Java के LTS वर्जनों के साथ संगत है। कार्य समानांतर में चलते हैं, जिससे समय बचता है।
2.2. डिपेंडेंसी कैशिंग
हमने पहले ही cache: maven निर्दिष्ट किया है — यह स्वचालित रूप से ~/.m2/repository को कैश करता है। Gradle के लिए cache: gradle का उपयोग करें। कैश बिल्ड को 2–3 गुना तेज़ करता है।
3. आर्टिफैक्ट्स (JAR/Docker) का बिल्ड और प्रकाशन
सफल परीक्षण के बाद, एक तैयार आर्टिफैक्ट प्राप्त करना आवश्यक है। आइए दो लोकप्रिय परिदृश्यों पर विचार करें।
3.1. GitHub आर्टिफैक्ट्स में JAR फ़ाइल अपलोड करना
jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up JDK 17 uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' - run: mvn clean package - name: Upload JAR uses: actions/upload-artifact@v4 with: