تمرين - إنشاء صورة التطبيق

مكتمل

في هذه الوحدة، يمكنك إنشاء مسار التقسيم المرحلي ل GitHub Actions الخاص بك عن طريق إنشاء صورة التطبيق ودفعها إلى Azure Container Registry.

تظهر الصورة التالية البنية الأساسية لبرنامج ربط العمليات التجارية CI/CD التي قمت بتصميمها:

Diagram that shows the procession from triggers, through three build steps, to the deploy steps in a pipeline.

في هذا التمرين، يمكنك إنشاء البنية الأساسية لبرنامج ربط العمليات التجارية عن طريق القيام بالخطوات التالية:

  • إنشاء سير عمل GitHub Actions.
  • on push إنشاء المشغل.
  • إنشاء صورة التطبيق ودفعها.
  • تعيين البيانات السرية.
  • شغل المهمة.

إنشاء سير عمل إجراءات GitHub

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

لبدء إنشاء البنية الأساسية لبرنامج ربط العمليات التجارية الخاصة بك، انتقل إلى نسخة المستودع الخاصة بك من مستودع العينة في موقع GitHub على الويب.

  1. حدد علامة التبويب إجراءات.

  2. حدد الارتباط لإعداد سير عمل بنفسك.

    Screenshot that shows the Get started with GitHub Actions page on the GitHub website.

    عند هذه النقطة، المسار هو مجرد ملف فارغ في دليل .github/workflows في المستودع الخاص بك. يوفر GitHub المكونات التي تم إنشاؤها مسبقًا التي تحتاجها لبناء معظم التدفقات. للبدء، انسخ التعليمات البرمجية التالية والصقها في جزء تحرير ملف جديد:

    # This is a basic workflow to help you get started with Actions
    
    name: CI
    
    # Controls when the action will run. Triggers the workflow on push or pull request
    # events but only for the main branch
    on:
      push:
        branches: [ main ]
      pull_request:
        branches: [ main ]
    
    # A workflow run is made up of one or more jobs that can run sequentially or in parallel
    jobs:
      # This workflow contains a single job called "build"
      build:
        # The type of runner that the job will run on
        runs-on: ubuntu-latest
    
        # Steps represent a sequence of tasks that will be executed as part of the job
        steps:
          # Checks out your repository under $GITHUB_WORKSPACE, so your job can access it
          - uses: actions/checkout@v2
    
          # Runs a single command using the runners shell
          - name: Run a one-line script
            run: echo Hello, world!
    
          # Runs a set of commands using the runners shell
          - name: Run a multi-line script
            run: |
              echo Add other actions to build,
              echo test, and deploy your project.
    
  3. أعلى جزءتحرير ملف جديد، قم بإعادة تسمية الملف من main.yml إلى build-staging.yml.

    Screenshot that shows an example file being edited in the Edit new file pane on the GitHub website.

  4. name تغيير المفتاح من CI إلى Build and push the latest build to staging.

    # This is a basic workflow to help you get started with Actions
    
    name: Build and push the latest build to staging
    

تعديل المشغل 'on'

يأتي قالب سير العمل الأساسي مع مشغلين:

  • أي دفع إلى الفرع الرئيسي.
  • أي طلب سحب على الفرع الرئيسي.

لا تحتاج إلى تشغيل البنية الأساسية لبرنامج ربط العمليات التجارية على طلب سحب، لذا قم بتعديله للاحتفاظ بمشغل الدفع فقط عن طريق تغيير المشغلات في on المفتاح. قم بإزالة المشغل الثاني، وترك علامات push فقط.

name: Build and push the latest build to staging

on:
  push:
    branches: [ main ]

تكوين خطوة السداد مع الخروج

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

  1. ضمن jobs، أعد تسمية build المفتاح إلى build_push_image.

  2. تريد تشغيل سير العمل هذا على Ubuntu 20.04، لذا قم بتغيير runs-on المفتاح من ubuntu-latest إلى ubuntu-20.04.

  3. احذف الأمرين الأخيرين في steps المفتاح، وهما مجرد أمثلة للقالب.

    يجب أن يبدو الملف الخاص بك، بدون التعليقات، مثل هذا المثال:

    name: Build and push the latest build to staging
    
    on:
      push:
        branches: [ main ]
    
    jobs:
      build_push_image:
        runs-on: ubuntu-20.04
    
        steps:
          - uses: actions/checkout@v2
    

لديك الآن خطوة تستخدم checkout الإجراء . يقوم هذا الإجراء باستنساخ المستودع في بيئة المهمة. هذه الخطوة تعادل الإجراء الأول، استنساخ المستودع، في الرسم التخطيطي لتصميم البنية الأساسية لبرنامج ربط العمليات التجارية.

إضافة خطوات Docker

