TGViewer
C# Geeks (.NET) C# Geeks (.NET) @csharpgeeks · 550 subscribers
Post #613 329
7️⃣ خودکارسازی Build و Test با GitHub Actions 🤖

توسعه‌ی مدرن نرم‌افزار نیازمند pipelineهای خودکار است. شما نمی‌توانید به استقرار دستی یا رد کردن تست‌های خودکار متکی باشید. 🚫

یک pipeline خوب CI/CD تضمین می‌کند که هر تغییر در کد به‌صورت یکسان build، test و deploy شود. این کار باگ‌ها را قبل از رسیدن به production شناسایی می‌کند و سرعت تحویل شما را افزایش می‌دهد. ⚡️

بدون pipeline مناسب CI/CD، زمان زیادی صرف کارهای دستی می‌کنید و ریسک خطای انسانی به‌شدت افزایش پیدا می‌کند. ⏳

برای توسعه‌دهندگان NET. که از GitHub استفاده می‌کنند، GitHub Actions انتخاب طبیعی است. این ابزار به‌صورت یکپارچه با ریپازیتوری شما کار می‌کند و هر چیزی که برای build و test اپلیکیشن‌های NET. نیاز دارید را فراهم می‌کند. 🧩

یک فایل به نام github/workflows/ci.yml. در ریپازیتوری خود بسازید:
name: BUILD_AND_TEST

on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]

jobs:
build:
runs-on: ubuntu-latest

strategy:
matrix:
dotnet-version: [ '10.0.x' ]

steps:
- uses: actions/checkout@v3

- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: ${{ matrix.dotnet-version }}

- name: Restore dependencies
run: dotnet restore

- name: Build
run: dotnet build --no-restore

- name: Test
run: dotnet test --no-build --no-restore --verbosity normal

- name: Build Docker image with Aspire
if: ${{ success() }}
run: |
dotnet tool install --global aspire.cli
aspire publish -o docker-compose-artifacts
docker compose -f docker-compose-artifacts/docker-compose.yaml build

این pipeline روی هر push به شاخه‌ی main و روی هر pull request اجرا می‌شود. وابستگی‌ها را restore می‌کند، solution را build می‌کند، تست‌ها را اجرا می‌کند و با استفاده از Aspire یک Docker image می‌سازد. 🐳

ءAspire CLI یک فایل Docker Compose تولید می‌کند که شامل تمام سرویس‌ها و وابستگی‌های آن‌هاست. سپس pipeline ایمیج‌های Docker را برای استقرار build می‌کند. 🏗

بهترین روش‌ها برای CI/CD:

• Keep pipelines fast:
هدف زیر ۱۰ دقیقه برای CI builds باشد. ⏱️
• Run tests on every pull request:
مشکلات را قبل از merge شدن به main شناسایی کنید. 🔍
• Store secrets securely:
از GitHub Secrets برای داده‌های حساس مثل API key و connection string استفاده کنید. هرگز secret را در ریپو commit نکنید. 🔐
• Fail fast:
اگر تست‌ها fail شدند، pipeline را فوراً متوقف کنید. برای کد خراب Docker image نسازید. ❌
• Use caching:
پکیج‌های NuGet و artifactهای build را cache کنید تا اجراهای بعدی سریع‌تر شوند. ⚡️

8️⃣ قالب پروژه برای شروع 🚀

راه‌اندازی یک پروژه‌ی جدید NET. با مراحل بالا سخت نیست. اما چیزهای بسیار بیشتری وجود دارد که باید در پروژه تنظیم شوند، مثل:

• Code Structure: Clean Architecture / Vertical Slices / N-Layered
• Authentication و Authorization
• ASP .NET Core Identity
• JWT Claims و Refresh Token
• Logging
• Result Pattern
• Architecture Tests
• Unit Tests و Integration Tests
• ساختار endpointهای WebApi
• یکپارچه‌سازی با Jaeger و Seq

جمع‌بندی 🧠

شروع یک پروژه‌ی جدید NET. با فونداسیون درست، در بلندمدت زمان ذخیره می‌کند و از ایجاد technical debt جلوگیری می‌کند.

این روش‌ها خیلی سریع در طول عمر پروژه نتیجه می‌دهند. بهترین زمان برای تعریف استانداردهای کیفیت، ابتدای پروژه است. پروژه‌ی بعدی NET. خود را با این هفت قدم شروع کنید تا نرم‌افزار بهتری را سریع‌تر بسازید. 🚀

امیدوارم این مقاله برایتان مفید بوده باشد👋

🔖هشتگ‌ها:
#DotNet #SoftwareEngineering
#OpenTelemetry #Aspire #DeveloperExperience
More from @csharpgeeks
  1. Sep 22, 2026یه مدتی قراره از دنیای NET. فاصله بگیرم، چون وقتشه برم سربازی. راستش نمیدونم این مدت رو چج…
  2. Sep 20, 2026🔥 حالا مشکل اصلی: Alert Storm فرض کن Database از دسترس خارج شده. ۱۰۰ Pod داری. هر Pod می‌…
  3. Sep 20, 2026🚨 طراحی سیستم Monitoring و Alerting در یک سیستم بزرگ فرض کن ساعت ۳ صبح است. سیستم شما با…
  4. Sep 19, 2026#Engineering_Leadership تصمیم نگرفتن هم یک تصمیم است یه چیز عجیب توی تیم‌های مهندسی: گاهی…
  5. Sep 19, 2026☑ چک‌لیست آماده‌سازی تیم، فرایندها و زیرساخت برای توسعه با AI توجه: هیچ چک‌لیستی جهان‌شمول…
  6. Sep 19, 2026📌پایان یک انتظار طولانی: اعتبارسنجی ناهمگام (Async Validation) در NET 11.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →