परिचय: C++ परियोजनाओं को CI/CD की आवश्यकता क्यों है?
C++ में विकास पारंपरिक रूप से मैन्युअल बिल्ड, परीक्षण चलाने और सावधानीपूर्वक संस्करण नियंत्रण से जुड़ा है। हालाँकि, आधुनिक विकास में, विशेष रूप से टीम में काम करते समय, यह दृष्टिकोण एक बाधा बन जाता है। CI/CD (Continuous Integration / Continuous Deployment) एक अभ्यास है जो कोड के बिल्ड, परीक्षण और तैनाती की प्रक्रियाओं को स्वचालित करता है। C++ परियोजनाओं के लिए, जहाँ संकलन या लिंकिंग त्रुटियाँ केवल विशिष्ट प्लेटफार्मों पर ही प्रकट हो सकती हैं, CI/CD महत्वपूर्ण है।
GitHub Actions एक शक्तिशाली और लचीला उपकरण है, जो GitHub में निर्मित है, जो आपको रिपॉजिटरी में ही पाइपलाइन बनाने की अनुमति देता है। इस लेख में, हम GitHub Actions का उपयोग करके C++ प्रोजेक्ट के लिए शुरू से CI/CD सेटअप करने का तरीका समझेंगे। आप सीखेंगे कि CMake के साथ बिल्ड को कैसे स्वचालित करें, यूनिट टेस्ट कैसे चलाएँ, कोड की गुणवत्ता कैसे जाँचें और रिलीज़ भी कैसे प्रकाशित करें।
लेख के अंत तक, आप स्वतंत्र रूप से एक पाइपलाइन सेटअप करने में सक्षम होंगे जो मैन्युअल काम के घंटे बचाएगा और आपके प्रोजेक्ट की विश्वसनीयता बढ़ाएगा।
मुख्य भाग: C++ के लिए GitHub Actions की चरण-दर-चरण मार्गदर्शिका
1. GitHub Actions की मूल बातें: Workflow, Jobs और Steps
कोड लिखने से पहले, आइए शब्दावली को समझें। GitHub Actions workflow (कार्य प्रक्रियाओं) पर आधारित है, जो निर्देशिका .github/workflows/ के अंदर YAML फ़ाइलों में वर्णित हैं। प्रत्येक workflow में एक या अधिक jobs (कार्य) होते हैं, जो समानांतर या क्रमिक रूप से निष्पादित होते हैं। प्रत्येक job में steps (चरण) होते हैं - अलग-अलग कमांड या क्रियाएँ।
C++ प्रोजेक्ट के लिए एक विशिष्ट workflow में शामिल हैं:
- बिल्ड (Build): CMake और Make/Ninja का उपयोग करके प्रोजेक्ट का संकलन।
- परीक्षण (Test): यूनिट टेस्ट चलाना (उदाहरण के लिए, Google Test या Catch2 का उपयोग करके)।
- लिंटिंग (Lint): स्थैतिक विश्लेषकों (Clang-Tidy, Cppcheck) के साथ कोड की जाँच।
- डिप्लॉय (Deploy): आर्टिफैक्ट या रिलीज़ का प्रकाशन।
पहला workflow आमतौर पर Ubuntu पर बुनियादी बिल्ड के लिए बनाया जाता है, लेकिन C++ को विभिन्न OS (Linux, macOS, Windows) पर जाँच की आवश्यकता होती है। GitHub Actions तीनों प्लेटफार्मों का समर्थन करता है।
2. पहला workflow बनाना: बिल्ड और परीक्षण
अपने रिपॉजिटरी की रूट में .github/workflows/ci.yml फ़ाइल बनाएँ। नीचे CMake और Google Test का उपयोग करने वाले प्रोजेक्ट का एक उदाहरण दिया गया है।
name: C++ CI/CD Pipeline
on: push: branches: [ main, develop ] pull_request: branches: [ main ]
jobs: build: strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] build_type: [Debug, Release] runs-on: ${{ matrix.os }} steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install dependencies (Linux) if: runner.os == 'Linux' run: sudo apt-get update && sudo apt-get install -y cmake g++ ninja-build - name: Install dependencies (macOS) if: runner.os == 'macOS' run: brew install cmake ninja - name: Install dependencies (Windows) if: runner.os == 'Windows' run: choco install cmake ninja -y - name: Configure CMake run: cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} - name: Build run: cmake --build build --config ${{ matrix.build_type }} - name: Run tests working-directory: build run: ctest --output-on-failure -C ${{ matrix.build_type }}यह workflow:
mainयाdevelopमें पुश करने पर, साथ ही Pull Request बनाने पर चलता है।- तीन OS और दो कॉन्फ़िगरेशन (Debug/Release) पर बिल्ड करने के लिए मैट्रिक्स रणनीति का उपयोग करता है।
- OS के आधार पर निर्भरताएँ (CMake, Ninja) स्थापित करता है।