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