Rust परियोजनाओं के लिए CI/CD: GitHub Actions — भाग 2

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

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

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

Rust परियोजनाओं के लिए CI/CD: GitHub Actions — भाग 2: परीक्षण और तैनाती

पहले भाग में, हमने Rust प्रोजेक्ट के लिए एक बुनियादी बिल्ड पाइपलाइन स्थापित की थी। अब, Rust में प्रोग्रामिंग में गहराई से जाने पर, हम स्वचालित परीक्षण, लिंटिंग और तैनाती को देखेंगे। यह शुरुआती लोगों के लिए Rust सीखने का एक अनिवार्य चरण है जो पेशेवर कोड लिखना चाहते हैं। आज आप सीखेंगे कि अपने CI/CD को वास्तव में उपयोगी कैसे बनाया जाए।

1. परीक्षण चलाना और कवरेज की जाँच करना

किसी भी गंभीर Rust प्रोजेक्ट के लिए स्वचालित परीक्षण निष्पादन की आवश्यकता होती है। GitHub Actions में, यह cargo test कमांड का उपयोग करके किया जाता है। हालाँकि, अधिकतम लाभ प्राप्त करने के लिए, tarpaulin का उपयोग करके कोड कवरेज की जाँच जोड़ें।

परीक्षण वातावरण स्थापित करना

अपनी वर्कफ़्लो फ़ाइल (.github/workflows/ci.yml) में एक चरण जोड़ें:

name: CI for Rust

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          override: true
      - name: Run tests
        run: cargo test --verbose
      - name: Generate coverage
        run: |
          cargo install cargo-tarpaulin
          cargo tarpaulin --out Xml
      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@v3
        with:
          token: ${{ secrets.CODECOV_TOKEN }}

यह कोड दिखाता है कि Rust को बाहरी सेवाओं के साथ एकीकृत करना कितना आसान है। cargo tarpaulin एक रिपोर्ट बनाएगा जिसे Codecov या Coveralls पर अपलोड किया जा सकता है। शुरुआती लोगों के लिए Rust के लिए, यह समझना महत्वपूर्ण है: परीक्षण आपकी रक्षा की पहली पंक्ति हैं।

2. लिंटिंग और फ़ॉर्मेटिंग

गुणवत्ता कोड केवल काम करने वाला कोड नहीं है, बल्कि पढ़ने योग्य कोड भी है। Rust में, दो शक्तिशाली उपकरण हैं: clippy (लिंटर) और rustfmt (फ़ॉर्मेटर)। उन्हें पाइपलाइन में शामिल करें।

Clippy और Rustfmt जोड़ना

एक नया कार्य जोड़ें या मौजूदा कार्य का विस्तार करें:

  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          components: clippy, rustfmt
      - name: Check formatting
        run: cargo fmt -- --check
      - name: Run Clippy
        run: cargo clippy -- -D warnings

-D warnings फ़्लैग चेतावनियों को त्रुटियों में बदल देता है। यह सीखने के लिए सख्त लेकिन प्रभावी है: आपको संभावित समस्याओं के बारे में तुरंत पता चल जाएगा। याद रखें कि Rust में प्रोग्रामिंग में, सख्ती एक लाभ है।

3. GitHub Pages पर स्वचालित तैनाती

जब परीक्षण और लिंटिंग पास हो जाते हैं, तो आप स्वचालित रूप से दस्तावेज़ प्रकाशित कर सकते हैं। Rust cargo doc के माध्यम से दस्तावेज़ तैयार करता है। GitHub Pages पर तैनात करना परिणाम दिखाने का एक शानदार तरीका है।

तैनाती के लिए वर्कफ़्लो

एक अलग फ़ाइल बनाएँ .github/workflows/deploy.yml:

name: Deploy Documentation

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
      - name: Build documentation
        run: cargo doc --no-deps --document-private-items
      - name: Deploy to GitHub Pages
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./target/doc

यह पाइपलाइन केवल मुख्य शाखा में पुश करने पर ट्रिगर होती है। यह दस्तावेज़ तैयार करती है और उसे प्रकाशित करती है। शुरुआती लोगों के लिए Rust के लिए, यह अपनी परियोजनाओं को दुनिया को दिखाने का एक शानदार तरीका है।

4. बिल्ड समय का अनुकूलन: कैशिंग

Rust प्रोजेक्ट बनाना समय लेने वाला हो सकता है। GitHub Acti

ब्लॉग

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