C++ परियोजनाओं के लिए CI/CD: GitHub Actions सेटअप

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

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

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

C++ परियोजनाओं के लिए CI/CD: GitHub Actions सेटअप



C++ में आधुनिक विकास के लिए न केवल गुणवत्तापूर्ण कोड लिखना आवश्यक है, बल्कि इसके बिल्ड, परीक्षण और तैनाती की प्रक्रियाओं को सेटअप करना भी आवश्यक है। CI/CD (सतत एकीकरण / सतत तैनाती) एक अभ्यास है जो इन प्रक्रियाओं को स्वचालित करने की अनुमति देता है, जिससे कोड लिखने और उपयोगकर्ताओं तक पहुँचाने के बीच का समय कम हो जाता है। इस लेख में, हम देखेंगे कि GitHub Actions - GitHub में निर्मित एक शक्तिशाली और मुफ्त उपकरण - का उपयोग करके C++ परियोजनाओं के लिए CI/CD कैसे सेटअप करें।



GitHub Actions आपको स्वचालित कार्य प्रवाह (workflows) बनाने की अनुमति देता है, जो विशिष्ट घटनाओं पर चलते हैं: रिपॉजिटरी में push, pull request बनाना, रिलीज़ और अन्य। C++ परियोजनाओं के लिए यह विशेष रूप से उपयोगी है, क्योंकि यह सुनिश्चित करता है कि कोड विभिन्न प्लेटफार्मों पर बिल्ड होता है और इसमें कोई प्रतिगमन नहीं है।



C++ के लिए GitHub Actions की मूल बातें



GitHub Actions workflows का वर्णन करने के लिए YAML फ़ाइलों का उपयोग करता है। प्रत्येक workflow में एक या अधिक jobs होते हैं, जो वर्चुअल मशीनों (runners) पर निष्पादित होते हैं। C++ परियोजनाओं के लिए आमतौर पर Ubuntu, Windows और macOS runners का उपयोग किया जाता है। आइए workflow फ़ाइल की मूल संरचना देखें।



name: C++ CI

on: push: branches: [ main, develop ] pull_request: branches: [ main ]

jobs: build: runs-on: ubuntu-latest

steps: - uses: actions/checkout@v4

- name: Install dependencies run: | sudo apt-get update sudo apt-get install -y cmake g++ libboost-all-dev

- name: Configure CMake run: cmake -B build -DCMAKE_BUILD_TYPE=Release

- name: Build run: cmake --build build --config Release

- name: Test run: cd build && ctest --output-on-failure


यह workflow main और develop शाखाओं में push करने पर, साथ ही main में pull request बनाने पर चलता है। यह निर्भरताएँ (CMake, g++, Boost) स्थापित करता है, प्रोजेक्ट को कॉन्फ़िगर करता है, इसे बिल्ड करता है और परीक्षण चलाता है।



C++ परियोजनाओं का मल्टी-प्लेटफ़ॉर्म बिल्ड



C++ के लिए CI/CD का एक मुख्य लाभ कई प्लेटफार्मों पर स्वचालित रूप से बिल्ड की जाँच करने की क्षमता है। यह महत्वपूर्ण है, क्योंकि C++ कोड विभिन्न OS और कंपाइलरों पर अलग-अलग व्यवहार कर सकता है। GitHub Actions बिल्ड मैट्रिक्स को आसानी से व्यवस्थित करने की अनुमति देता है।



jobs:  build:    strategy:      matrix:        os: [ubuntu-latest, windows-latest, macos-latest]        compiler: [g++, clang++]        include:          - os: ubuntu-latest            compiler: g++            cmake_flags: -DCMAKE_CXX_COMPILER=g++-11          - os: ubuntu-latest            compiler: clang++            cmake_flags: -DCMAKE_CXX_COMPILER=clang++-14          - os: windows-latest            compiler: msvc            cmake_flags: -DCMAKE_CXX_COMPILER=cl          - os: macos-latest            compiler: clang++            cmake_flags: -DCMAKE_CXX_COMPILER=clang++

runs-on: ${{ matrix.os }}

steps: - uses: actions/checkout@v4

- name: Install dependencies (Ubuntu) if: matrix.os == 'ubuntu-latest' run: | sudo apt-get update sudo apt-get install -y cmake g++-11 clang-14 libboost-all-dev

- name: Install dependencies (macOS) if: matrix.os == 'macos-latest' run: | brew update brew install cmake boost

- name: Install dependencies (Windows) if: matrix.os == 'windows-latest' run: | choco install cmake boost-msvc-14.3

- name: Configure CMake run: cmake -B build ${{ matrix.cmake_flags }} -DCMAKE_BUILD_TYPE=Release

- name: Build run: cmake --build build --config Release

- name: Test run: | if [ "${{ runner.os }}" == "Windows" ]; then cd build && ctest -C Release --output-on-failure else cd build && ctest --output-on-failure fi


इस उदाहरण में

ब्लॉग

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