تست خودکار و ظروف توسعه دهنده

Summarize this content to 400 words in Persian Lang
این هفته در ادامه پروژه خود Mastermind، گردش کار CI خود را به روز کردم و با کانتینرهای توسعه دهنده بازی کردم.
پالایش CI
از آنجایی که هفته گذشته کد تست خود را به روز کردم، طبیعی است که این هفته روی CI کار کنم. من قبلاً یک گردش کار در GitHub Actions داشتم که بسته را میسازد و تستهای واحد را اجرا میکند.
بدیهی است که جای پیشرفت وجود دارد:
در ابتدا، من بخشی را برای اجرای فرمت کننده کد اضافه کردم rustfmt و لینتر clippy:
– name: Run rustfmt
run: cargo fmt –check
– name: Run clippy
run: cargo clippy –all-features –all-targets — -D clippy::all
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
سپس این اجراها را به مشاغل مختلف تقسیم کردم، به طوری که هر زمان که یک کار با شکست مواجه شد، پیدا کردن علت دقیق آسان تر باشد:
jobs:
lint:
# …
test:
# …
build:
# …
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
من همچنین یک اشکال را برطرف کردم که در آن کد تست بدون برخی از متغیرهای محیطی با شکست مواجه میشد، علیرغم اینکه آنها فقط برای اهداف پیکربندی هستند. بنابراین اکنون می توانم با خیال راحت آنها را از فایل گردش کار حذف کنم!
من یک بار دیگر با امیر کار کردم تا تنظیمات همدیگر را تست کنیم که مثل همیشه زمان خوبی بود! ما برای اجرای آزمایش بیشتر و همچنین بررسی مجدد تنظیمات CI خود، یک PR در مخزن یکدیگر ثبت کردیم.
به روز رسانی
درست زمانی که وبلاگ را می نوشتم، متوجه شدم که به جای تلاش برای ساخت پروژه به عنوان کار سوم، می توانم به سادگی اجرا کنم. cargo check. بدون ساخت پروژه، کد را برای خطا بررسی می کند، که نه تنها سریعتر است، بلکه باعث صرفه جویی در منابع نیز می شود.
Dev Containers
این اولین باری نبود که از کانتینرهای Dev میشنوم و از آن استفاده نمیکنم – در گذشته، توزیعهای لینوکس غیرقابل تغییر مانند Fedora Silverblue و openSUSE MicroOS را آزمایش کردهام. کانتینرهای توسعه دهنده به طور مداوم در میان آن جوامع توصیه می شود. با پشتیبانی از docker، آنها به کاربران اجازه میدهند که یک محیط توسعهدهنده جدا شده و قابل تکرار در بالای سیستم عامل خود داشته باشند.
اما مزیت به همین جا ختم نمی شود. شما همچنین می توانید این ظروف را در فضای ابری داشته باشید و بدون توجه به اینکه کجا می روید یا از چه دستگاهی استفاده می کنید به آنها دسترسی داشته باشید.
برای پروژهام، صادقانه میخواهم کارهای بیشتری برای انجام دادن وجود داشته باشد، اما یک بار دیگر، Rust کارها را به طرز دیوانهواری آسان کرد: زیرا همه چیزهایی که من نیاز داشتم، از جمله مدیر بسته، مدیر پروژه، فرمدهنده کد، لینتر در Rust گنجانده شده است. toolchain، تنها کاری که باید انجام می دادم استفاده از تصویر الگوی Rust بود. من به سادگی با تنظیمات پیش فرض رفتم، کانتینرها را اجرا کردم و همه چیز درست کار کرد!
{
“name”: “Rust”,
“image”: “mcr.microsoft.com/devcontainers/rust:1-1-bookworm”,
“customizations” : {
“jetbrains” : {
“backend” : “RustRover”
}
},
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
من به عنوان یک سرگرمی میزبان خود، روزانه با داکر کار می کنم. من از طرفداران بزرگ فناوری کانتینر هستم – این ابزار بسیار قدرتمندی است که نه تنها مشکلات وابستگی را حل میکند، بلکه قدرت فوقالعادهای را در استقرار نرمافزار، شبکهسازی، پیکربندی آسان و غیره ممکن میسازد. این یک مثال فوقالعاده دیگر است.
نتیجه گیری
یک هفته فوق العاده پر حادثه نیست، اما همیشه خوب است که احساس کنید پروژه واقعاً در حال جمع شدن است. من همچنین علاقه مند به بررسی بیشتر قدرت کانتینرهای توسعه دهنده هستم و ببینم چگونه می توانم از آنها در پروژه های مختلف بهره مند شوم.
این هفته در ادامه پروژه خود Mastermind، گردش کار CI خود را به روز کردم و با کانتینرهای توسعه دهنده بازی کردم.
پالایش CI
از آنجایی که هفته گذشته کد تست خود را به روز کردم، طبیعی است که این هفته روی CI کار کنم. من قبلاً یک گردش کار در GitHub Actions داشتم که بسته را میسازد و تستهای واحد را اجرا میکند.
بدیهی است که جای پیشرفت وجود دارد:
در ابتدا، من بخشی را برای اجرای فرمت کننده کد اضافه کردم rustfmt
و لینتر clippy
:
- name: Run rustfmt
run: cargo fmt --check
- name: Run clippy
run: cargo clippy --all-features --all-targets -- -D clippy::all
سپس این اجراها را به مشاغل مختلف تقسیم کردم، به طوری که هر زمان که یک کار با شکست مواجه شد، پیدا کردن علت دقیق آسان تر باشد:
jobs:
lint:
# ...
test:
# ...
build:
# ...
من همچنین یک اشکال را برطرف کردم که در آن کد تست بدون برخی از متغیرهای محیطی با شکست مواجه میشد، علیرغم اینکه آنها فقط برای اهداف پیکربندی هستند. بنابراین اکنون می توانم با خیال راحت آنها را از فایل گردش کار حذف کنم!
من یک بار دیگر با امیر کار کردم تا تنظیمات همدیگر را تست کنیم که مثل همیشه زمان خوبی بود! ما برای اجرای آزمایش بیشتر و همچنین بررسی مجدد تنظیمات CI خود، یک PR در مخزن یکدیگر ثبت کردیم.
به روز رسانی
درست زمانی که وبلاگ را می نوشتم، متوجه شدم که به جای تلاش برای ساخت پروژه به عنوان کار سوم، می توانم به سادگی اجرا کنم. cargo check
. بدون ساخت پروژه، کد را برای خطا بررسی می کند، که نه تنها سریعتر است، بلکه باعث صرفه جویی در منابع نیز می شود.
Dev Containers
این اولین باری نبود که از کانتینرهای Dev میشنوم و از آن استفاده نمیکنم – در گذشته، توزیعهای لینوکس غیرقابل تغییر مانند Fedora Silverblue و openSUSE MicroOS را آزمایش کردهام. کانتینرهای توسعه دهنده به طور مداوم در میان آن جوامع توصیه می شود. با پشتیبانی از docker، آنها به کاربران اجازه میدهند که یک محیط توسعهدهنده جدا شده و قابل تکرار در بالای سیستم عامل خود داشته باشند.
اما مزیت به همین جا ختم نمی شود. شما همچنین می توانید این ظروف را در فضای ابری داشته باشید و بدون توجه به اینکه کجا می روید یا از چه دستگاهی استفاده می کنید به آنها دسترسی داشته باشید.
برای پروژهام، صادقانه میخواهم کارهای بیشتری برای انجام دادن وجود داشته باشد، اما یک بار دیگر، Rust کارها را به طرز دیوانهواری آسان کرد: زیرا همه چیزهایی که من نیاز داشتم، از جمله مدیر بسته، مدیر پروژه، فرمدهنده کد، لینتر در Rust گنجانده شده است. toolchain، تنها کاری که باید انجام می دادم استفاده از تصویر الگوی Rust بود. من به سادگی با تنظیمات پیش فرض رفتم، کانتینرها را اجرا کردم و همه چیز درست کار کرد!
{
"name": "Rust",
"image": "mcr.microsoft.com/devcontainers/rust:1-1-bookworm",
"customizations" : {
"jetbrains" : {
"backend" : "RustRover"
}
},
}
من به عنوان یک سرگرمی میزبان خود، روزانه با داکر کار می کنم. من از طرفداران بزرگ فناوری کانتینر هستم – این ابزار بسیار قدرتمندی است که نه تنها مشکلات وابستگی را حل میکند، بلکه قدرت فوقالعادهای را در استقرار نرمافزار، شبکهسازی، پیکربندی آسان و غیره ممکن میسازد. این یک مثال فوقالعاده دیگر است.
نتیجه گیری
یک هفته فوق العاده پر حادثه نیست، اما همیشه خوب است که احساس کنید پروژه واقعاً در حال جمع شدن است. من همچنین علاقه مند به بررسی بیشتر قدرت کانتینرهای توسعه دهنده هستم و ببینم چگونه می توانم از آنها در پروژه های مختلف بهره مند شوم.