استفاده از GitHub Actions برای CI/CD در پروژههای پایتون
در دنیای توسعه نرمافزار مدرن، اتوماسیون فرآیندهای ساخت، تست و استقرار (CI/CD) به یک ضرورت تبدیل شده است. این فرآیندها به تیمهای توسعه کمک میکنند تا نرمافزار را با سرعت و اطمینان بیشتری به بازار عرضه کنند. GitHub Actions یک پلتفرم CI/CD قدرتمند است که به طور مستقیم در GitHub ادغام شده و امکان اتوماسیون این فرآیندها را برای پروژههای پایتون فراهم میکند. این مقاله به بررسی جامع استفاده از GitHub Actions برای CI/CD در پروژههای پایتون میپردازد.
مقدمهای بر CI/CD
CI/CD مخفف Continuous Integration (ادغام مداوم) و Continuous Delivery/Deployment (تحویل/استقرار مداوم) است. ادغام مداوم به فرآیند ادغام مداوم تغییرات کد از سوی توسعهدهندگان مختلف در یک مخزن مرکزی اشاره دارد. این فرآیند معمولاً شامل اجرای خودکار تستها برای اطمینان از اینکه تغییرات جدید با کد موجود سازگار هستند و هیچ مشکلی ایجاد نمیکنند، میشود. تحویل مداوم فراتر از ادغام مداوم رفته و فرآیند آمادهسازی کد برای استقرار را خودکار میکند. در نهایت، استقرار مداوم، فرآیند استقرار خودکار کد در محیطهای مختلف (مانند توسعه، تست و تولید) را شامل میشود.
GitHub Actions چیست؟
GitHub Actions یک پلتفرم CI/CD است که به شما امکان میدهد گردشکارهای خودکار را مستقیماً در مخزن GitHub خود ایجاد کنید. این گردشکارها میتوانند به رویدادهای مختلفی در مخزن شما واکنش نشان دهند، مانند push کد، pull request، یا زمانبندی شده. GitHub Actions از یک زبان YAML برای تعریف گردشکارها استفاده میکند که به راحتی قابل خواندن و ویرایش است. یکی از مزایای اصلی GitHub Actions، ادغام عمیق آن با GitHub است. این بدان معناست که شما میتوانید به راحتی به مخزن خود، issues، pull requests و سایر منابع GitHub دسترسی داشته باشید.
ساختار یک گردشکار GitHub Actions
یک گردشکار GitHub Actions از یک یا چند job تشکیل شده است. هر job در یک runner اجرا میشود که میتواند یک ماشین مجازی لینوکس، ویندوز یا macOS باشد. هر job شامل یک یا چند step است که دستوراتی هستند که باید اجرا شوند. هر step میتواند یک اسکریپت shell، یک دستور پایتون یا یک action باشد. Actions قطعات کد قابل استفاده مجدد هستند که میتوانند برای انجام وظایف رایج مانند ساخت، تست و استقرار استفاده شوند. فایل تعریف گردشکار (workflow) معمولاً در دایرکتوری .github/workflows در مخزن شما قرار میگیرد.
ایجاد یک گردشکار CI برای پروژه پایتون
بیایید یک گردشکار CI ساده برای یک پروژه پایتون ایجاد کنیم. این گردشکار کد را بررسی میکند، وابستگیها را نصب میکند، تستها را اجرا میکند و گزارشهای تست را منتشر میکند. فایل .github/workflows/ci.yml را با محتوای زیر ایجاد کنید:
name: CI
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.x
uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Run tests
run: |
python -m unittest discover
- name: Publish test results
uses: EnricoMi/publish-unit-test-result-action@v1
with:
files: test-reports/*.xml
در این گردشکار:
name: CIنام گردشکار را مشخص میکند.on:مشخص میکند که این گردشکار در چه رویدادهایی اجرا شود. در این مورد، زمانی که کدی به شاخهmainpush میشود یا یک pull request به شاخهmainارسال میشود.jobs:یک یا چند job را تعریف میکند. در این مورد، یک job به نامbuildتعریف شده است.runs-on: ubuntu-latestمشخص میکند که این job در یک ماشین مجازی Ubuntu اجرا شود.steps:یک یا چند step را تعریف میکند.uses: actions/checkout@v3کد را از مخزن GitHub بررسی میکند.uses: actions/setup-python@v4پایتون را نصب میکند.run: pip install -r requirements.txtوابستگیهای پروژه را نصب میکند.run: python -m unittest discoverتستهای پروژه را اجرا میکند.uses: EnricoMi/publish-unit-test-result-action@v1نتایج تست را منتشر میکند.
ایجاد یک گردشکار CD برای پروژه پایتون
حالا بیایید یک گردشکار CD ساده برای استقرار پروژه پایتون خود ایجاد کنیم. این گردشکار کد را استقرار میدهد. فایل .github/workflows/cd.yml را با محتوای زیر ایجاد کنید (این مثال فرض میکند شما از یک سرور برای استقرار استفاده میکنید و دسترسی SSH دارید):
name: CD
on:
push:
branches: [ "main" ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: SSH into server and deploy
uses: appleboy/ssh-action@master
with:
host: your_server_ip
username: your_username
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
cd /path/to/your/project
git pull origin main
# Add any deployment commands here, e.g.,
# python manage.py migrate
# python manage.py collectstatic
# systemctl restart your_service
در این گردشکار:
name: CDنام گردشکار را مشخص میکند.on:مشخص میکند که این گردشکار در چه رویدادهایی اجرا شود. در این مورد، زمانی که کدی به شاخهmainpush میشود.jobs:یک job به نامdeployتعریف شده است.runs-on: ubuntu-latestمشخص میکند که این job در یک ماشین مجازی Ubuntu اجرا شود.uses: appleboy/ssh-action@masterاز یک action برای اتصال به سرور از طریق SSH استفاده میکند.with:پارامترهای اتصال SSH را مشخص میکند.secrets.SSH_PRIVATE_KEYیک secret است که باید در تنظیمات GitHub مخزن شما تعریف شود. این secret حاوی کلید خصوصی SSH شما است.script:اسکریپتی است که در سرور اجرا میشود.
مدیریت Secrets
Secrets اطلاعات حساسی هستند که نباید در کد منبع شما ذخیره شوند، مانند کلیدهای API، رمزهای عبور و کلیدهای SSH. GitHub Actions به شما امکان میدهد secrets را به صورت ایمن ذخیره کنید و در گردشکارهای خود به آنها دسترسی داشته باشید. برای ذخیره یک secret، به تنظیمات مخزن خود بروید، Secrets را انتخاب کنید و یک secret جدید اضافه کنید. سپس میتوانید در گردشکار خود با استفاده از سینتکس ${{ secrets.SECRET_NAME }} به secret دسترسی داشته باشید.
نکات پیشرفته
GitHub Actions قابلیتهای پیشرفته بسیاری را ارائه میدهد که میتوانید از آنها برای بهبود فرآیندهای CI/CD خود استفاده کنید. برخی از این قابلیتها عبارتند از:
- Caching: میتوانید وابستگیها و سایر فایلهای بزرگ را کش کنید تا زمان ساخت را کاهش دهید.
- Matrix Builds: میتوانید گردشکار خود را برای اجرا در چندین محیط مختلف (مانند نسخههای مختلف پایتون یا سیستمعاملها) پیکربندی کنید.
- Workflows Reusable: میتوانید گردشکارهای قابل استفاده مجدد ایجاد کنید که میتوانید در چندین مخزن استفاده کنید.
- Custom Actions: میتوانید actions سفارشی خود را ایجاد کنید تا وظایف خاصی را انجام دهید.
نتیجهگیری
GitHub Actions یک پلتفرم CI/CD قدرتمند و انعطافپذیر است که میتواند به شما کمک کند تا فرآیندهای ساخت، تست و استقرار پروژههای پایتون خود را خودکار کنید. با استفاده از GitHub Actions، میتوانید نرمافزار را با سرعت و اطمینان بیشتری به بازار عرضه کنید و کیفیت کد خود را بهبود بخشید. این مقاله یک معرفی جامع به GitHub Actions و نحوه استفاده از آن در پروژههای پایتون ارائه داد. با تمرین و آزمایش، میتوانید از تمام قابلیتهای این پلتفرم برای بهینهسازی فرآیندهای CI/CD خود استفاده کنید.

بدون دیدگاه