هذا الدليل موجّه لفِرق التطوير التي تعتمد على حزمة EntityCrypt في مشاريعها. يوضّح كيفية استقبال الإشعارات التلقائية وتحديث التبعيات والتحقق من سلامة الحزمة.
عند نشر إصدار جديد من EntityCrypt، يُرسَل حدث repository_dispatch تلقائياً
إلى المستودعات المسجّلة. يمكنك إعداد سير عمل في مستودعك للتعامل مع هذا الحدث.
أنشئ الملف .github/workflows/auto-update-entitycrypt.yml في مستودعك:
name: Auto-Update EntityCrypt
on:
repository_dispatch:
types: [dependency-updated]
permissions:
contents: write
pull-requests: write
jobs:
update-dependency:
# يعمل فقط عند تحديث EntityCrypt
if: github.event.client_payload.package == 'EntityCrypt.EFCore'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '10.0.x'
- name: Extract version
id: version
run: |
VERSION="${{ github.event.client_payload.version }}"
VERSION="${VERSION#v}"
echo "version=$VERSION" >> $GITHUB_OUTPUT
- name: Update EntityCrypt packages
run: |
find . -name "*.csproj" -exec grep -l "EntityCrypt" {} \; | while read csproj; do
sed -i "s|Include=\"EntityCrypt\.Core\" Version=\"[^\"]*\"|Include=\"EntityCrypt.Core\" Version=\"${{ steps.version.outputs.version }}\"|g" "$csproj"
sed -i "s|Include=\"EntityCrypt\.EFCore\" Version=\"[^\"]*\"|Include=\"EntityCrypt.EFCore\" Version=\"${{ steps.version.outputs.version }}\"|g" "$csproj"
done
- name: Restore and Build
run: dotnet build --configuration Release
- name: Create Pull Request
uses: peter-evans/create-pull-request@v7
with:
commit-message: "deps: update EntityCrypt to ${{ steps.version.outputs.version }}"
title: "⬆️ Update EntityCrypt to ${{ steps.version.outputs.version }}"
body: |
Automated dependency update triggered by [EntityCrypt release](https://github.com/${{ github.event.client_payload.repository }}/releases/tag/${{ github.event.client_payload.version }}).
### Changes
- Updated `EntityCrypt.Core` → `${{ steps.version.outputs.version }}`
- Updated `EntityCrypt.EFCore` → `${{ steps.version.outputs.version }}`
> ⚠️ Review migration compatibility if this is a major/minor version bump.
branch: deps/entitycrypt-${{ steps.version.outputs.version }}
labels: dependencies,automated📦 EntityCrypt v2.1.0 تُنشر على NuGet
│
▼
🔔 حدث repository_dispatch يُرسل إلى مستودعك
│
▼
⚙️ سير العمل auto-update-entitycrypt ينطلق
│
▼
🔄 تحديث أرقام الإصدارات في ملفات .csproj
│
▼
🔨 بناء المشروع للتحقق من التوافق
│
▼
📋 إنشاء Pull Request تلقائي
│
▼
👀 مراجعة الفريق → دمج
لتلقي إشعارات تلقائية عند نشر إصدار جديد:
أرسل طلباً يتضمن:
- اسم المستودع الكامل (مثال:
sbay-dev/MyProject) - افتح Issue جديد أو تواصل مع الفريق
يقوم المشرف بـ:
-
إضافة مستودعك إلى مصفوفة الإشعارات في
publish-nuget.yml:matrix: repo: - sbay-dev/WasmMvcRuntime - your-org/your-repo # ← يُضاف هنا
-
تحديث صلاحيات
DISPATCH_TOKENليشمل مستودعك
- أنشئ ملف سير العمل في مستودعك (المثال أعلاه)
- تأكد من تفعيل GitHub Actions في المستودع
كل إصدار من EntityCrypt يتضمن ملف SHA256SUMS.txt في
صفحة الإصدارات.
# PowerShell — التحقق بعد تنزيل الحزمة
$hash = (Get-FileHash EntityCrypt.EFCore.*.nupkg -Algorithm SHA256).Hash
Write-Host "SHA-256: $hash"
# قارن مع القيمة في SHA256SUMS.txt# Linux/macOS
sha256sum EntityCrypt.EFCore.*.nupkg
# قارن مع القيمة في SHA256SUMS.txt# فحص شامل لكل التبعيات بما فيها المتعدية
dotnet list package --vulnerable --include-transitive
# تنسيق JSON للتحليل الآلي
dotnet list package --vulnerable --include-transitive --format jsonملف CycloneDX SBOM بتنسيق JSON مرفق مع كل إصدار. يمكنك استخدامه لتدقيق سلسلة التوريد البرمجية باستخدام أدوات مثل:
# تثبيت أداة CycloneDX CLI
dotnet tool install --global CycloneDX
# تحليل SBOM
cyclonedx analyze -i EntityCrypt.EFCore-sbom.json| EntityCrypt | .NET | EF Core | ملاحظات |
|---|---|---|---|
| 2.0.x | 10.0+ | 10.0+ | الإصدار الحالي |
- Patch (x.y.Z): إصلاحات أمنية وأخطاء — تحديث آمن
- Minor (x.Y.z): ميزات جديدة — متوافق مع الإصدار السابق
- Major (X.y.z): تغييرات كبيرة — راجع ملاحظات الترحيل
إذا لم تكن مسجلاً في نظام الإشعارات التلقائي:
# تحديث من NuGet
dotnet add package EntityCrypt.EFCore --version X.Y.Z
dotnet add package EntityCrypt.Core --version X.Y.Z
# أو تحديث ملف .csproj يدوياً<PackageReference Include="EntityCrypt.Core" Version="X.Y.Z" />
<PackageReference Include="EntityCrypt.EFCore" Version="X.Y.Z" />- تحقق من أن
repository_dispatchمفعّل في إعدادات المستودع - تحقق من أن اسم الحدث يطابق
dependency-updated - تحقق من سجلات Actions في مستودعك
- راجع ملاحظات الإصدار
- تحقق من توافق إصدار .NET و EF Core
- افتح Issue إذا كان الخطأ من الحزمة
- تحقق من صلاحيات
GITHUB_TOKENفي سير العمل:permissions: contents: write pull-requests: write
- تأكد من عدم وجود branch بنفس الاسم مسبقاً
- المشاكل والاقتراحات: GitHub Issues
- الإصدارات: GitHub Releases
- حزم NuGet: nuget.org/packages/EntityCrypt.EFCore