استفاده از GitLab CI برای پروژه پایتون

استفاده از GitLab CI برای پروژه پایتون

در دنیای توسعه نرم‌افزار مدرن، اتوماسیون فرآیند ساخت، تست و استقرار (Deployment) نرم‌افزار امری ضروری است. GitLab CI/CD یک ابزار قدرتمند و یکپارچه در GitLab است که به توسعه‌دهندگان امکان می‌دهد این فرآیندها را به صورت خودکار انجام دهند. این مقاله به بررسی نحوه استفاده از GitLab CI برای پروژه‌های پایتون می‌پردازد و یک راهنمای گام به گام برای پیاده‌سازی یک خط لوله CI/CD ساده ارائه می‌دهد. این آموزش در دسته ‘دیپلوی و DevOps با پایتون’ قرار می‌گیرد.

مقدمه‌ای بر GitLab CI/CD

GitLab CI/CD یک سیستم Continuous Integration و Continuous Delivery/Deployment است. به عبارت ساده‌تر، هر بار که تغییری در کد پروژه اعمال می‌شود، GitLab CI/CD به طور خودکار فرآیندهای تعریف شده را اجرا می‌کند. این فرآیندها می‌توانند شامل موارد زیر باشند:

  • اجرای تست‌های واحد (Unit Tests)
  • اجرای تست‌های یکپارچگی (Integration Tests)
  • ساخت بسته‌های نرم‌افزاری (Packages)
  • استقرار نرم‌افزار در محیط‌های مختلف (Development, Staging, Production)

GitLab CI/CD با استفاده از یک فایل پیکربندی به نام .gitlab-ci.yml کار می‌کند. این فایل در ریشه پروژه قرار می‌گیرد و شامل دستورالعمل‌هایی است که GitLab CI/CD باید دنبال کند.

پیش‌نیازها

قبل از شروع، اطمینان حاصل کنید که موارد زیر را دارید:

  • یک حساب کاربری در GitLab
  • یک پروژه پایتون در GitLab
  • آشنایی اولیه با مفاهیم Git و GitLab
  • نصب Python و pip در محیط محلی (برای تست فایل پیکربندی)

ایجاد فایل .gitlab-ci.yml

فایل .gitlab-ci.yml قلب خط لوله CI/CD شماست. این فایل به GitLab می‌گوید که چه کاری باید انجام دهد. در اینجا یک مثال ساده از یک فایل .gitlab-ci.yml برای یک پروژه پایتون آورده شده است:

stages:
  - test
  - build

test:
  image: python:3.9
  stage: test
  script:
    - pip install -r requirements.txt
    - python -m unittest discover

build:
  image: python:3.9
  stage: build
  script:
    - pip install -r requirements.txt
    - python setup.py sdist bdist_wheel
  artifacts:
    paths:
      - dist/

بیایید این فایل را خط به خط بررسی کنیم:

  • stages:: این بخش مراحل مختلف خط لوله را تعریف می‌کند. در این مثال، دو مرحله داریم: test و build.
  • test:: این بخش یک شغل (Job) به نام test را تعریف می‌کند.
    • image: python:3.9: این خط تصویر Docker مورد استفاده برای اجرای این شغل را مشخص می‌کند. در اینجا از تصویر رسمی پایتون 3.9 استفاده می‌کنیم.
    • stage: test: این خط مشخص می‌کند که این شغل در مرحله test اجرا می‌شود.
    • script:: این بخش دستوراتی را که باید در این شغل اجرا شوند را مشخص می‌کند.
      • pip install -r requirements.txt: این دستور وابستگی‌های پروژه را از فایل requirements.txt نصب می‌کند.
      • python -m unittest discover: این دستور تست‌های واحد پروژه را با استفاده از ماژول unittest اجرا می‌کند.
  • build:: این بخش یک شغل به نام build را تعریف می‌کند.
    • image: python:3.9: مشابه شغل test، از تصویر رسمی پایتون 3.9 استفاده می‌کنیم.
    • stage: build: این خط مشخص می‌کند که این شغل در مرحله build اجرا می‌شود.
    • script:: این بخش دستوراتی را که باید در این شغل اجرا شوند را مشخص می‌کند.
      • pip install -r requirements.txt: این دستور وابستگی‌های پروژه را نصب می‌کند.
      • python setup.py sdist bdist_wheel: این دستور بسته‌های نرم‌افزاری پروژه را در قالب‌های sdist و bdist_wheel ایجاد می‌کند.
    • artifacts:: این بخش فایل‌ها یا دایرکتوری‌هایی را که باید پس از اتمام شغل ذخیره شوند را مشخص می‌کند.
      • paths: - dist/: این خط مشخص می‌کند که دایرکتوری dist/ (که حاوی بسته‌های نرم‌افزاری است) باید ذخیره شود.

