تعارف

هدف : قارئ کو رہنماییت دیتے ہوئے، ایک Python ایپلیکیشن کے لیے سادہ لیکن مؤثر CI/CD پائپ لائن کی ترتیبات کرنے میں معاونت کرنا، جس میں PyPI پر خودکار ڈپلویمنٹ شامل ہو۔

ڈویلپمنٹ کے پروسیسز کی خودکاری موجودہ پروژیکٹس میں لازمی بن گئی ہے۔ ایک خوبصورت ڈیزائن کیا گیا CI/CD pipeline نہ صرف ڈیولپمنٹ سیکل کے ابتداء میں ریگریشنز کا تعیناتی کرنے کی اجازت دیتا ہے، بلکہ ڈپلویمنٹ کے پروسیس کو مکمل طور پر خودکار بنانے میں بھی مدد کرتا ہے۔

اس مضامین میں، ہم ایک Python ایپلیکیشن کے لیے GitHub Actions کے ساتھ مکمل پائلائن کی ترتیبات کا جائزہ لین گے، مستقل انٹگریگیشن (CI) سے مستقل ڈپلوائیمنٹ (CD) تک PyPI پر۔

پائپ لائن کی معماری

ہمارا پائپ لائن دو مختلف ورک فلو پر مشتمل ہے:

  1. سی آئی پائپ لائن: ہر push اور pull request پر چلایا جاتا ہے

  2. سی دی پائلپائن: sarf GitHub keys releases keys doran triggered

@startuml
!theme plain

package "گیٹ‌هاب ریپوزٹری" {
  [Source Code] as source
  [GitHub Actions] as actions
}

package "سی آئی پیپ لائن" {
  [Checkout] as checkout_ci
  [Setup Python] as python_ci
  [Install Dependencies] as deps_ci
  [Linting (Ruff)] as lint
  [Unit Tests] as tests
}

package "CD پائپ لائن" {
  [Checkout] as checkout_cd
  [Setup Python] as python_cd
  [Build Package] as build
  [Publish to PyPI] as pypi
}

source --> actions : Push/PR
actions --> checkout_ci
checkout_ci --> python_ci
python_ci --> deps_ci
deps_ci --> lint
lint --> tests

source --> actions : Release
actions --> checkout_cd : On Release
checkout_cd --> python_cd
python_cd --> build
build --> pypi

@enduml

CI پائلائن کی کنفیگریشن

CI ورکفلو کی ساخت

CI workflow ہر کوڈ میں ہونے والی ہر योगदान کو تصدیق کرنے کے لیے ڈیزائن کیا گیا ہے۔ اس کی مکمل تنظیم یہاں دی گئی ہے:

name: CI/CD Pipeline

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v4

    - name: Set up Python
      uses: actions/setup-python@v5
      with:
        python-version: '3.x'

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt
        pip install ruff pytest pytest-mock

    - name: Run Linting (Ruff)
      run: ruff check .

    - name: Run Tests (Pytest)
      run: pytest

CI کے مراحل کا تجزیہ

1. ٹرگرز (on)

----
----
----
----
on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main
----

پائلائن اس پر ٹریجر ہوتا ہے: ہر پش شاخہ پر`main` - ہر pull request کی طرف`main`

یہ رویہ یہ یقین دلاتی ہے کہ بنیادی کوڈ مستحکم رہے اور ہر مشارکت کو انٹیگریشن سے پہلے تصدیق کی جاتی ہے۔

==== 2. نفاذ کا ماحول

----

runs-on: ubuntu-latest

Ubuntu Latest Python کے اکثر پراجیکٹس کے لیے عمل کردگی، خرج اور ہم آہنگی کے درمیان ایک اچھا توازن فراہم کرتا ہے۔

==== 3. کوڈ کا چیک آؤٹ

----

- name: Checkout code uses: actions/checkout@v4

عمل`checkout@v4`یہ ریپازٹری کا سروس کوڈ obtains. ورژن v4 کی کارکردگی اور محفوظیت میں بہتری لاتی ہے۔

==== 4. پایتھن کی کنفیگریشن

- name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.x'

استعمال کا`'3.x'`یہ خودکار طور پر Python 3 کی آخری مستحکم ورژن استعمال کرنے کی اجازت دیتا ہے، جس سے رکھراحت آسان ہو جاتی ہے۔

