जावा प्रोजेक्ट्स के लिए CI/CD: GitHub Actions A से Z तक

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: CI/CD आधुनिक जावा डेवलपमेंट का मानक क्यों है

\n

जावा डेवलपमेंट की दुनिया में, कोड डिलीवरी की गति और गुणवत्ता महत्वपूर्ण है। हर दिन टीमें सैकड़ों बदलाव करती हैं, और ऑटोमेशन के बिना इंटीग्रेशन प्रक्रिया अराजकता में बदल जाती है। CI/CD (Continuous Integration / Continuous Deployment) इस समस्या को हल करता है: कोड स्वचालित रूप से बिल्ड, टेस्ट और सर्वर पर डिप्लॉय होता है।

\n

GitHub Actions टूल रिपॉजिटरी में ही CI/CD के लिए एक अंतर्निहित समाधान है। यह YAML पर पाइपलाइन (workflows) बनाने की अनुमति देता है, जो push, pull request या अन्य इवेंट पर प्रतिक्रिया करती हैं। इस लेख में, हम जावा प्रोजेक्ट के लिए CI/CD सेटअप के पूरे चक्र को समझेंगे: बेसिक बिल्ड से लेकर क्लाउड में डिप्लॉयमेंट तक।

\n

आप सीखेंगे कि डेवलपमेंट को कैसे तेज़ करें, गलतियों से कैसे बचें और रूटीन को कैसे ऑटोमेट करें। चलिए शुरू करते हैं!

\n\n

1. GitHub Actions की मूल बातें: workflow की संरचना

\n

GitHub Actions क्या है?

\n

GitHub Actions वर्कफ़्लो को ऑटोमेट करने का एक प्लेटफ़ॉर्म है। Workflow (कार्य प्रक्रिया) चरणों का एक सेट है जो किसी इवेंट (जैसे, main ब्रांच में push) होने पर निष्पादित होता है। प्रत्येक workflow में निम्न शामिल हैं:

\n
    \n
  • Event — ट्रिगर (push, pull_request, schedule)।
  • \n
  • Jobs — कार्य जो वर्चुअल मशीनों (runner) पर निष्पादित होते हैं।
  • \n
  • Steps — विशिष्ट क्रियाएँ (स्क्रिप्ट चलाना, डिपेंडेंसी इंस्टॉल करना)।
  • \n
\n

जावा प्रोजेक्ट के लिए एक सामान्य workflow में शामिल हैं: कोड डाउनलोड करना, JDK सेट करना, Maven/Gradle बिल्ड, टेस्ट चलाना और आर्टिफैक्ट प्रकाशित करना।

\n\n

जावा के लिए पहला workflow बनाना

\n

रिपॉजिटरी की रूट में .github/workflows/ फ़ोल्डर और ci.yml फ़ाइल बनाएँ। Maven प्रोजेक्ट के लिए एक न्यूनतम उदाहरण यहाँ दिया गया है:

\n
name: Java CI with Maven\n\non:\n  push:\n    branches: [ main ]\n  pull_request:\n    branches: [ main ]\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n\n    steps:\n    - uses: actions/checkout@v4\n    - name: Set up JDK 17\n      uses: actions/setup-java@v4\n      with:\n        java-version: '17'\n        distribution: 'temurin'\n    - name: Build with Maven\n      run: mvn clean compile\n    - name: Run tests\n      run: mvn test
\n

यह workflow main में push या pull request पर चलता है। यह जाँचता है कि कोड कंपाइल होता है और टेस्ट पास होते हैं। यदि कोई टेस्ट फेल होता है, तो workflow एरर के साथ समाप्त होता है, और आपको सूचना मिलती है।

\n\n

2. उन्नत सेटअप: कैशिंग, मैट्रिक्स और आर्टिफैक्ट

\n

डिपेंडेंसी कैशिंग

\n

Maven और Gradle हर बार डिपेंडेंसी को फिर से डाउनलोड करते हैं - यह धीमा है। GitHub Actions कैशिंग को सपोर्ट करता है। actions/cache के साथ एक स्टेप जोड़ें:

\n
- name: Cache Maven packages\n  uses: actions/cache@v4\n  with:\n    path: ~/.m2/repository\n    key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}\n    restore-keys: |\n      ${{ runner.os }}-maven-
\n

कैश की कुंजी pom.xml के हैश पर आधारित है। यदि फ़ाइल नहीं बदली है, तो डिपेंडेंसी कैश से पुनर्स्थापित हो जाती हैं, जिससे बिल्ड का समय 2-3 गुना कम हो जाता है।

\n\n

मैट्रिक्स बिल्ड (Matrix Build)

\n

जावा प्रोजेक्ट्स का अक्सर JDK और OS के कई वर्ज़न पर परीक्षण किया जाता है। matrix रणनीति का उपयोग करें:

\n
jobs:\n  test:\n    runs-on: ubuntu-latest\n    strategy:\n      matrix:\n        java: [11, 17, 21]\n    steps:\n    - uses: actions/checkout@v4\n    - name: Set up JDK ${{ matrix.java }}\n      uses: actions/setup-java@v4\n      with:\n        java-version: ${{ matrix.java }}\n        distribution: 'temurin'\n    - name: Test with Maven\n      run: mvn test
\n

GitHub Java 11, 17 और 21 के लिए 3 समानांतर जॉब बनाएगा। यह JDK के विभिन्न वर्ज़न के साथ कोड की संगतता सुनिश्चित करता है।

\n\n

आर्टिफैक्ट को सहेजना

\n

बिल्ड के बाद, JAR फ़ाइल को आर्टिफैक्ट के रूप में सहेजा जा सकता है ताकि इसे मैन्युअल रूप से डाउनलोड किया जा सके या अगले जॉब में उपयोग किया जा सके:

\n
- name: Upload JAR artifact\n  uses: actions/upload-artifact@v4\n  with                

ब्लॉग

पुस्तक अनुशंसाएँ