? آموزش فارسی پایتون ?
تبدیل فایل های IPYNB به HTML و استقرار خودکار در github-pages (بخش دوم)
به بخش دوم مقاله خوش اومدید. تو این بخش قراره ببینیم که چطوری میشه با استفاده از گیت هاب اکشن از اسکریپتی که تو بخش اول این مقاله نوشتیم به صورت خودکار استفاده کنیم.
نحوه عملکرد این اکشن به این شکله که شما هربار تغییراتی رو روی مخزن (repository) موردنظر پوش میکنید، چک میکنه که آیا فایل های با فرمت ipynb تغییر کردند یا خیر. اگر تغییری در اونا صورت نگرفته باشه که اتفاقی نمیوفته ولی اگه تغییر کرده باشن اسکریپتی که تو بخش اول نوشتیم رو اجرا میکنه. یعنی فایل های نوت بوک رو به فایل های HTML تبدیل میکنه و اونا رو به دایرکتوری تعیین شده برای github pages منتقل میکنه.
سرویس github actions چیه؟
هدف این سرویس اتوماتیک کردن برخی فرایندهاست، مثل تست، استقرار (deploy) و ...؛ گیت هاب اکشن رویداد محور (event-driven) هستش، یعنی زمانی که رویداد خاصی مثل پوش اتفاق بیوفته یک سری کارهایی که تعیین کردیم رو انجام میده.
اگه دوست دارید بیشتر با این سرویس آشنا بشید میتونید به داکیومنت اصلی گیت هاب اکشن مراجعه کنید.
اکشنی که قراره بنویسیم رو میتونین از مخزن اصلی گیت هاب ایرانی پای بردارید.
- مشاهده اکشن
- مشاهده پروژه (شامل همه کدهای نوشته شده و فایلهای راهنما)
جریان کار (workflow)
برای استفاده از این ویژگی باید از یک سری قوانین پیروی کنیم. یکی از این قوانین قرار دادن فایل اکشن تو دایرکتوری ای هست که خود گیت هاب گفته. اول از همه لازمه که یک دابرکتوری به اسم github. تو مخزنمون ایجاد کنیم. حالا تو این دایرکتوری یک دایرکتوری دیگه به اسم workflows درست میکنیم. حالا تو این دایرکتوری یک فایل به اسم ipynb_docs_renderer.yml میسازیم. اسم فایل دلخواهه و قراره جلوتر ازش استفاده کنیم ولی پسوندش باید حتما yml باشه.
پس ساختار مخزن (repository) اینجوری شد:
./repository/
│
├── .github/
├── workflows/
├── ipynb_docs_renderer.yml
اکشن (action)
name: ipynb documents renderer
on:
push:
paths:
- '**.ipynb'
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.8]
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: install dependencies
run: |
python -m pip install --upgrade pip
python ipynb_docs_renderer.py install-dependencies
- name: convert ipynb documents to html
run: |
python ipynb_docs_renderer.py render
- name: commit and push changes
run: |
python ipynb_docs_renderer.py commit-push
این محتوای فایل yml هستش که تو مرحله قبل ساختیم. خب بریم ببینیم هر قسمتش چه کاری انجام میده.
name
کاملا اختیاریه. اسمیه که تو تب actions مخزن تو گیت هاب نشون میده.
on
رویدادی که میخوایم بعد از اتفاق افتادنش job اجرا بشه رو اینجا مینویسیم. اینجا ما نوشتم push پس سر هر بار پوش شدن job اجرا میشه. ولی یک شرط دیگه هم اضافه کردیم: paths. اینجا مشخص میکنیم که اگه کدوم دایرکتوری ها یا فایل ها تغییر کردن job رو اجرا کنه. اینجا نوشتیم ipynb.** که یعنی تو هر دایرکتوری و ساب دارکتوری ای فایلی با فرمت ipynb تغییر کرد job رو اجرا کن.
jobs
تمام کارایی که قراره با هر بار اجرا شدن این اکشن انجام بشه رو اینجا مینویسیم.
build
اطلاعات سیستم عامل و نسخه پایتونی که میخوایم برای این job استفاده کنیم رو اینجا مینویسیم.
runs-on
اینجا مشخض میکنیم که از چه سیستم عاملی و چه نسخه ای از اون سیستم عامل میخوایم استفاده کنیم. ما از ubuntu-latest استفاده کردیم، یعنی آخرین نسخه سیستم عامل ابونتو. امکان انتخاب چند تا سیستم عامل هم وجود داره.
strategy
تو این بخش نسخه پایتونی که میخوایم استفاده کنیم رو مشخض کردیم. میتونید برای هر job چند تا نسخه مختلف پایتون هم در نظر بگیرید.
steps
تمامی دستوراتی که قراره اجرا بشن رو اینجا مینویسیم. هر آیتمی که اینجا بنویسیم تو یک shell جداگونه اجرا میکنه.
uses: actions/checkout@v2
اینجا گفتیم که از نسخه شماره 2 اکشن ها استفاده کن. این اکشن با دانلود کردن مخزن (repository) موردنظر، اجازه میده که کارای مختلف رو کدهای موجود تو اون مخزن (repository) انجام بدیم. همیشه از همین نسخه باید استفاده بشه (طبق اسناد موجود در سایت گیت هاب).
name: Set up Python ${{ matrix.python-version }}
اسم step ای که میخوایم اجرا کنیم رو اینجوری مشخص میکنیم. {{ matrix.python-version }} معادل نسخه پایتونی هست که تو matrix مشخص کردیم.
uses: actions/setup-python@v2
این اکشن یک محیط پایتون برامون فراهم میکنه.
with: python-version: ${{ matrix.python-version }}
مقدار متغیر python-version رو معادل نسخه پایتون استفاده شده قرار میده.
name: install dependencies
اسم step بعدی رو تعیین میکنه.
run
دستوری که میخوایم تو shell اجرا بشه رو اینجا مینویسیم. هر دستوری میتونه باشه فقط باید تو سیستم عامل انتخابی معتبر باشه.
اینجا اول pip رو نصب و آپگرید میکنیم. بعد هر بار قستمی از فایل نوشته شده در بخش اول این مقاله رو اجرا میکنیم.
تو این پست ایرانی پای دیدید که چجوری یک workflow تو گیت هاب راه بندازیم و با استفاده از اون کارای تکراری و خسته کننده مون رو به صورت خودکار انجام بدیم، تا هم تو وقت صرفه جویی کرده باشیم هم احتمال اشتباه کردن رو پایین آورده باشیم. با استفاده از این سرویسهای کاربردی گیت هاب کارای خیلی زیادی میشه انجام داد. خوبه که بلد باشید، حتما به کارتون میاد.
امیدواریم از این پست دو بخشی استفاده کافی رو برده باشید. اگه شما هم مثل ما از خوندن مطالب پایتونی لذت میبرید، خوشحال میشیم ما رو تو شبکه های اجتماعی دنبال و در صورت داشتن انتقاد و پیشنهاد ما رو ازش مطلع کنید. لایک هم یادتون نره :)
اگه با فعال سازی و نحوه استفاده از github pages مشکلی دارید، توصیه میشه به این پست اینستاگرام، ایرانی پای سر بزنید.
حمایت از ما
با دنبال کردن ما در
یا کمک مالی به مبلغ دلخواه از طریق درگاه آیدی پی میتونید از ما حمایت کنید.
وب سایت (به زودی): iranipy.ir
مطلبی دیگر از این انتشارات
استخراج صدا از ویدئو با پایتون
مطلبی دیگر از این انتشارات
ساخت ربات تلگرام با Pyrogram: پاک کردن تمام پیام ها در گروه
مطلبی دیگر از این انتشارات
تبدیل فایل های IPYNB به HTML و استقرار خودکار در github-pages (بخش اول)