"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > اختبار التكامل السلس لتطبيق Go الخاص بك على إجراءات GitHub باستخدام PostgreSQL

اختبار التكامل السلس لتطبيق Go الخاص بك على إجراءات GitHub باستخدام PostgreSQL

تم النشر بتاريخ 2024-11-26
تصفح:580

Seamless Integration Testing for Your Go Application on GitHub Actions with PostgreSQL

مقدمة

يعد اختبار التكامل أمرًا بالغ الأهمية لضمان عمل تطبيق Go الخاص بك بشكل لا تشوبه شائبة مع التبعيات الخارجية مثل قواعد البيانات. في هذه المدونة، سنستكشف كيفية إعداد وتشغيل اختبارات التكامل لتطبيق Go باستخدام GitHub Actions. سنقوم بتكوين قاعدة بيانات PostgreSQL ضمن مسار CI، وتبسيط عملية الاختبار، والتأكد من أن قاعدة البيانات الخاصة بك موثوقة وجاهزة للإنتاج مع كل دفعة. هيا بنا نتعمق!.

لقد أنشأنا اختبار الوحدة والتكاملات في مقال سابق هنا!. في هذه المقالة، نريد إجراء هذه الاختبارات على جميع الالتزامات في مستودع جيثب الخاص بنا.

إجراءات جيثب

إنها عبارة عن نظام أساسي للتكامل المستمر والتسليم المستمر (CI/CD) الذي يسمح لك بأتمتة عملية البناء والاختبار والنشر.
تتيح لك Github Actions تشغيل مهام سير العمل عند حدوث أحداث أخرى في مستودعك

سير عمل جيثب

سير العمل هو عملية تلقائية قابلة للتكوين ستقوم بتشغيل مهمة واحدة أو أكثر. يتم تعريف سير العمل من خلال ملف YAML الذي تم إيداعه في مستودعك وسيتم تشغيله عند تشغيله بواسطة حدث في مستودعك. يتم تعريف سير العمل في .github/workfows.

  • الحدث هو نشاط محدد في المستودع يؤدي إلى تشغيل سير العمل. في حالتنا سيكون هذا بمثابة دفعة إلى فرعنا.
  • الوظائف هي مجموعة من الخطوات في سير العمل التي يتم تنفيذها على نفس المشغل.
  • Runners هو خادم يقوم بتشغيل سير العمل الخاص بك عند تشغيله. يمكن لكل عداء تشغيل مهمة واحدة في كل مرة.

سير العمل يامل

  • ستكون الخطوة الأولى هي إنشاء مجلد .github/workflows حيث سيتم وضع ملف yaml الخاص بنا.
  • الخطوة التالية هي إنشاء ملف yaml وفي هذه الحالة سنسميه ci-test.yml.
name: ci-test

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

env:
  POSTGRES_USER: postgres
  POSTGRES_PASSWORD: Password123
  POSTGRES_DB: crud_db

jobs:
  build:
    name: tests
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres
        env:
          POSTGRES_USER: ${{ env.POSTGRES_USER }}
          POSTGRES_PASSWORD: ${{ env.POSTGRES_PASSWORD }}
          POSTGRES_DB: ${{ env.POSTGRES_DB }}
        ports:
          - 5432:5432
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5

    steps:
      - uses: actions/checkout@v4

      - name: Set up Go
        uses: actions/setup-go@v4
        with:
          go-version: "1.22"

      - name: Install dbmate for golang migrations
        run: |
          sudo curl -fsSL -o /usr/local/bin/dbmate https://github.com/amacneil/dbmate/releases/latest/download/dbmate-linux-amd64
          sudo chmod  x /usr/local/bin/dbmate
          which dbmate

      - name: Construct DB URL
        id: construct_url
        run: echo "DB_URL=postgres://${{ env.POSTGRES_USER }}:${{ env.POSTGRES_PASSWORD }}@localhost:5432/${{ env.POSTGRES_DB }}?sslmode=disable" >> $GITHUB_ENV

      - run: env

      - name: Make Migrations
        run: make migrations URL=${{ env.DB_URL }}

      - name: Seed test DB
        run: go run db/seed.go

      - name: Test
        run: make test

وصف يامل

  • الجزء الأول هو تسمية الإجراء في هذه الحالة وهو ci-test.

مشغلات سير العمل

  • يصف القسم الثاني المشغلات. الأحداث التي تؤدي إلى الإجراء. في هذا الملف لدينا حدثان سيؤديان إلى تشغيل هذه المهام، الدفعات وطلبات السحب التي تستهدف الفروع الرئيسية. وهذا يضمن أن كل تغيير في التعليمات البرمجية مخصص للإنتاج يتم اختباره قبل دمجه، والحفاظ على سلامة المشروع.

متغيرات البيئة

تدعم سير عمل Github متغيرات البيئة العالمية والمحددة للوظيفة. تصف هذه المتغيرات بيانات اعتماد postgres التي سنستخدمها لاحقًا في ملف yaml الخاص بنا.

وظيفة

jobs:
  build:
    name: tests
    runs-on: ubuntu-latest

لقد قمنا هنا بتعيين اسم للوظيفة التي ستؤدي المهام الأساسية، والتي هي بناء واختبار التعليمات البرمجية الخاصة بنا.
Runner - يصف المكان الذي سيتم فيه تشغيل سير العمل وهو جهاز Ubuntu الظاهري.

خدمات

تتيح لك مسارات عمل Github Actions تحديد الخدمات. في هذه الحالة نحتاج إلى قاعدة بيانات postgres لإجراء اختباراتنا عليها.

  • يتم إنشاء حاوية PostgreSQL باستخدام صورة PostgreSQL Docker الرسمية.
  • تم تكوين الحاوية بمتغيرات البيئة التي أعلنا عنها سابقًا

خطوات سير العمل

  • الخطوة الأولى هي التحقق من رمز المستودع
- uses: actions/checkout@v4

يجلب هذا السطر أحدث إصدار من المستودع، مما يوفر الوصول إلى جميع الملفات المصدر.

  • الخطوة الثانية هي إعداد golang في العداء.
- name: Set up Go
  uses: actions/setup-go@v4
  with:
    go-version: "1.22"
  • الخطوة الثالثة هي تثبيت dbmate على برنامج التشغيل الخاص بنا. Dbmate عبارة عن أدوات ترحيل ستقوم بإدارة عمليات ترحيل التطبيقات.
- name: Install dbmate for golang migrations
  run: |
    sudo curl -fsSL -o /usr/local/bin/dbmate https://github.com/amacneil/dbmate/releases/latest/download/dbmate-linux-amd64
    sudo chmod  x /usr/local/bin/dbmate
    which dbmate

  • الرابع هو إنشاء عنوان url لـ db
- name: Construct DB URL
  id: construct_url
  run: echo "DB_URL=postgres://${{ env.POSTGRES_USER }}:${{ env.POSTGRES_PASSWORD }}@localhost:5432/${{ env.POSTGRES_DB }}?sslmode=disable" >> $GITHUB_ENV

  • خامسًا، يتم تشغيل عمليات ترحيل قاعدة البيانات لإعداد علاقاتنا التي ستنشأ مع التاريخ
- name: Make Migrations
  run: make migrations URL=${{ env.DB_URL }}
  • الإجراء الأخير الثاني هو زرع قاعدة البيانات ببيانات الاختبار.
- name: Seed test DB
  run: go run db/seed.go

يقوم ملف Seed.go بزراعة البيانات مع بيانات الاختبار. تهيئة بيئة اختبار واقعية. لفحص هذا الملف بشكل أكبر، قم بزيارة هنا

المرحلة النهائية هي تنفيذ اختبار الانتقال باستخدام ملف الصنع

- name: Test
  run: make test

سيتم الآن تشغيل سير العمل هذا في كل مرة نقوم فيها بتقديم طلب سحب أو إرسال رمز إلى فرعنا الرئيسي

بعض مزايا اعتماد عمل جيثب.

كما رأينا إجراء github يسمح لك بالقيام بـ

  1. الاختبار الآلي - إجراء الاختبارات بشكل متسق عند كل تغيير في التعليمات البرمجية.
  2. لديك عمليات تكامل لقاعدة البيانات - توفير بيئة postgres حقيقية للاختبار ومحاكاة ظروف الإنتاج
  3. بيئة قابلة للتكرار - يستخدم إجراء Github خدمات حاويات وخطوات محددة مسبقًا لضمان نتائج متسقة عبر جميع عمليات التشغيل.
  4. حلقة ردود الفعل السريعة - تمكن المطورين من تلقي تعليقات سريعة في حالة حدوث عطل، مما يسمح بحل المشكلات بشكل أسرع.
  5. التعاون المبسط - يضمن التحقق من تغييرات جميع المساهمين قبل ظهورها، والحفاظ على جودة التعليمات البرمجية واستقرار المشروع

الاستنتاجات

من خلال الاستفادة من إجراءات GitHub، يعمل سير العمل هذا على تبسيط الاختبار وإعداد قاعدة البيانات، مما يضمن تطوير برامج قوية وموثوقة.
قم بزيارة مستودع جيثب لعرض الكود الذي يتم اختباره من خلال الإجراء الموضح أعلاه.

بيان الافراج يتم استنساخ هذه المقالة على: https://dev.to/sha254/seamless-integration-testing-for-your-go-application-on-github- actions-bostgresql-5dne؟1 إذا كان هناك أي انتهاك ، يرجى الاتصال [email protected] لحذفها.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3