فایل requirements.txt

فایل requirements.txt لیستی از وابستگی‌های پروژه شما را مشخص می‌کند. این فایل باید در ریشه پروژه قرار داشته باشد. یک مثال از فایل requirements.txt:

requests
pytest

فایل setup.py

فایل setup.py اطلاعات مربوط به پروژه شما را مشخص می‌کند، مانند نام، نسخه، نویسنده و وابستگی‌ها. این فایل نیز باید در ریشه پروژه قرار داشته باشد. یک مثال از فایل setup.py:

from setuptools import setup, find_packages

setup(
    name='my-python-project',
    version='0.1.0',
    author='Your Name',
    author_email='your.email@example.com',
    packages=find_packages(),
    install_requires=[
        'requests',
        'pytest',
    ],
)

تست خط لوله CI/CD

پس از ایجاد فایل .gitlab-ci.yml و فایل‌های requirements.txt و setup.py، می‌توانید تغییرات را به GitLab push کنید. GitLab به طور خودکار خط لوله CI/CD را اجرا می‌کند. می‌توانید وضعیت خط لوله را در بخش CI/CD پروژه خود در GitLab مشاهده کنید.

اضافه کردن مراحل بیشتر

می‌توانید مراحل بیشتری به خط لوله CI/CD خود اضافه کنید. به عنوان مثال، می‌توانید یک مرحله برای استقرار نرم‌افزار در یک محیط تست یا یک محیط تولید اضافه کنید. در اینجا یک مثال از یک فایل .gitlab-ci.yml با یک مرحله استقرار آورده شده است:

stages:
  - test
  - build
  - deploy

test:
  image: python:3.9
  stage: test
  script:
    - pip install -r requirements.txt
    - python -m unittest discover

build:
  image: python:3.9
  stage: build
  script:
    - pip install -r requirements.txt
    - python setup.py sdist bdist_wheel
  artifacts:
    paths:
      - dist/

deploy:
  image: python:3.9
  stage: deploy
  script:
    - pip install -r requirements.txt
    - # دستورات استقرار در اینجا قرار می‌گیرند
    - echo "Deploying to production..."
  only:
    - main

در این مثال، یک مرحله deploy اضافه کرده‌ایم. این مرحله فقط در شاخه main اجرا می‌شود. دستورات استقرار در بخش script قرار می‌گیرند. این دستورات می‌توانند شامل کپی کردن فایل‌ها به یک سرور، اجرای دستورات پایگاه داده و غیره باشند.

متغیرهای محیطی

می‌توانید از متغیرهای محیطی در فایل .gitlab-ci.yml خود استفاده کنید. این متغیرها می‌توانند برای ذخیره اطلاعات حساس مانند رمزهای عبور و کلیدهای API استفاده شوند. می‌توانید متغیرهای محیطی را در بخش Settings > CI/CD > Variables پروژه خود در GitLab تعریف کنید.

نکات و ترفندها

  • از تصاویر Docker سبک و بهینه استفاده کنید.
  • کد خود را به طور منظم تست کنید.
  • از کش (Cache) برای سرعت بخشیدن به فرآیند ساخت استفاده کنید.
  • از Artifacts برای ذخیره فایل‌های مهم استفاده کنید.
  • از متغیرهای محیطی برای ذخیره اطلاعات حساس استفاده کنید.

نتیجه‌گیری

GitLab CI/CD یک ابزار قدرتمند برای اتوماسیون فرآیند ساخت، تست و استقرار نرم‌افزار است. با استفاده از GitLab CI/CD، می‌توانید کیفیت کد خود را بهبود بخشید، زمان عرضه به بازار را کاهش دهید و فرآیند توسعه نرم‌افزار خود را ساده‌تر کنید. این مقاله یک راهنمای گام به گام برای پیاده‌سازی یک خط لوله CI/CD ساده برای پروژه‌های پایتون ارائه داد. با استفاده از این دانش، می‌توانید خط لوله‌های CI/CD پیچیده‌تری را برای پروژه‌های خود ایجاد کنید.

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *