استفاده از 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 پیچیدهتری را برای پروژههای خود ایجاد کنید.

بدون دیدگاه