2025, Nov 01 12:31
GitHub Actions में Ruff को सख्त नियमों के साथ चलाने की गाइड
जानें क्यों Ruff की डिफ़ॉल्ट सेटिंग CI में ढीली पड़ती है और उसे सबसे सख्ती से कैसे चलाएँ. उदाहरण वर्कफ़्लो के साथ args: check --select ALL जोड़ने के फायदे और सेटअप। गाइड
GitHub Actions में Ruff चलाते समय उसकी стандарт सेटिंग अक्सर जरूरत से ज़्यादा नरम लग सकती है। इसका आम उदाहरण है कि ट्रेलिंग व्हाइटस्पेस CI से निकल जाता है, क्योंकि डिफ़ॉल्ट कमांड सबसे आक्रामक नियम-संग्रह सक्रिय नहीं करती। अगर आप सबसे सख्त जाँच चाहते हैं, तो आपको हर नियम को स्पष्ट रूप से चुनना होगा।
ऐसी बेसलाइन सेटिंग जो पर्याप्त सख्त नहीं है
न्यूनतम कॉन्फ़िगरेशन Ruff को उसके डिफ़ॉल्ट व्यवहार के साथ चलाती है, जो सबसे कठोर जाँचें लागू नहीं करती:
- uses: astral-sh/ruff-action@v3
with:
src: >-
path/to/file1.py
path/to/file2.py
वास्तव में क्या होता है
यह कॉन्फ़िगरेशन ruff check को बिना किसी अतिरिक्त फ्लैग के चलाता है, इसलिए केवल डिफ़ॉल्ट नियम चुने जाते हैं। इसी वजह से ट्रेलिंग व्हाइटस्पेस जैसी समस्याएँ छूट सकती हैं। एक्शन खुद ठीक है; जब तक आप अलग से न बताएं, यह बस ruff check के डिफ़ॉल्ट व्यवहार को दोहराता है।
समाधान: सभी नियम सक्षम करें
सबसे कड़ी जाँच लागू करने के लिए एक्शन को स्पष्ट आर्ग्युमेंट दें। args: "check --select ALL" जोड़ने से Ruff को हर नियम-श्रेणी सक्रिय करने का निर्देश मिलता है:
- uses: astral-sh/ruff-action@v3
with:
args: "check --select ALL"
src: >-
path/to/file1.py
path/to/file2.py
यदि आप ऐसा पूर्ण वर्कफ़्लो चाहते हैं जो master शाखा पर पुश और पुल रिक्वेस्ट पर चले, तो .github/workflows/lint.yml में रखने के लिए यह संक्षिप्त उदाहरण देखें:
name: linting-pipeline
on:
push:
branches:
- master
pull_request:
jobs:
style_audit:
name: Ruff checks
runs-on: ubuntu-latest
steps:
- name: Fetch repository
uses: actions/checkout@v4
- name: Execute Ruff — Python linter
uses: astral-sh/ruff-action@v3
with:
version: latest
args: "check --select ALL"
src: >-
path/to/file1.py
path/to/file2.py
यह क्यों महत्वपूर्ण है
CI उतनी ही भरोसेमंद होती है जितना ऊँचा उसका मानदंड होता है। यदि वर्कफ़्लो डिफ़ॉल्ट नियम-संग्रह पर चलता है, तो उसकी सिग्नलिंग सख्त लिंटर से आपकी अपेक्षा से अलग हो सकती है—जिससे रिव्यू में असंगति और बाद में अनावश्यक झंझट बढ़ता है। ALL चुनकर आप अपेक्षाएँ एकसमान करते हैं, सतही और संरचनात्मक दोनों तरह की समस्याएँ जल्दी पकड़ लेते हैं और “मेरी मशीन पर तो चलता है” जैसे सरप्राइज़ को पुल रिक्वेस्ट से दूर रखते हैं।
संबंधित तरीके
क्यों न एक्शन से ruff इंस्टॉल करें और फिर मनचाहे कमांड चलाएँ? या उसे ऐसे कॉन्फ़िगर करें कि जहाँ भी और जब भी आप इसे चलाएँ, आपके चुने हुए नियम हमेशा लागू हों?
यदि आपकी टीम अलग ढंग की सेटअप पसंद करती है, तो वे रास्ते भी ठीक हैं। मूल बात यह है कि आपका CI वही नियम सख्ती से लागू करे जिनका आप इरादा रखते हैं।
सार
GitHub Actions में Ruff को सबसे सख्ती से चलाने के लिए एक्शन में args: "check --select ALL" दें। यह छोटा सा बदलाव लिंटर को डिफ़ॉल्ट व्यवहार से हटाकर व्यापक नियम-संग्रह पर ले आता है, जिससे कोडबेस लगातार साफ रहता है और CI का फीडबैक पूर्वानुमेय बनता है।
यह लेख StackOverflow पर प्रश्न और उसके उत्तर पर आधारित है, दोनों Timur Shtatland द्वारा।