.github
ملفات مجتمع مشتركة وسبعة سير عمل (workflows) قابلة لإعادة الاستخدام في GitHub Actions لمستودعات muhittincamdali.
الترخيص: MIT
يطبّق GitHub دليل المساهمة وميثاق السلوك وسياسة الأمان ودليل الدعم ونماذج Issue وقالب Pull Request الموجودة في هذا المستودع على كل مستودع لا يملك نسخته الخاصة. وإلى جانبها سبعة سير عمل قابلة لإعادة الاستخدام تستدعيها المستودعات الأخرى عبر workflow_call: بناء واختبار حزمة Swift مع xcodebuild اختياري لكل منصة من منصات Apple، وتحويل DocC إلى GitHub Pages، وFlutter، وNode.js، وفحص الروابط بـ lychee، وفحص لترجمة README، وفحص نظافة للملفات ورسائل الـ commit. كل action مثبّت على SHA كامل لـ commit، وكل job يطلب فقط الصلاحيات التي يحتاجها، والمستدعون يثبّتون سير العمل على commit موسوم يحافظ Dependabot على تحديثه.
الميزات
- swift-ci: swift build --build-tests وswift test، مع مصفوفة xcodebuild اختيارية لـ iOS وmacOS وMac Catalyst وtvOS وwatchOS وvisionOS
- docc-pages: يبني DocC باستخدام xcodebuild docbuild، ويدمج عدة modules في موقع واحد وينشره على GitHub Pages
- flutter-ci وnode-ci: format وanalyze وtest لـ Flutter؛ تثبيت من lockfile بواسطة npm أو pnpm وتشغيل سكريبتات lint وtypecheck وtest وbuild الموجودة، على عدة إصدارات من Node.js
- links: فحص الروابط وعلامات #anchor بواسطة lychee، مع cache يدوم يومًا واحدًا وإعدادات افتراضية مشتركة
- readme-i18n-sync: كل ملف README.<lang>.md يذكر git blob لنسخة README الإنجليزية التي يترجمها؛ يجب أن تتطابق أكواد code blocks وURLs ما دام يدّعي أنه يطابق الإصدار الحالي
- hygiene: يرفض أسماء الأدوات والصيغ التفضيلية غير القابلة للتحقق والشعارات المتوقفة في الملفات المتتبّعة وفي الـ commits التي يتم push-ها، مع قائمة سماح (allow list) خاصة بكل مستودع
- actions مثبّتة على SHA كامل للـ commit، صلاحيات لكل job، persist-credentials: false، ومجموعات concurrency تُلغي تشغيلات pull request القديمة
- يفحص المستودع نفسه بواسطة actionlint (مع shellcheck) وhygiene وlinks
البدء السريع
1name: CI2 3on:4 push:5 branches: [main]6 pull_request:7 8permissions: {}9 10jobs:11 swift:12 permissions:13 contents: read14 uses: muhittincamdali/.github/.github/workflows/swift-ci.yml@<sha> # v115 with:16 platforms: '["iOS", "macOS", "tvOS", "watchOS", "visionOS"]'17 18 hygiene:19 permissions:20 contents: read21 uses: muhittincamdali/.github/.github/workflows/hygiene.yml@<sha> # v1التثبيت
Call a workflow from a repository
1jobs:2 swift:3 permissions:4 contents: read5 uses: muhittincamdali/.github/.github/workflows/swift-ci.yml@<sha> # v16 with:7 platforms: '["iOS", "macOS", "tvOS", "watchOS", "visionOS"]'الجدول الزمني
افتُتح المستودع بملفات المجتمع المشتركة وستة سير عمل قابلة لإعادة الاستخدام (swift-ci وdocc-pages وflutter-ci وnode-ci وlinks وhygiene)، ثم أُضيف فحص ترجمة README؛ وُسم بـ v1 وv1.0.0
v1.1.0: حصل docc-pages على مدخل skip-synthesized-members الاختياري، بحيث تناسب حزمة تضم العديد من SwiftUI views موقع GitHub Pages