Fix CI-CD #17
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Publish NuGet Package | |
on: | |
push: | |
tags: | |
- 'v*.*.*' # فقط زمانی اجرا شود که یک تگ با فرمت vX.Y.Z پوش شود | |
jobs: | |
publish: | |
runs-on: ubuntu-latest | |
# یک شرط اضافه برای اطمینان از اینکه فقط برای تگها اجرا میشود (اختیاری چون trigger اصلی همین کار را میکند) | |
# if: startsWith(github.ref, 'refs/tags/') | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 # استفاده از نسخه جدیدتر | |
with: | |
fetch-depth: 0 # بسیار مهم برای GitVersion | |
- name: Setup .NET SDK | |
uses: actions/setup-dotnet@v4 # استفاده از نسخه جدیدتر | |
with: | |
dotnet-version: 8.0.x # یا هر نسخهای که پروژه شما نیاز دارد. اگر فقط یکی لازم است، دومی را حذف کنید. | |
# اگر پروژه شما به 10.0.x هم نیاز دارد، آن را نگه دارید: | |
# dotnet-version: | | |
# 8.0.x | |
# 10.0.x # توجه: .NET 10 هنوز منتشر نشده، احتمالا منظورتان .NET Core 3.1 یا .NET 6/7 بوده؟ یا شاید یک نسخه preview؟ | |
- name: Install GitVersion | |
uses: gittools/actions/gitversion/[email protected] # نسخه جدیدتر اکشن | |
with: | |
versionSpec: '5.x' # مشخص کردن نسخه GitVersion CLI | |
- name: Determine Version using GitVersion | |
id: gitversion # <<<<< اضافه کردن ID برای ارجاع به خروجی | |
uses: gittools/actions/gitversion/[email protected] # نسخه جدیدتر اکشن | |
- name: Restore dependencies | |
# اگر فایل csproj در روت نیست، مسیر را مشخص کنید: e.g., src/MyPackage/MyPackage.csproj | |
run: dotnet restore YourProject.csproj # <--- مسیر فایل csproj خود را جایگزین کنید | |
- name: Build | |
# اگر فایل csproj در روت نیست، مسیر را مشخص کنید | |
run: dotnet build YourProject.csproj --configuration Release --no-restore -p:Version=${{ steps.gitversion.outputs.NuGetVersionV2 }} # <--- مسیر فایل csproj و استفاده از نسخه | |
- name: Pack NuGet | |
# اگر فایل csproj در روت نیست، مسیر را مشخص کنید | |
run: | | |
dotnet pack YourProject.csproj --configuration Release \ | |
-p:PackageVersion=${{ steps.gitversion.outputs.NuGetVersionV2 }} \ | |
--no-build -o ./out # <--- مسیر فایل csproj خود را جایگزین کنید | |
- name: Push to NuGet | |
# if: success() # این شرط به طور پیشفرض وجود دارد، اگر مراحل قبلی موفق باشند این مرحله اجرا میشود | |
run: | | |
dotnet nuget push ./out/*.nupkg \ | |
--api-key ${{ secrets.NUGET_API_KEY }} \ | |
--source https://api.nuget.org/v3/index.json \ | |
--skip-duplicate # جلوگیری از خطا در صورت وجود نسخه تکراری |