بعد ذلك، أضف إجراءات لإنشاء صورة Docker. يمكنك ضبط الاستخدام لهذه الإجراءات. يستخدم هذا المثال عددا قليلا فقط من المعلمات المتوفرة. لمزيد من المعلومات، راجع وثائق GitHub build-push-action.

  1. في علامة التبويب Marketplace في اللوحة اليمنى، ابحث عن تسجيل دخول docker، وحدد النتيجة الأولى التي نشرها docker.

    Screenshot showing the search results listing Docker Login.

    إشعار

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

  2. ضمن التثبيت، حدد أيقونة النسخ لنسخ استخدام YAML.

    Screenshot showing the copy function and selecting the Docker Login task.

  3. الصق YAML المنسخ أسفل actions/checkout@v2 الإجراء.

    هام

    كن حذرًا مع المسافة البادئة عند استخدام YAML. يجب محاذاة المفتاح name مع المفتاح السابق uses.

  4. أضف القيم التالية إلى registryالمفاتيح usernameو و password :

    • registry: ${{ secrets.ACR_NAME }}
    • username: ${{ secrets.ACR_LOGIN }}
    • password: ${{ secrets.ACR_PASSWORD }}
  5. احذف المفاتيح الأخرى، لأنها غير مستخدمة في هذا التمرين.

  6. في اللوحة اليمنى ضمن Marketplace، ابحث عن build and push docker images، وحدد النتيجة الأولى التي نشرها docker.

    Screenshot that shows the search results that list Build and push Docker images.

  7. ضمن التثبيت، حدد أيقونة النسخ لنسخ استخدام YAML.

  8. الصق YAML المنسوخة أسفل المفتاح الأخير من الإجراء المنسوخ مسبقاً docker-login.

  9. أعد تسمية name المفتاح من Build and push Docker images إلى Build and push staging images.

  10. أضف القيم التالية إلى contextالمفاتيح pushو و tags :

    • context: .
    • push: true
    • tags: ${{secrets.ACR_NAME}}/contoso-website:latest
  11. احذف المفاتيح الأخرى، لأنها غير مستخدمة في هذا التمرين.

  12. أضف إجراء آخر يسمى docker/setup-buildx-action بين إجراء السداد مع الخروج وإجراء تسجيل الدخول، لإعداد محرك الإنشاء لاستخدام Docker. انسخ القصاصة البرمجية التالية والصقها بين الإجراءين checkout و login .

    - name: Set up Buildx
      uses: docker/setup-buildx-action@v3.0.0
    

    يجب أن يبدو ملفك النهائي، بدون التعليقات، مثل المثال التالي:

    name: Build and push the latest build to staging
    
    on:
      push:
        branches: [ main ]
    
    jobs:
      build_push_image:
        runs-on: ubuntu-20.04
    
        steps:
          - uses: actions/checkout@v2
    
          - name: Set up Buildx
            uses: docker/setup-buildx-action@v3.0.0
    
          - name: Docker Login
            uses: docker/login-action@v3.0.0
            with:
              registry: ${{ secrets.ACR_NAME }}
              username: ${{ secrets.ACR_LOGIN }}
              password: ${{ secrets.ACR_PASSWORD }}
    
          - name: Build and push staging images
            uses: docker/build-push-action@v5.0.0
            with:
              context: .
              push: true
              tags: ${{secrets.ACR_NAME}}/contoso-website:latest
    

تطبيق التغييرات

لتثبيت التغييرات، حدد الزر Commit changes في أعلى اليمين. في شاشة Commit changes ، أدخل وصفا للتثبيت، ثم حدد Commit changes.

Screenshot that shows the Commit changes button in the Commit changes pane.

يؤدي تحديد Commit changes إلى تشغيل بنية جديدة، ولكن فشل هذا الإصدار لأنك لم تقم بتعيين الأسرار بعد.

تعيين بيانات سرية

لتعيين الأسرار، في صفحة مستودع GitHub، حدد علامة التبويب الإعدادات، ثم حدد Secrets and variables>Actions من القائمة اليسرى. حدد الأسرار التالية التي يستخدمها سير العمل:

  • ACR_NAME: القيمة التي ACR_Name تم إرجاعها بواسطة البرنامج النصي للإعداد
  • ACR_LOGIN: القيمة التي ACR Login Username تم إرجاعها بواسطة البرنامج النصي للإعداد
  • ACR_PASSWORD: القيمة التي ACR Login Password تم إرجاعها بواسطة البرنامج النصي للإعداد
  • RESOURCE_GROUP: القيمة التي Resource Group Name تم إرجاعها بواسطة البرنامج النصي للإعداد
  • CLUSTER_NAME: contoso-video

لتعريف كل سر:

  1. حدد سر مستودع جديد.
  2. بالنسبة إلى Name، أدخل الاسم السري من القائمة السابقة.
  3. بالنسبة إلى البيانات السرية، أدخل القيمة التي حفظتها من البرنامج النصي للإعداد، أو قم بتشغيل استعلام Cloud Shell للحصول على القيمة.
  4. حدد ⁧⁩Add secret⁧⁩.

تشغيل الاستعلامات الاختيارية للحصول على قيم البيانات السرية

إذا لم يكن لديك القيم التي أرجعها البرنامج النصي للإعداد، يمكنك تشغيل الأوامر التالية في Azure Cloud Shell للحصول على المعلومات:

  • ACR_NAME:

    az acr list --query "[?contains(resourceGroup, 'mslearn-gh-pipelines')].loginServer" -o table
    
  • ACR_LOGIN:

    az acr credential show --name <ACR_NAME> --query "username" -o table
    
  • ACR_PASSWORD:

    az acr credential show --name <ACR_NAME> --query "passwords[0].value" -o table
    
  • RESOURCE_GROUP:

    az aks list -o tsv --query "[?name=='contoso-video'].resourceGroup"
    

تشغيل المهمة

  1. حدد علامة التبويب إجراءات.

  2. حدد التنفيذ الوحيد في القائمة، مهمة build-staging.yml الفاشلة.

  3. في أعلى اليمين، حدد Re-run jobs>Re-run all jobs، وفي شاشة Re-run all jobs، حدد Re-run jobs.

    Screenshot that shows the Re-run jobs and Re-run all jobs buttons.

  4. عند اكتمال الإنشاء، قم بتشغيل az acr repository list --name <ACR_NAME> -o table في Cloud Shell للتأكد من contoso-website ظهور مستودع Container Registry في النتائج.

تابع إلى الوحدة التالية لإنشاء سير عمل الإنتاج الخاص بك.