==== 5. Dependencies کی انسٹالیشن

----

- name: Install dependencies run: | python -m pip install --upgrade pip pip install -r requirements.txt pip install ruff pytest pytest-mock

یہ مرحلہ : - پیپ کو سب سے نئی ورژن میں اپ ڈیٹ کریں - پروجیکٹ کی انحصارات انسٹال کریں - آلات توسیع شامل کریں (linting اور ٹیسٹس)

==== 6. لنٹنگ ساث Ruff

- name: Run Linting (Ruff) run: ruff check .

**راف**بہت تیز Python لینٹر جو Rust میں لکھا گیا ہے۔ یہ Flake8، Black، isort کے فیچرز کو ایک ہی مؤثر ٹول میں جمع کرتا ہے۔

==== 7. ٹسٹوں کا تنفیذ

- name: Run Tests (Pytest) run: pytest

Pytest مکمل ٹیسٹ سٹائل چلتا ہے جس سے یقین دلایا جاتا ہے کہ تبدیلیاں رجresseions کا سبب نہیں بنتی۔

== داپلويمانٹ کی پائپ لائن کی تنظیم (CD)

=== سی ڈی ورک فلو کی ساخت

سی ڈی ورک فلو صرف گِٹ ہب ریلیزز پر trigger ہوتا ہے اور PyPI پر پابلیش کرنے کی عملية خودکار بناتی ہے :

[source,yaml]
----
name: Publish to PyPI

