پاورشل برای برنامهنویسان
@programming_tipsدرسنامه: اجرای تستها و CI/CD اسکریپتی در PowerShell
یکی از مهمترین کاربردهای PowerShell در پروژههای نرمافزاری، اجرای خودکار تستها و فرآیندهای CI/CD (یکپارچهسازی و استقرار مداوم) است. در واقع با چند دستور ساده میتوان کاری را که معمولاً ابزارهای پیچیده مثل Jenkins یا GitHub Actions انجام میدهند، به صورت محلی یا در سرور Build پیاده کرد.
برای شروع، فرض کنید یک پروژه نرمافزاری داریم که در آن باید قبل از هر انتشار (Deployment) مجموعهای از تستها اجرا شوند، کد Build شود و سپس به محیط مورد نظر منتقل شود. PowerShell این امکان را میدهد که تمام این مراحل را با اسکریپتهای متنی و تکرارپذیر انجام دهیم.
اولین گام در چنین فرآیندی، اجرای تستها است. مثلاً اگر پروژه شما پایتون باشد، میتوانید تستها را با دستور زیر اجرا کنید:
python -m unittest discover
اگر پروژه جاوااسکریپت است و از Jest یا Mocha استفاده میکند:
npm test
و اگر پروژه داتنت دارید:
dotnet test
PowerShell به شما اجازه میدهد نتیجه اجرای این تستها را کنترل کنید. برای مثال میتوانید بررسی کنید که آیا اجرای تست موفق بوده یا نه:
$result = dotnet test
if ($LASTEXITCODE -ne 0) {
Write-Host "❌ تستها با خطا مواجه شدند!"
exit 1
} else {
Write-Host "✅ تمام تستها با موفقیت اجرا شدند."
}
در اینجا متغیر $LASTEXITCODE مقدار بازگشتی آخرین دستور را بررسی میکند. اگر مقدار غیر صفر باشد، یعنی تستها شکست خوردهاند.
پس از موفقیت تستها، نوبت به مرحله Build میرسد. فرض کنید در پروژه پایتون یا جاوا از ابزار Build خاصی استفاده میکنید، کافی است همان دستور را در ادامه اجرا کنید. مثلاً:
Write-Host "🔨 در حال Build پروژه..." dotnet build
یا در پروژه Node.js:
npm run build
در ادامه میتوان مرحله Deploy را نیز اضافه کرد. مثلاً فایلهای خروجی را به سرور یا فضای ابری منتقل کنید:
Write-Host "🚀 در حال استقرار برنامه..." Copy-Item -Path "./build/*" -Destination "\\server\deploy\myapp" -Recurse
یا اگر از API برای استقرار استفاده میکنید، میتوانید از Invoke-RestMethod برای ارسال درخواست استفاده کنید:
Invoke-RestMethod -Uri "https://myserver.com/deploy" -Method POST -Body @{ version = "1.0.0" }
این ساختار ساده میتواند پایه یک سیستم CI/CD باشد که تمام مراحل را پشت سر هم اجرا میکند: تست، Build، و Deploy. اگر بخواهید آن را پیشرفتهتر کنید، میتوانید گزارشگیری اضافه کنید یا خروجی را در فایل Log ذخیره کنید:
Start-Transcript -Path "build_log.txt" # اجرای مراحل CI/CD Stop-Transcript
این دستور تمام خروجیهای PowerShell را در فایل متنی ذخیره میکند تا بعداً قابل بررسی باشد.
در نهایت، برای اجرای خودکار این اسکریپتها در هر Push یا Commit جدید، میتوانید آن را در فایلهای CI مثل .github/workflows/main.yml در GitHub Actions یا pipelineهای GitLab فراخوانی کنید تا هر بار که تغییری در مخزن رخ داد، PowerShell وظیفهی اجرای کامل تستها و Build را بر عهده بگیرد.
به این ترتیب، PowerShell میتواند به ابزاری قدرتمند برای خودکارسازی فرآیند توسعه و استقرار نرمافزار تبدیل شود — از اجرای تست گرفته تا آمادهسازی خروجی نهایی برای انتشار.