التكامل المستمر لتغييرات المخطط (GitHub Actions)
شغّل عمليات الترحيل وdbt build وفحص SQLFluff داخل GitHub Actions مع كل PR، باستخدام قواعد بيانات مؤقتة
التكامل المستمر لتغييرات المخطط (GitHub Actions) درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.
لماذا نستخدم CI مع SQL؟
تتسبب عمليات الترحيل اليدوية في انقطاعات الخدمة. يكشف CI ما يلي:
- ترحيل يفشل تطبيقه
- ترحيل يكسر الاختبارات الحالية
- انجراف المخطط بين البيئات
- تراجعات التدقيق والاختبارات
سير عمل قوي لـ SQL في CI
- شغّلوا نسخة مؤقتة من Postgres (باستخدام Docker أو خدمة GitHub Actions)
- طبّقوا جميع عمليات الترحيل من البداية
- طبّقوا عمليات الترحيل الجديدة فقط على نسخة من مخطط بيئة التجهيز
- شغّلوا dbt build أو Flyway test أو اختبارات التطبيق
- دقّقوا SQL باستخدام SQLFluff
- أنشئوا تقريرًا عن الفروقات في المخطط
خدمة Postgres في GitHub Actions
شغّلوا Postgres إلى جانب المهمة:
name: ci
on: [pull_request]
jobs:
test:
runs-on: ubuntu-latest
services:
pg:
image: postgres:16
env:
POSTGRES_PASSWORD: postgres
ports: ['5432:5432']
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/checkout@v4
- name: Run migrations
env:
DATABASE_URL: postgres://postgres:postgres@localhost:5432/postgres
run: |
./scripts/migrate.shخطوة التدقيق
شغّلوا تدقيق SQLFluff في مهمة منفصلة:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- run: pip install sqlfluff && sqlfluff lint models/إنشاء dbt في CI
بالنسبة إلى مشاريع dbt:
- name: dbt deps & build
run: |
pip install dbt-postgres
dbt deps
dbt build --profiles-dir profiles/ciفروقات المخطط
توضح أدوات migra أو apgdiff أو schemahero التغييرات التي يُدخلها أحد عمليات الترحيل:
pip install migra
migra postgres://baseline postgres://branch > diff.sql
# Comment diff.sql on the PRاستراتيجية الترحيل إلى الأمام فقط
أنشئوا دائمًا عمليات ترحيل جديدة، ولا تعدّلوا العمليات التي طُبّقت من قبل. يضمن CI إمكانية تطبيق تسلسل عمليات الترحيل من البداية.
تغييرات المخطط المتوافقة مع الإصدارات السابقة
ينبغي أن يظل مخطط كل PR متوافقًا مع إصدار التطبيق السابق، حتى تتمكنوا من نشر التطبيق وقاعدة البيانات بأي ترتيب. ويمكن لـ CI التحقق من ذلك بتشغيل اختبارات التطبيق القديم OLD على المخطط الجديد NEW.
تهيئة بيانات الاختبار
يتيح وجود برنامج نصي صغير للبيانات التجريبية في CI تشغيل الاختبارات باستخدام بيانات واقعية:
- name: Seed
run: psql $DATABASE_URL < seed/dev.sqlمهلات الأقفال في اختبارات الترحيل
اضبطوا lock_timeout في عمليات ترحيل CI لمحاكاة سلوك الإنتاج:
ALTER DATABASE postgres SET lock_timeout = '5s';التطبيق في الإنتاج
بالنسبة إلى عمليات ترحيل الإنتاج، استخدموا مهمة تُشغّل مرة واحدة:
- مشغّل للترحيل مع إعادة المحاولة
- إشعارات عند الفشل
- إجراء تراجع موثّق
نمط قاعدة بيانات الفروع
تتيح أدوات مثل Neon وSupabase branching إنشاء نسخة من الإنتاج لكل PR، ثم تشغيل عمليات الترحيل واختبارات التطبيق على نسخة تحتوي على بيانات حقيقية.
مراجعة
ينبغي أن يكون SQL جزءًا من CI.
- شغّلوا خدمة PG مؤقتة
- طبّقوا عمليات الترحيل وشغّلوا dbt build
- دقّقوا باستخدام SQLFluff
- شغّلوا اختبارات التطبيق على المخطط بعد ترحيله
- قارنوا المخطط للمراجعة
اختبار سريع
ما الطريقة الأبسط لإضافة قاعدة بيانات Postgres إلى مهمة في GitHub Actions؟
الأسئلة الشائعة
هل درس «التكامل المستمر لتغييرات المخطط (GitHub Actions)» مجاني؟
نعم — نص درس «التكامل المستمر لتغييرات المخطط (GitHub Actions)» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.
ماذا ستتعلم في «التكامل المستمر لتغييرات المخطط (GitHub Actions)»؟
شغّل عمليات الترحيل وdbt build وفحص SQLFluff داخل GitHub Actions مع كل PR، باستخدام قواعد بيانات مؤقتة تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟
لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «التكامل المستمر لتغييرات المخطط (GitHub Actions)»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟
نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أساسيات DBT (أداة بناء البيانات)
- SQLFluff وفحص الأسلوب
- اختبار SQL: اختبارات dbt وGreat Expectations
- التكامل المستمر لتغييرات المخطط (GitHub Actions)