பல-சூழல் சோதனைக்கு Tox-ஐ மாஸ்டர் செய்யுங்கள். இந்த விரிவான வழிகாட்டி, வெவ்வேறு பைதான் பதிப்புகள், சார்புகள் மற்றும் இயக்க முறைமைகளில் உங்கள் பைதான் குறியீடு கச்சிதமாக வேலை செய்வதை உறுதி செய்வதற்கான tox.ini கட்டமைப்பு, CI/CD ஒருங்கிணைப்பு மற்றும் மேம்பட்ட உத்திகளை உள்ளடக்கியது.
Tox சோதனை ஆட்டோமேஷன்: உலகளாவிய குழுக்களுக்கான பல-சூழல் சோதனையின் ஒரு ஆழமான பார்வை
இன்றைய உலகளாவிய மென்பொருள் நிலப்பரப்பில், "இது எனது இயந்திரத்தில் வேலை செய்கிறது" என்ற சொற்றொடர் ஒரு டெவலப்பர் கிளிஷேவை விட அதிகம்; இது ஒரு குறிப்பிடத்தக்க வணிக ஆபத்து. உங்கள் பயனர்கள், வாடிக்கையாளர்கள் மற்றும் ஒத்துழைப்பாளர்கள் உலகம் முழுவதும் பரவியுள்ளனர், பல்வேறு இயக்க முறைமைகள், பைதான் பதிப்புகள் மற்றும் சார்பு அடுக்குகள் பயன்படுத்துகின்றனர். உங்கள் குறியீடு செயல்படுவது மட்டுமல்லாமல், எல்லோருக்கும், எல்லா இடங்களிலும் நம்பகத்தன்மையுடன் வலுவாக இருப்பதை நீங்கள் எவ்வாறு உறுதிப்படுத்த முடியும்?
இதற்கான பதில் முறையான, தானியங்கி, பல-சூழல் சோதனையில் உள்ளது. நவீன பைதான் டெவலப்பர் கருவித்தொகுப்பின் இன்றியமையாத பகுதியாக Tox, ஒரு கட்டளை-வரி-இயக்கப்படும் ஆட்டோமேஷன் கருவி, இங்கேதான் வருகிறது. இது சோதனைகளை தரப்படுத்துகிறது, ஒரே கட்டளையைப் பயன்படுத்தி கட்டமைப்புகளின் அணிக்கு எதிராக சோதனைகளை வரையறுத்து செயல்படுத்த அனுமதிக்கிறது.
இந்த விரிவான வழிகாட்டி, Tox-ன் அடிப்படைகளிலிருந்து பல-சூழல் சோதனைக்கான மேம்பட்ட உத்திகள் வரை உங்களை அழைத்துச் செல்லும். உங்கள் மென்பொருள் இணக்கமானது, நிலையானது மற்றும் உலகளாவிய பார்வையாளர்களுக்கு தயாராக இருப்பதை உறுதிசெய்யும் ஒரு மீள்தன்மையுள்ள சோதனை குழாயை எவ்வாறு உருவாக்குவது என்பதை நாங்கள் ஆராய்வோம்.
பல-சூழல் சோதனை என்றால் என்ன, அது ஏன் முக்கியமானது?
பல-சூழல் சோதனை என்பது உங்கள் சோதனை தொகுப்பை பல, தனித்துவமான கட்டமைப்புகளுக்கு எதிராக இயக்கும் நடைமுறையாகும். இந்த கட்டமைப்புகள், அல்லது "சூழல்கள்", பொதுவாக இதனால் வேறுபடுகின்றன:
- பைதான் மொழிபெயர்ப்பாளர் பதிப்புகள்: உங்கள் குறியீடு பைதான் 3.8 இல் பைதான் 3.11 இல் உள்ளதைப் போலவே வேலை செய்கிறதா? வரவிருக்கும் பைதான் 3.12 பற்றி என்ன?
- சார்பு பதிப்புகள்: உங்கள் பயன்பாடு Django, Pandas, அல்லது Requests போன்ற நூலகங்களை நம்பியிருக்கலாம். ஒரு பயனர் இந்த தொகுப்புகளின் சற்று பழைய அல்லது புதிய பதிப்பைக் கொண்டிருந்தால் அது உடைக்குமா?
- இயக்க முறைமைகள்: உங்கள் குறியீடு Windows, macOS மற்றும் Linux இல் கோப்பு பாதைகள் மற்றும் கணினி அழைப்புகளை சரியாக கையாளுகிறதா?
- கட்டமைப்புகள்: ARM-அடிப்படையிலான செயலிகளின் (Apple Silicon போன்றவை) வளர்ச்சியுடன், வெவ்வேறு CPU கட்டமைப்புகளில் (x86_64, arm64) சோதனை செய்வது பெருகிய முறையில் முக்கியமாகி வருகிறது.
ஒரு பல-சூழல் உத்திக்கான வணிக வழக்கு
இந்த வகையான சோதனையை அமைப்பதற்கு நேரம் முதலீடு செய்வது ஒரு கல்விப் பயிற்சி மட்டுமல்ல; இதற்கு நேரடி வணிக தாக்கங்கள் உள்ளன:
- ஆதரவு செலவுகளைக் குறைக்கிறது: இணக்கத்தன்மை சிக்கல்களை ஆரம்பத்திலேயே கண்டறிவதன் மூலம், நீங்கள் எதிர்பார்க்காத சூழல்களில் இருந்து வரும் பயனர்களிடமிருந்து ஆதரவு டிக்கெட்டுகளின் வெள்ளத்தைத் தடுக்கிறீர்கள்.
- பயனர் நம்பிக்கையை அதிகரிக்கிறது: வெவ்வேறு அமைப்புகளில் நம்பகத்தன்மையுடன் வேலை செய்யும் மென்பொருள் உயர் தரமாக கருதப்படுகிறது. இது திறந்த மூல நூலகங்களுக்கும் வணிக தயாரிப்புகளுக்கும் முக்கியமானது.
- மென்மையான மேம்படுத்தல்களை செயல்படுத்துகிறது: ஒரு புதிய பைதான் பதிப்பு வெளியிடப்படும்போது, நீங்கள் அதை உங்கள் சோதனை அணிக்கு எளிதாக சேர்க்கலாம். சோதனைகள் வெற்றியடைந்தால், நீங்கள் அதை ஆதரிக்கத் தயாராக உள்ளீர்கள் என்பதை அறிவீர்கள். அவை தோல்வியுற்றால், சரிசெய்ய வேண்டியவை பற்றிய தெளிவான, செயல்படக்கூடிய பட்டியல் உங்களிடம் உள்ளது.
- உலகளாவிய குழுக்களை ஆதரிக்கிறது: ஒரு நாட்டில் உள்ள டெவலப்பர் சமீபத்திய கருவிகளைப் பயன்படுத்தி மற்றொரு பிராந்தியத்தில் உள்ள குழுவுடன் திறம்பட ஒத்துழைப்பதை இது உறுதி செய்கிறது, அவர்கள் தரப்படுத்தப்பட்ட, சற்று பழைய நிறுவன அடுக்குடன் இருக்கலாம்.
Tox-ஐ அறிமுகப்படுத்துதல்: உங்கள் ஆட்டோமேஷன் கட்டளை மையம்
Tox இந்த சிக்கலை நேர்த்தியாக தீர்க்க வடிவமைக்கப்பட்டுள்ளது. அதன் மையத்தில், Tox தனிமைப்படுத்தப்பட்ட பைதான் மெய்நிகர் சூழல்களின் உருவாக்கத்தை தானியக்கமாக்குகிறது, உங்கள் திட்டத்தையும் அதன் சார்புகளையும் அவற்றில் நிறுவுகிறது, பின்னர் உங்கள் வரையறுக்கப்பட்ட கட்டளைகளை (சோதனைகள், லிண்டர்கள் அல்லது ஆவண உருவாக்கங்கள் போன்றவை) இயக்குகிறது.
இவை அனைத்தும் ஒரே, எளிய கட்டமைப்பு கோப்பால் கட்டுப்படுத்தப்படுகிறது: tox.ini
.
தொடங்குதல்: நிறுவல் மற்றும் அடிப்படை கட்டமைப்பு
pip உடன் நிறுவல் நேரடியானது:
pip install tox
அடுத்து, உங்கள் திட்டத்தின் ரூட்டில் ஒரு tox.ini
கோப்பை உருவாக்கவும். பல பைதான் பதிப்புகளுக்கு எதிராக சோதனை செய்ய ஒரு குறைந்தபட்ச கட்டமைப்புடன் தொடங்குவோம்.
எடுத்துக்காட்டு: ஒரு அடிப்படை tox.ini
[tox] min_version = 3.7 isolated_build = true envlist = py38, py39, py310, py311 [testenv] description = Run the main test suite deps = pytest commands = pytest
இதை நாம் உடைப்போம்:
[tox]
பிரிவு: இது உலகளாவிய Tox அமைப்புகளுக்கானது.min_version
: இந்த கட்டமைப்பை இயக்கத் தேவையான Tox-ன் குறைந்தபட்ச பதிப்பைக் குறிப்பிடுகிறது.isolated_build
: ஒரு நவீன சிறந்த நடைமுறை (PEP 517) இது உங்கள் தொகுப்பு சோதனைக்காக நிறுவப்படுவதற்கு முன்பு ஒரு தனிமைப்படுத்தப்பட்ட சூழலில் உருவாக்கப்படுவதை உறுதி செய்கிறது.envlist
: இது பல-சூழல் சோதனையின் இதயம். நீங்கள் நிர்வகிக்க விரும்பும் சூழல்களின் கமா-பிரிக்கப்பட்ட பட்டியல் இது. இங்கே, நாங்கள் நான்கு வரையறுத்துள்ளோம்: பைதான் 3.8 முதல் 3.11 வரை ஒவ்வொரு பதிப்பிற்கும் ஒன்று.[testenv]
பிரிவு: இதுenvlist
இல் வரையறுக்கப்பட்ட அனைத்து சூழல்களுக்கும் ஒரு வார்ப்புரு ஆகும்.description
: சூழல் என்ன செய்கிறது என்பதை விளக்கும் ஒரு பயனுள்ள செய்தி.deps
: உங்கள் கட்டளைகளை இயக்கத் தேவையான சார்புகளின் பட்டியல். இங்கே, நமக்குpytest
மட்டுமே தேவை.commands
: மெய்நிகர் சூழலுக்குள் இயக்கப்படும் கட்டளைகள். இங்கே, நாம்pytest
சோதனை இயக்கத்தை இயக்குகிறோம்.
இதை இயக்க, உங்கள் டெர்மினலில் உள்ள உங்கள் திட்டத்தின் ரூட் டைரக்டரிக்குச் சென்று தட்டச்சு செய்யவும்:
tox
Tox இப்போது `envlist` (py38, py39, முதலியன) இல் உள்ள ஒவ்வொரு சூழலுக்கும் பின்வரும் படிகளைச் செய்யும்:
- உங்கள் கணினியில் தொடர்புடைய பைதான் மொழிபெயர்ப்பாளரைத் தேடும் (எ.கா., `python3.8`, `python3.9`).
- `.tox/` கோப்பகத்திற்குள் ஒரு புதிய, தனிமைப்படுத்தப்பட்ட மெய்நிகர் சூழலை உருவாக்கும்.
- உங்கள் திட்டத்தையும் `deps` இன் கீழ் பட்டியலிடப்பட்ட சார்புகளையும் நிறுவும்.
- `commands` இன் கீழ் பட்டியலிடப்பட்ட கட்டளைகளை இயக்கும்.
எந்தப் படியும் எந்தச் சூழலிலும் தோல்வியுற்றால், Tox பிழையை அறிவித்து பூஜ்ஜியமற்ற நிலை குறியீட்டுடன் வெளியேறும், இது தொடர்ச்சியான ஒருங்கிணைப்பு (CI) அமைப்புகளுக்கு ஏற்றதாக அமைகிறது.
ஆழமான பார்வை: ஒரு சக்திவாய்ந்த tox.ini
-ஐ உருவாக்குதல்
அடிப்படை அமைப்பு சக்தி வாய்ந்தது, ஆனால் Tox-ன் உண்மையான மந்திரம் சிக்கலான சோதனை அணிகளை உருவாக்குவதற்கான அதன் நெகிழ்வான கட்டமைப்பு விருப்பங்களில் உள்ளது.
ஜெனரேட்டிவ் சூழல்கள்: சேர்க்கை சோதனைகளுக்கான திறவுகோல்
உங்களுக்கு Django பதிப்புகள் 3.2 மற்றும் 4.2, பைதான் 3.9 மற்றும் 3.10 இல் இயங்கும் ஒரு நூலகம் தேவை என்று கற்பனை செய்து பாருங்கள். நான்கு சேர்க்கைகளையும் கைமுறையாக வரையறுப்பது மீண்டும் மீண்டும் வரும்:
மீண்டும் மீண்டும் வரும் வழி: envlist = py39-django32, py39-django42, py310-django32, py310-django42
Tox சுருள் அடைப்புக்குறிகளை {}
பயன்படுத்தி ஒரு சுத்தமான, உருவாக்கும் தொடரியலை வழங்குகிறது:
உருவாக்கும் வழி: envlist = {py39,py310}-django{32,42}
இந்த ஒற்றை வரி அதே நான்கு சூழல்களுக்கு விரிவடைகிறது. இந்த அணுகுமுறை மிகவும் அளவிடக்கூடியது. ஒரு புதிய பைதான் பதிப்பு அல்லது Django பதிப்பைச் சேர்ப்பது என்பது அந்தந்த பட்டியலில் ஒரு உருப்படியைச் சேர்ப்பது மட்டுமே.
காரணி-நிபந்தனை அமைப்புகள்: ஒவ்வொரு சூழலையும் தனிப்பயனாக்குதல்
இப்போது நாம் எங்கள் அணியை வரையறுத்துள்ளோம், ஒவ்வொரு சூழலிலும் சரியான Django பதிப்பை எவ்வாறு நிறுவுவது என்று Tox-க்கு சொல்வது எப்படி? இது காரணி-நிபந்தனை அமைப்புகளுடன் செய்யப்படுகிறது.
[tox] envlist = {py39,py310}-django{32,42} [testenv] deps = pytest django32: Django>=3.2,<3.3 django42: Django>=4.2,<4.3 commands = pytest
இங்கே, `django32: Django>=3.2,<3.3` என்ற வரி Tox-க்கு சொல்கிறது: "சூழல் பெயர் `django32` என்ற காரணியைக் கொண்டிருந்தால் மட்டுமே இந்த சார்புநிலையைச் சேர்க்கவும்." `django42` க்கும் இதேபோன்று. Tox சூழல் பெயர்களை (எ.கா., `py310-django42`) பகுப்பாய்வு செய்து சரியான அமைப்புகளைப் பயன்படுத்தும் அளவுக்கு புத்திசாலித்தனமானது.
இது நிர்வகிப்பதற்கு மிகவும் சக்திவாய்ந்த அம்சம்:
- பழைய/புதிய பைதான் பதிப்புகளுடன் இணக்கமாக இல்லாத சார்புகள்.
- ஒரு முக்கிய நூலகத்தின் (Pandas, NumPy, SQLAlchemy, முதலியன) வெவ்வேறு பதிப்புகளுக்கு எதிராக சோதனை செய்தல்.
- தளம்-குறிப்பிட்ட சார்புகளின் நிபந்தனை நிறுவல்.
அடிப்படை சோதனைகளுக்கு அப்பால் உங்கள் திட்டத்தை கட்டமைத்தல்
ஒரு வலுவான தர குழாயில் சோதனைகளை இயக்குவதை விட அதிகம் அடங்கும். நீங்கள் லிண்டர்கள், வகை சரிபார்ப்பவர்கள் மற்றும் ஆவணங்களை உருவாக்க வேண்டும். இந்த பணிகளுக்கு தனி Tox சூழல்களை வரையறுப்பது ஒரு சிறந்த நடைமுறையாகும்.
[tox] envlist = py{39,310}, lint, typing, docs [testenv] deps = pytest commands = pytest [testenv:lint] description = Run linters (ruff, black) basepython = python3.10 deps = ruff black commands = ruff check . black --check . [testenv:typing] description = Run static type checker (mypy) basepython = python3.10 deps = mypy # also include other dependencies with type hints django djangorestframework commands = mypy my_project/ [testenv:docs] description = Build the documentation basepython = python3.10 deps = sphinx commands = sphinx-build -b html docs/source docs/build/html
இங்கே புதியவை:
- குறிப்பிட்ட சூழல் பிரிவுகள்: நாங்கள் `[testenv:lint]`, `[testenv:typing]`, மற்றும் `[testenv:docs]` சேர்த்துள்ளோம். இந்த பிரிவுகள் இந்த பெயரிடப்பட்ட சூழல்களுக்கு குறிப்பாக அமைப்புகளை வரையறுக்கின்றன, `[testenv]` இல் உள்ள இயல்புநிலைகளை மேலெழுதுகின்றன.
basepython
: `lint` அல்லது `docs` போன்ற சோதனை அல்லாத சூழல்களுக்கு, அவற்றை ஒவ்வொரு பைதான் பதிப்பிலும் இயக்க நமக்குத் தேவையில்லை. `basepython` அவற்றை ஒரு குறிப்பிட்ட மொழிபெயர்ப்பாளரிடம் பின் செய்ய அனுமதிக்கிறது, அவற்றை வேகமாக மற்றும் மிகவும் உறுதியுடன் ஆக்குகிறது.- சுத்தமான பிரிப்பு: இந்த கட்டமைப்பு உங்கள் சார்புகளை சுத்தமாக வைத்திருக்கிறது. `lint` சூழல் லிண்டர்களை மட்டுமே நிறுவுகிறது; உங்கள் முக்கிய சோதனை சூழல்களுக்கு அவை தேவையில்லை.
நீங்கள் இப்போது `tox` உடன் அனைத்து சூழல்களையும், `tox -e py310,lint` உடன் ஒரு குறிப்பிட்ட தொகுப்பையும், அல்லது `tox -e docs` உடன் ஒரு சூழலை மட்டுமே இயக்கலாம்.
உலகளாவிய ஆட்டோமேஷனுக்கான CI/CD உடன் Tox-ஐ ஒருங்கிணைத்தல்
Tox-ஐ உள்ளூரில் இயக்குவது சிறந்தது, ஆனால் தொடர்ச்சியான ஒருங்கிணைப்பு/தொடர்ச்சியான வரிசைப்படுத்தல் (CI/CD) குழாயில் ஒருங்கிணைக்கப்படும்போது அதன் உண்மையான சக்தி திறக்கப்படுகிறது. இது ஒவ்வொரு குறியீடு மாற்றமும் உங்கள் முழு சோதனை அணிக்கு எதிராக தானாகவே சரிபார்க்கப்படுவதை உறுதி செய்கிறது.
GitHub Actions, GitLab CI, மற்றும் Jenkins போன்ற சேவைகள் இதற்கு ஏற்றவை. அவை உங்கள் வேலைகளை வெவ்வேறு இயக்க முறைமைகளில் இயக்க முடியும், இது ஒரு விரிவான OS இணக்கத்தன்மை அணியை உருவாக்க உங்களை அனுமதிக்கிறது.
எடுத்துக்காட்டு: ஒரு GitHub Actions வேலைப்பாய்வு
Linux, macOS, மற்றும் Windows இல் இணையாக எங்கள் Tox சூழல்களை இயக்கும் ஒரு GitHub Actions வேலைப்பாய்வை உருவாக்குவோம்.
.github/workflows/ci.yml
இல் ஒரு கோப்பை உருவாக்கவும்:
name: CI on: [push, pull_request] jobs: test: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] python-version: ['3.8', '3.9', '3.10', '3.11'] steps: - name: Check out repository uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Install Tox run: pip install tox tox-gh-actions - name: Run Tox run: tox -e py
இந்த வேலைப்பாய்வை பகுப்பாய்வு செய்வோம்:
strategy.matrix
: இது எங்கள் CI அணியின் இதயம். GitHub Actions `os` மற்றும் `python-version`-ன் ஒவ்வொரு சேர்க்கைக்கும் ஒரு தனி வேலையை உருவாக்கும். இந்த கட்டமைப்புக்கு, அது 3 இயக்க முறைமைகள் × 4 பைதான் பதிப்புகள் = 12 இணைக் வேலைகள் ஆகும்.actions/setup-python@v4
: இந்த நிலையான செயல்பாடு ஒவ்வொரு வேலைக்கும் தேவையான குறிப்பிட்ட பைதான் பதிப்பை அமைக்கிறது.tox-gh-actions
: இது ஒரு பயனுள்ள Tox செருகுநிரல் ஆகும், இது CI சூழலில் உள்ள பைதான் பதிப்பை தானாகவே சரியான Tox சூழலுக்கு மேப் செய்கிறது. எடுத்துக்காட்டாக, பைதான் 3.9 இல் இயங்கும் வேலையில், `tox -e py` தானாகவே `tox -e py39` ஐ இயக்குவதற்குத் தீர்க்கும். இது உங்கள் CI ஸ்கிரிப்ட்டில் சிக்கலான தர்க்கத்தை எழுதுவதைத் தவிர்க்கிறது.
இப்போது, குறியீடு ஒவ்வொரு முறையும் தள்ளப்படும்போது, உங்கள் முழு சோதனை அணி மூன்று முக்கிய இயக்க முறைமைகளில் தானாகவே செயல்படுத்தப்படும். ஒரு மாற்றம் ஒரு இணக்கமின்மையை அறிமுகப்படுத்தியதா என்பது குறித்த உடனடி கருத்துகளை நீங்கள் பெறுகிறீர்கள், இது ஒரு உலகளாவிய பயனர் தளத்திற்கு நம்பிக்கையுடன் உருவாக்க உங்களை அனுமதிக்கிறது.
மேம்பட்ட உத்திகள் மற்றும் சிறந்த நடைமுறைகள்
{posargs}
உடன் கட்டளைகளுக்கு வாதங்களை அனுப்புதல்
சில சமயங்களில் உங்கள் சோதனை இயக்கத்திற்கு கூடுதல் வாதங்களை அனுப்ப வேண்டியிருக்கும். எடுத்துக்காட்டாக, நீங்கள் ஒரு குறிப்பிட்ட சோதனை கோப்பை இயக்க விரும்பலாம்: pytest tests/test_api.py
. Tox இதை {posargs}
மாற்றீடு மூலம் ஆதரிக்கிறது.
உங்கள் `tox.ini`-ஐ மாற்றவும்:
[testenv] deps = pytest commands = pytest {posargs}
இப்போது, நீங்கள் Tox-ஐ இவ்வாறு இயக்கலாம்:
tox -e py310 -- -k "test_login" -v
--
என்பது Tox-க்கு உரிய வாதங்களையும் கட்டளைக்கு உரிய வாதங்களையும் பிரிக்கிறது. அதற்குப் பிறகு வரும் அனைத்தும் `{posargs}` க்கு மாற்றப்படும். Tox `py310` சூழலுக்குள்: pytest -k "test_login" -v
ஐ இயக்கும்.
சுற்றுச்சூழல் மாறிகளைக் கட்டுப்படுத்துதல்
உங்கள் பயன்பாடு சுற்றுச்சூழல் மாறிகளின் அடிப்படையில் வித்தியாசமாக செயல்படலாம் (எ.கா., `DJANGO_SETTINGS_MODULE`). `setenv` திசையானது உங்கள் Tox சூழல்களுக்குள் இவற்றை கட்டுப்படுத்த உங்களை அனுமதிக்கிறது.
[testenv] setenv = PYTHONPATH = . MYAPP_MODE = testing [testenv:docs] setenv = SPHINX_BUILD = 1
வேகமான Tox இயக்கங்களுக்கான குறிப்புகள்
உங்கள் அணி வளரும்போது, Tox இயக்கங்கள் மெதுவாகலாம். அவற்றை விரைவுபடுத்துவதற்கான சில குறிப்புகள் இங்கே:
- இணை முறை: `tox -p auto` ஐ இயக்கவும், இது Tox உங்கள் சூழல்களை இணையாக, கிடைக்கும் CPU கோர்களின் எண்ணிக்கையைப் பயன்படுத்தி இயக்கும். நவீன இயந்திரங்களில் இது மிகவும் பயனுள்ளதாக இருக்கும்.
- தேர்ந்தெடுக்கப்பட்ட சூழல்களை மீண்டும் உருவாக்குதல்: இயல்பாக, Tox சூழல்களை மீண்டும் பயன்படுத்துகிறது. உங்கள் `tox.ini` அல்லது `requirements.txt` இல் உள்ள சார்புகள் மாறினால், சூழலை புதிதாக உருவாக்க Tox-க்கு சொல்ல வேண்டும். மறுகட்டமைப்புக் கொடியைப் பயன்படுத்தவும்: `tox -r -e py310`.
- CI கேச்சிங்: உங்கள் CI/CD குழாயில்,
.tox/
கோப்பகத்தை கேச் செய்யவும். இது சார்புகள் ஒவ்வொரு முறையும் பதிவிறக்கப்பட்டு நிறுவப்பட வேண்டியதில்லை என்பதால், அடுத்தடுத்த இயக்கங்களை கணிசமாக வேகப்படுத்தும், அவை மாறாத வரை.
நடைமுறையில் உலகளாவிய பயன்பாட்டு வழக்குகள்
உலகளாவிய சூழலில் வெவ்வேறு வகையான திட்டங்களுக்கு இது எவ்வாறு பொருந்தும் என்பதைப் பார்ப்போம்.
சூழல் 1: ஒரு திறந்த மூல தரவு பகுப்பாய்வு நூலகம்
நீங்கள் Pandas மற்றும் NumPy இல் கட்டமைக்கப்பட்ட ஒரு பிரபலமான நூலகத்தை பராமரிக்கிறீர்கள். உங்கள் பயனர்கள் உலகெங்கிலும் உள்ள தரவு விஞ்ஞானிகள் மற்றும் ஆய்வாளர்கள்.
- சவால்: நீங்கள் பல பைதான் பதிப்புகள், Pandas, NumPy ஐ ஆதரிக்க வேண்டும், மேலும் இது Linux சர்வர்கள், macOS மடிக்கணினிகள் மற்றும் Windows டெஸ்க்டாப்களில் வேலை செய்வதை உறுதிசெய்ய வேண்டும்.
- Tox தீர்வு:
envlist = {py39,py310,py311}-{pandas1,pandas2}-{numpy18,numpy19}
சரியான நூலக பதிப்புகளை ஒவ்வொரு சூழலுக்கும் நிறுவ, காரணி-நிபந்தனை அமைப்புகளை உங்கள் `tox.ini` பயன்படுத்தும். உங்கள் GitHub Actions வேலைப்பாய்வு அனைத்து மூன்று முக்கிய இயக்க முறைமைகளிலும் இந்த அணியை சோதிக்கும். இது பிரேசிலில் உள்ள ஒரு பயனர் பழைய Pandas பதிப்பைப் பயன்படுத்துவதையும், ஜப்பானில் உள்ள ஒரு பயனர் சமீபத்திய அடுக்கில் அதே நம்பகமான அனுபவத்தைப் பெறுவதையும் உறுதி செய்கிறது.
சூழல் 2: ஒரு கிளையண்ட் நூலகத்துடன் ஒரு நிறுவன SaaS பயன்பாடு
உங்கள் நிறுவனம், ஐரோப்பாவைத் தலைமையிடமாகக் கொண்டது, ஒரு SaaS தயாரிப்பை வழங்குகிறது. உங்கள் வாடிக்கையாளர்கள் பெரிய, உலகளாவிய பெருநிறுவனங்கள், அவர்களில் பலர் ஸ்திரத்தன்மைக்காக இயக்க முறைமைகள் மற்றும் பைதான்-ன் பழைய, நீண்ட கால ஆதரவு (LTS) பதிப்புகளைப் பயன்படுத்துகின்றனர்.
- சவால்: உங்கள் மேம்பாட்டுக் குழு நவீன கருவிகளைப் பயன்படுத்துகிறது, ஆனால் உங்கள் கிளையண்ட் நூலகம் பழைய நிறுவன சூழல்களுக்குப் பின்னோக்கி இணக்கமாக இருக்க வேண்டும்.
- Tox தீர்வு:
envlist = py38, py39, py310, py311
உங்கள் `tox.ini` அனைத்து சோதனைகளும் பைதான் 3.8 இல், இது வட அமெரிக்காவில் உள்ள ஒரு பெரிய வாடிக்கையாளரின் தரநிலையாக இருக்கலாம், பாஸ் செய்வதை உறுதி செய்கிறது. CI இல் இதை தானாகவே இயக்குவதன் மூலம், புதிய பைதான் பதிப்புகளில் மட்டுமே கிடைக்கும் தொடரியல் அல்லது நூலகங்களைப் பயன்படுத்தும் அம்சங்களை டெவலப்பர்கள் தற்செயலாக அறிமுகப்படுத்துவதைத் தடுக்கிறீர்கள், இது விலையுயர்ந்த வரிசைப்படுத்தல் தோல்விகளைத் தடுக்கிறது.
முடிவுரை: உலகளாவிய நம்பிக்கையுடன் அனுப்புங்கள்
பல-சூழல் சோதனை இனி ஒரு சொகுசு அல்ல; இது உயர் தரமான, தொழில்முறை மென்பொருளை உருவாக்குவதற்கான ஒரு அடிப்படை நடைமுறையாகும். Tox உடன் தானியக்கமாக்கலை ஏற்றுக்கொள்வதன் மூலம், இந்த சிக்கலான சவாலை ஒரு சீரமைக்கப்பட்ட, மீண்டும் செய்யக்கூடிய செயல்முறையாக மாற்றுகிறீர்கள்.
ஒரே `tox.ini` கோப்பில் உங்கள் ஆதரிக்கப்படும் சூழல்களை வரையறுத்து, அதை ஒரு CI/CD குழாயுடன் ஒருங்கிணைப்பதன் மூலம், நீங்கள் ஒரு சக்திவாய்ந்த தர வாயிலை உருவாக்குகிறீர்கள். இந்த வாயில் உங்கள் பயன்பாடு வலுவானது, இணக்கமானது மற்றும் ஒரு மாறுபட்ட, உலகளாவிய பார்வையாளர்களுக்கு தயாராக இருப்பதை உறுதி செய்கிறது. "இது எனது இயந்திரத்தில் வேலை செய்கிறது" என்ற பயங்கரமான சிக்கலைப் பற்றி நீங்கள் கவலைப்படுவதை நிறுத்திவிட்டு, அது ஒவ்வொருவரின் இயந்திரத்திலும் வேலை செய்யும் என்ற நம்பிக்கையுடன் குறியீட்டை அனுப்பத் தொடங்கலாம், அவர்கள் உலகில் எங்கிருந்தாலும்.