on:
  release:
    types:
      - published

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v4

    - name: Set up Python
      uses: actions/setup-python@v5
      with:
        python-version: '3.x'

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install setuptools wheel twine

    - name: Build and publish
      env:
        TWINE_USERNAME: __token__
        TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
      run: |
        python setup.py sdist bdist_wheel
        twine upload dist/*
----

=== سی ڈی کے مراحل کا تجزیہ

==== 1. ٹریگر Release

on: release: types: - published

سی ڈی pipeline صرف گٹ هب ریلز کی פרס کے دوران چلتا ہے۔ یہApproach ڈپلویمنٹس کا دقیق کنٹرول یقینی بناتی ہے۔

==== 2. بِلڈ ٹولز کی تنصیب

```yaml
----
----
----
----
pip install setuptools wheel twine
----

- **setuptools**: پایتھن کے پیکنگ آلات - **پہیہ**: موجودہ Python کی تقسیم کا فاریٹ - **رسی**: PyPI پر آپلوڈ کرنے کا محفوظ اُزَر

==== 3. احراز شناخت کی کنفیگریشن

----

env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}

اصالت پذیری ایک PyPI API ٹوکن استعمال کرتی ہے جو گیت ہب کے راز کے طور پر محفوظ ہے، اور یہ روایتی credentials سے زیادہ محفوظ ہے۔

==== 4. بناؤ اور شائع کرنا

----

run: | python setup.py sdist bdist_wheel twine upload dist/*

- `sdist`: ایک منبعی توزیع بنائیں - `bdist_wheel`: ایک ویلیل بنائیں (بائنری ڈسپرشن) - `twine upload`: PyPI پر ڈسٹریبیوشنز شائع کریں

== پائیتھن پیکیج کی تنظیمات

=== setup.py کی ساخت

پائپ لائن کام کرنے کے لیے, آپ کے پروجيكت کو ایک فائل شامل کرنا ضروری ہے`setup.py`:

[source,python]
----
from setuptools import setup, find_packages

with open("README.adoc", "r", encoding="utf-8") as fh:
    long_description = fh.read()

setup(
    name="playlist-downloader",
    version="1.0.0",
    author="Votre Nom",
    author_email="[email protected]",
    description="CLI tool for managing YouTube playlists",
    long_description=long_description,
    long_description_content_type="text/plain",
    url="https://github.com/cheroliv/playlist-downloader",
    packages=find_packages(),
    classifiers=[
        "Development Status :: 4 - Beta",
        "Intended Audience :: Developers",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
        "Programming Language :: Python :: 3",
        "Programming Language :: Python :: 3.8",
        "Programming Language :: Python :: 3.9",
        "Programming Language :: Python :: 3.10",
        "Programming Language :: Python :: 3.11",
    ],
    python_requires=">=3.8",
    install_requires=[
        "typer>=0.9.0",
        "yt-dlp>=2023.1.6",
        "google-api-python-client>=2.70.0",
        "google-auth-oauthlib>=0.7.1",
        "pymonad>=2.4.0",
        "pyyaml>=6.0",
    ],
    entry_points={
        "console_scripts": [
            "playlist-downloader=cli:app",
        ],
    },
)
----

=== setup.py کے کلیدی نکات

1. **میٹا ڈیٹا**نام، نسخہ، مؤلف، تفصیل
2. **معتمدیات**:ضروري پيچجوں کی فہرست
3. **دخول کے نقاط**: كلائی کے منافذ شدہ فرمان
4. **طبقہ بندی کرنے والے**: میٹا ڈیٹا کے لیے PyPI

== گیت ہب سیکریٹس کے ساتھ سیکیورٹی

=== PyPI ٹوکن کی کنفیگریشن

1. **PyPI پر API ٹوکن بنائیں**:

- PyPI پر لاگ ان کریں - Account Settings > API tokens پر جائیں - ایک نئی ٹوکن بنائیں مُناسب اجازات کے ساتھ

1. **GitHub میں سیکریٹ شامل کریں** :

- ریپوزیٹری سٹنگز > رازوں اور متغیرات > ایکشنز - ایک نیا راز بنام بناؤ`PYPI_API_TOKEN` - اپنا PyPI ٹوکن پیسٹ کریں

[plantuml, secrets-flow, svg]
----
@startuml
!theme plain

actor Developer as dev
participant "گٹھب ریپازٹری" as repo
participant "گٹ ہب ایکشنز" as actions
participant PyPI

dev -> repo : Configure PYPI_API_TOKEN secret
repo -> actions : Trigger CD pipeline on release
actions -> actions : Access secret securely
actions -> PyPI : Authenticate with token
PyPI -> PyPI : Validate and publish package

note over actions, PyPI
  Token never exposed in logs
  Automatic rotation possible
end note

@enduml
----

== مکمل ڈپلویمنٹ وورکفلو

=== ڈپلویمنٹ کی ترتیب

[plantuml, deployment-sequence, svg]
----
@startuml
!theme plain

actor Developer as dev
participant "مقامی Git" as git
participant "GitHub" as github
participant "گیٹهاب ایکشنز" as actions
participant PyPI
participant "انتهاء استعمال کرنے والے" as users

dev -> git : git tag v1.0.0
dev -> git : git push origin v1.0.0
git -> github : Push tag
dev -> github : Create release from tag
github -> actions : Trigger CD pipeline
actions -> actions : Checkout code
actions -> actions : Setup Python environment
actions -> actions : Install build tools
actions -> actions : Build distributions (sdist + wheel)
actions -> PyPI : Upload to PyPI with token
PyPI -> PyPI : Validate and publish
users -> PyPI : pip install playlist-downloader

note over dev, github
  Release creation can be automated
  or done manually through GitHub UI
end note

@enduml
----

=== پائلائن کی حالات

[plantuml, pipeline-states, svg]
----
@startuml
!theme plain

[*] --> Idle

Idle --> CI_Running : Push/PR created
CI_Running --> CI_Success : All checks pass
CI_Running --> CI_Failed : Linting/Tests fail
CI_Success --> Idle : Merge completed
CI_Failed --> Idle : Fix and retry

Idle --> CD_Running : Release published
CD_Running --> CD_Success : Package published
CD_Running --> CD_Failed : Build/Upload error
CD_Success --> Idle : Package available on PyPI
CD_Failed --> Idle : Fix and retry release

note on link #red : Blocks merge
note on link #green : Allows deployment

@enduml
----

== بہترین طریقے اور بهتریارات

=== 1. ورژنوں کی نگرانی

سیمانٹک گٹ ٹیگز استعمال کریں :

git tag -a v1.2.3 -m "Release version 1.2.3" git push origin v1.2.3

=== 2. میٹرکس ٹیسٹس

پایتھن کے مختلف ورژنوں پر ٹیسٹ کرنے کے لیے :

----

strategy: matrix: python-version: [3.8, 3.9, "3.10", "3.11"]

=== 3. اسقاطات کی کش

کیش کے ساتھ بِلڈز کو تیز کریں:

- name: Cache pip dependencies uses: actions/cache@v3 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}

=== 4. ڈپلوائی کے ماحول

کنٹرولڈ ڈپلوئمنٹس کے لیے گت‌هاب ماحولات استعمال کریں :

jobs: deploy: environment: production runs-on: ubuntu-latest

1. **GitHub میں سیکرٹ شامل کریں**براہ کرم اپنی `API key` فراہم کریں۔

=== استعمال کے کیس ڈائاگرام

[plantuml, use-cases, svg]
----
@startuml
!theme plain

left to right direction

actor "ڈویلپر" as dev
actor "گیٹ هب ایکشنس" as ga
actor "اندراج صارف" as user

package "CI/CD نظام" {
  usecase "لنٹنگ چلائیں" as lint
  usecase "ٹیسٹس چلائیں" as test
  usecase "بیلڈ پیکیج" as build
  usecase "PyPI پر اشاعت کریں" as publish
  usecase "Release بنائیں" as release
}

dev --> lint : Pushes code
dev --> test : Pushes code
dev --> release : Creates release
ga --> build : On release trigger
ga --> publish : After successful build
user --> publish : Downloads package

lint .> test : triggers
test .> build : on success
build .> publish : on success

@enduml
----

=== ڈپلویمنٹ کی معماری

[plantuml, deployment-architecture, svg]
----
@startuml
!theme plain

cloud "گیٹ ہاب" {
  [Source Repository]
  [GitHub Actions]
  [Secrets Store]
}

cloud "PyPI" {
  [Package Registry]
  [Distribution Files]
}

node "CI/CD پائپ لائن" {
  [Linting]
  [Testing]
  [Building]
  [Publishing]
}

[Source Repository] --> [GitHub Actions] : Triggers
[GitHub Actions] --> [Linting]
[Linting] --> [Testing]
[Testing] --> [Building]
[Building] --> [Publishing]
[Publishing] --> [Package Registry] : Uploads
[Secrets Store] --> [Publishing] : Provides token

note as N1
  Secure token-based
  authentication
end note

[Secrets Store] .. N1

@enduml
----

== نظارت اور ڈی‌بگنگ

=== لوگز اور مانیٹرنگ

GitHub Actions ہر مرحلے کے لیے تفصیل سے لاگز فراہم کرتا ہے۔ ڈبگ کرنے کے لیے :

1. **جانچیں لوگز**ہر سٹپ کا
2. **ڈیباگ کو فعال کریں**کے ساتھ`ACTIONS_STEP_DEBUG`
3. **آرٹیکٹس استعمال کریں**بیلڈ فائلز محفوظ کرنے

- name: Upload build artifacts uses: actions/upload-artifact@v3 if: failure() with: name: build-logs path: build/

=== نوٹیفیکیشنز

سلیک یا ای میل نوٹیفیکیشن شامل کریں :

```yaml
----
----
----
----
- name: Notify on failure
  if: failure()
  uses: 8398a7/action-slack@v3
  with:
    status: ${{ job.status }}
    webhook_url: ${{ secrets.SLACK_WEBHOOK }}
----

== نتیجہ

گٹ ہب ایکشنز کے ساتھ مضبوط CI/CD پائلائن کی وضاحت کرنے سے ڈویلپمنٹ کا تجربہ بالکل بدل جاتا ہے۔ لنٹنگ، ٹیسٹس اور ڈپلائمنٹ کو خودکار بناتے ہوئے، آپ :

- **غلطیاں کم کریں**پروڈکشن میں - **چکروں کی رفتار بڑھاؤ**ترقی کا - **اعتماد کو بہتر بنائیں**آپ کے ریلیز میں - **تعاون کو آسان بنائیں**ٹیمی طور پر

یہ لائن پراپلائن مختلف قسم کے Python پروجیکٹ کے لیے لنٹنگ ٹولز، ٹیسٹ فریم ورک یا ڈپلویمنٹ کے مقصد میں ایڈجسٹ کر کے مناسب بنایا جا سکتا ہے۔

یہ ورکفلوز کی ترتیبیات میں ہونے والا ابتدائی سرمایہ کاری، ڈپلویمنٹ کے دوران وقت کی بچت اور دستی غلطیاں میں کمی کے باعث جلداً واپس ہو جاتا ہے۔

== اضافی وسائل

- https://docs.github.com/en/actions[گیٹ‌هاب ایکشنز کی دستاویزات] - https://packaging.python.org/[پائیٹن پیکینگ گائیڈ] - https://docs.pytest.org/[ڈاکیومینٹیشن Pytest] - https://docs.astral.sh/ruff/[دستاویزات Ruff] - https://twine.readthedocs.io/[دستاویزات Twine]

✅ کارآمد پائلائن پہنچ گیا ! آپ کے پاس اب ایک سادہ CI/CD پائلائن ہے جس سے آپ اپنی ٹیسٹس خودکار کر سکتے ہیں اور اپنا Python پکیج PyPI پر GitHub Actions سے مباشرہPublish کر سکتے ہیں۔

مگر، یہ پائلائن خود بخواہ minimalist رہتا ہے۔ یہ ابھی تک بعض ضروری پہلوؤں کو پروفیشنل ماحول میں پوری طرح ڈھک نہیں پاتا :

پائیتون کے متعدد ورژنوں کے ٹیسٹ،

خودکار سیکورٹی تجزیہ,

Test PyPI کے ذریعے ترقیاتی ڈپلویمنٹ,

پائپ لائن کی نگرانی اور میٹرکس,

نسخہ بندی کی خودکاری اور مودرن بہترین طریقے کیinteгриشن (pyproject.toml).

اگلے حصے میں ہم ایک اعلیٰ سطح پر منتقل ہوں گے۔ آپ سیکھیں گے کہ اس بنیادی pipeline کو یکسانی صنعت کے ڈپلومینٹ کی زنجیر (industrial deployment chain) میں تبدیل کریں گے jo مضبوط، محفوظ اور إنتاجی Python پروژیز کے لیے تیار ہو۔
----
----

متعدد پائیتھن ورژنز پر ٹیسٹ کرنے کے لیے:

----

strategy: matrix: python-version: [3.8, 3.9, "3.10", "3.11"]

=== 3. ڈیپینڈینسیز کیش (Cache des Dépendances)

کیش (cache) کے ساتھ بلڈز کو تیز کریں:

```yaml
----
----
- name: Cache pip dependencies
  uses: actions/cache@v3
  with:
    path: ~/.cache/pip
    key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
----

=== 4. تعیناتی کے ماحول (Deployment Environments)

کنٹرول شدہ تعیناتیوں (deployments) کے لیے GitHub انوائرنمنٹس کا استعمال کریں:

----

jobs: deploy: environment: production runs-on: ubuntu-latest

== استعمال کے کیسز اور آرکیٹیکچر

=== یوز کیس ڈایاگرام (Diagramme de Cas d'Usage)

[plantuml, use-cases, svg]
----
@startuml
!theme plain

left to right direction

actor "ڈویلپر" as dev
actor "GitHub Actions" as ga
actor "اینڈ یوزر" as user

package "CI/CD سسٹم" {
  usecase "لنٹنگ چلائیں" as lint
  usecase "ٹیسٹ Execute کریں" as test
  usecase "پیکج Build کریں" as build
  usecase "PyPI پر شائع کریں" as publish
  usecase "ریلیز بنائیں" as release
}

dev --> lint : Pushes code
dev --> test : Pushes code
dev --> release : Creates release
ga --> build : On release trigger
ga --> publish : After successful build
user --> publish : Downloads package

lint .> test : triggers
test .> build : on success
build .> publish : on success

@enduml
----

=== ڈیپلائمنٹ کا آرکیٹیکچر

[plantuml, deployment-architecture, svg]
----
@startuml
!theme plain

cloud "GitHub" {
  [Source Repository]
  [GitHub Actions]
  [Secrets Store]
}

cloud "PyPI" {
  [Package Registry]
  [Distribution Files]
}

node "CI/CD پائپ لائن" {
  [Linting]
  [Testing]
  [Building]
  [Publishing]
}

[Source Repository] --> [GitHub Actions] : Triggers
[GitHub Actions] --> [Linting]
[Linting] --> [Testing]
[Testing] --> [Building]
[Building] --> [Publishing]
[Publishing] --> [Package Registry] : Uploads
[Secrets Store] --> [Publishing] : Provides token

note as N1
سکیور ٹوکن tabadul-based
تصدیق
end note

[Secrets Store] .. N1

@enduml
----

== نگرانی اور ڈیبگنگ

=== لاگز اور مانیٹرنگ

GitHub Actions ہر مرحلے کے لیے تفصیلی لاگز فراہم کرتا ہے۔ ڈیبگ کرنے کے لیے:

1. **لاگز (logs) کا معائنہ کریں**ہر `step` کے
2. **ڈیبگ کو فعال کریں**کے ساتھ`ACTIONS_STEP_DEBUG`
3. **آرٹِفیکٹس استعمال کریں**بلڈ فائلوں کو محفوظ کرنے کے لیے

```yaml
----
----
- name: Upload build artifacts
  uses: actions/upload-artifact@v3
  if: failure()
  with:
    name: build-logs
    path: build/
----

=== نوٹیفیکیشنز

سلیک (Slack) یا ای میل نوٹیفیکیشنز شامل کریں:

----

- name: Notify on failure if: failure() uses: 8398a7/action-slack@v3 with: status: ${{ job.status }} webhook_url: ${{ secrets.SLACK_WEBHOOK }}

== نتیجہ

GitHub Actions کے ساتھ ایک مضبوط CI/CD پائپ لائن کا قیام ڈویلپمنٹ کے تجربے کو مکمل طور پر بدل دیتا ہے۔ لنٹنگ، ٹیسٹنگ اور ڈیپلائمنٹ کو خودکار بنا کر، آپ:

- **غلطیوں کو کم کریں**پروڈکشن میں - **سائیکلز کو تیز کریں**ترقی کے - **اعتماد میں اضافہ کریں**آپ کے ریلیزز میں - **تعاون کو آسان بنائیں**ٹیم میں

اس پائپ لائن کو لنٹنگ ٹولز، ٹیسٹنگ فریم ورکس، یا ڈیپلائمنٹ کی منزلوں کو ایڈجسٹ کر کے مختلف قسم کے پائتھون (Python) پروجیکٹس کے مطابق ڈھالا جا سکتا ہے۔

ان ورک فلو (workflows) کی ترتیب میں ابتدائی سرمایہ کاری، تعیناتیوں (deployments) کے دوران وقت کی بچت اور دستی غلطیوں میں کمی کے ذریعے جلد ہی پورا ہو جاتا ہے۔

== اضافی وسائل

- https://docs.github.com/en/actions[GitHub Actions کی دستاویزات] - https://packaging.python.org/[پائتھن پیکیجنگ گائیڈ] - https://docs.pytest.org/[Pytest دستاویزات] - https://docs.astral.sh/ruff/[Ruff کی دستاویزات] - https://twine.readthedocs.io/[ٹوائن (Twine) کی دستاویزات]

✅ فعال پائپ لائن حاصل ہو گئی! اب آپ کے پاس ایک سادہ CI/CD پائپ لائن ہے جو آپ کو اپنے ٹیسٹ خودکار بنانے اور براہ راست GitHub Actions سے اپنا Python پیکیج PyPI پر شائع کرنے کی اجازت دیتی ہے۔

تاہم، یہ پائپ لائن جان بوجھ کر سادہ رکھی گئی ہے۔ یہ ابھی تک پیشہ ورانہ سیاق و سباق میں بعض ناگزیر پہلوؤں کا احاطہ نہیں کرتی:

پائتھن کے کثیر ورژنز کے ٹیسٹ،

خودکار سیکیورٹی تجزیہ،

Test PyPI کے ذریعے بتدریج تعیناتی،

پائپ لائن کی نگرانی اور میٹرکس،

ورژننگ کی خودکاری اور جدید بہترین طریقوں (pyproject.toml) کی انٹیگریشن۔

اگلے حصے میں، ہم اگلے مرحلے پر جائیں گے۔ آپ سیکھیں گے کہ اس بنیادی پائپ لائن کو کس طرح ایک حقیقی صنعتی، مضبوط اور محفوظ ڈیپلائمنٹ چین میں تبدیل کیا جائے، جو پروڈکشن کے پائتھون (Python) پروجیکٹس کے لیے تیار ہو۔

متعلقہ مضامین