تمرين - إنشاء إجراء GitHub لإنشاء صورة حاوية

مكتمل

في هذه الوحدة، ستكمل المهام التالية:

  • إنشاء إجراء GitHub لتنفيذ البنية الأساسية لبرنامج ربط العمليات التجارية للبناء.
  • تعديل رمز خدمة القسيمة لتشغيل سير عمل البناء.
  • مراقبة تقدم سير عمل البناء في الوقت الفعلي.

إنشاء إجراء الإنشاء

تحدد التعليمات البرمجية YAML في هذا الإجراء إجراء GitHub الذي:

  • مشغلات عند دفع تثبيت إلى التعليمات البرمجية المصدر لخدمة القسيمة أو اختبارات الوحدة في فرع main.
  • تعريف متغيرات البيئة الخاصة بالخطوة.
  • لديه وظيفة واحدة ، أو مجموعة من الخطوات التي يتم تنفيذها على نفس مشغل سير العمل ، المسمى Build and push image to ACR.

Important

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

أكمل الخطوات التالية لإنشاء إجراء إنشاء إجراءات GitHub:

  1. انتقل إلى المستودع المتشعب في GitHub ، وحدد علامة Actions التبويب.

  2. في صفحة Get started with GitHub Actions، حدد الارتباط set up a workflow yourself.

    لقطة شاشة تعرض علامة التبويب Actions في مستودع GitHub، مع تمييز ارتباط إنشاء سير العمل.

  3. في الصفحة التالية، الصق التعليمات البرمجية YAML التالية في المحرر.

    name: Build and deploy an app to AKS
    
    on:
      push:
        branches: ["main"]
      workflow_dispatch:
    
    env:
      # Local environment variables used later in the workflow
      AZURE_CONTAINER_REGISTRY: 'name of your Azure Container Registry'
      CONTAINER_NAME: 'productservice'
      RESOURCE_GROUP: 'rg-eshop'
      CLUSTER_NAME: 'aks-eshop'
      DEPLOYMENT_MANIFEST_PATH: './product.yml'
      DOCKER_PATH: './DockerfileProducts.acr'
    
    jobs:
      buildImage:
        permissions:
          contents: read
          id-token: write
        runs-on: ubuntu-latest
        steps:
          # Checks out the repository this file is in
          - uses: actions/checkout@v3
    
          # Logs in with your Azure credentials stored in GitHub secrets
          - name: Azure login
            uses: azure/login@v1.4.6
            with:
              creds: '${{ secrets.AZURE_CREDENTIALS }}'
    
          # Builds and pushes an image up to your Azure Container Registry
          - name: Build and push image to ACR
            run: |
              az acr build --file ${{ env.DOCKER_PATH }} --image ${{ env.AZURE_CONTAINER_REGISTRY }}.azurecr.io/${{ env.CONTAINER_NAME }}:${{ github.sha }} --registry ${{ env.AZURE_CONTAINER_REGISTRY }} -g ${{ env.RESOURCE_GROUP }} .
    
    

    استبدل اسم الخاص ب Azure Container Registry باسم ACR الذي أنشأته في الوحدة السابقة؛ على سبيل المثال، acseshop186748394.

  4. استبدل اسم ملف main.yml سير العمل الافتراضي azure-kubernetes-service.yml، ثم حدد Commit changes.

  5. على Commit changes الشاشة، حدد Commit directly to the main branch، ثم حدد Commit changes.

    لقد انتهيت من إنشاء سير عمل البناء لمسار CI/CD.

  6. في المحطة الطرفية، قم بتشغيل هذا الأمر لعرض الإصدارات الحالية من خدمة المنتج المخزنة في ACR:

    az acr repository show-tags -n AZURE_CONTAINER_REGISTRY --repository productservice --orderby time_desc --output table
    

    عند استبدال AZURE_CONTAINER_REGISTRY باسم ACR الخاص بك ، يجب أن ترى مخرجات مشابهة لما يلي:

    Result
    ----------------------------------------
    v1
    

تشغيل البنية

يتم تشغيل سير عمل الإنشاء تلقائيا بمجرد تثبيت ملف سير العمل. يمكنك أيضا تشغيل البناء يدويا.

  1. في المستودع الخاص بك، حدد علامة التبويب Actions.
  2. على اليسار، ضمن All workflows، حدد سير عمل Build and deploy an app to AKS، ثم حدد Run workflow.

مراقبة البنية

لعرض التقدم في الوقت الحقيقي للبناء:

  1. في المستودع الخاص بك، حدد علامة التبويب Actions.

  2. حدد أحدث تشغيل سير عمل مدرج لسير عمل Build and deploy an app to AKS. اسم التشغيل هو رسالة التثبيت التي استخدمتها في الخطوة السابقة.

  3. حدد وظيفة buildImage.

    لقطة شاشة تعرض سير عمل GitHub قيد التقدم.

  4. إذا انتظرت بضع دقائق، يجب أن تكتمل الخطوات في المهمة بنجاح.

  5. في المحطة الطرفية، قم بتشغيل هذا الأمر مرة أخرى لعرض إصدارات خدمة المنتج المخزنة في ACR.

    az acr repository show-tags -n AZURE_CONTAINER_REGISTRY --repository productservice --orderby time_desc --output table
    

    يجب أن تشاهد إخراجا مشابها للآتي يظهر أنه تمت إضافة إصدار صورة جديد إلى ACR من سير عمل GitHub:

    Result
    ----------------------------------------
    8c75edb7a349ec570bd4eac397015bc3c547186e
    v1