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

مكتمل

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

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

في هذا التمرين، ستقوم بما يلي:

  • إنشاء سير عمل الإجراءات.
  • on tag إنشاء المشغل.
  • إنشاء صورة الإنتاج ودفعها.
  • إنشاء رمز مميز للوصول الشخصي (PAT).
  • تشغيل حدث العلامة.

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

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

  2. في الجزء الأيمن، حدد سير عمل جديد.

    Screenshot that shows the New workflow button on the GitHub Actions page.

  3. في صفحة اختيار سير عمل ، حدد إعداد سير عمل بنفسك.

  4. انسخ سير العمل الأساسي والصقه في جزء التحرير:

    # 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.
    
  5. أعلى جزء التحرير، أعد تسمية الملف من main.yml إلى build-production.yml.

  6. name تغيير المفتاح من CI إلى Build and push the tagged build to production.

إنشاء مشغل العلامة "on"

قم بتغيير المشغلات الافتراضية في المفتاح on.

  1. قم بإزالة المشغل الثاني، وترك علامات push فقط.

  2. branches استبدل المفتاح بالمفتاح التاليtags. يعني هذا المفتاح أن سير العمل يعمل فقط على علامات معينة. في هذه الحالة، يتم تشغيل سير العمل فقط إذا كانت العلامة v* تتبع النمط، والذي يتضمن v1.0.0.

    name: Build and push the tagged build to production
    
    on:
      push:
        tags:
          - 'v*'
    

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

  1. كما في التمرين السابق:

    • jobs تغيير المفتاح من ubuntu-latest إلى ubuntu-20.04.
    • أعد تسمية build المفتاح إلى build_push_image.
    • في steps المفتاح، احذف آخر خطوتين من المثال من القالب واحتفظ بالخيار checkout .
  2. إنشاء خطوة جديدة تجمع معلومات الإصدار الضرورية. يمكنك استخدام ::set-output الأمر الداخلي لإنشاء هذه الخطوة. أضِف الأسطر التالية أسفل إجراء الدفع:

    - name: Fetch latest version
      id: fetch_version
      run: echo ::set-output name=TAG::${GITHUB_REF#refs/tags/}
    

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

    name: Build and push the tagged build to production
    
    on:
      push:
        tags:
          - 'v*'
    
    jobs:
      build_push_image:
        runs-on: ubuntu-20.04
    
        steps:
          - uses: actions/checkout@v2
    
          - name: Fetch latest version
            id: fetch_version
            run: echo ::set-output name=TAG::${GITHUB_REF#refs/tags/}
    

إضافة خطوات Docker

كما هو الحال بالنسبة لسير العمل المرحلي، أضف Docker Login الخطوات و Build and push Docker images .

  1. في اللوحة اليسرى، ابحث عن Docker Login. حدد النتيجة الأولى المنشورة بواسطة Docker.

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

  3. الصق YAML المنسخ أسفل Fetch latest version الإجراء.

  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.

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

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

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

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

    • context: .
    • push: true
    • tags: ${{secrets.ACR_NAME}}/contoso-website:latest,${{secrets.ACR_NAME}}/contoso-website:${{ steps.fetch_version.outputs.TAG }}

    لاحظ كيف تختلف قيمة tags المفتاح عن سير العمل المرحلي. استخدام steps. في “YAML” هو ممارسة شائعة للإشارة إلى الخطوات السابقة في خط الأنابيب. عند استخدام set-output في fetch_version الخطوة، يمكنك تعيين إخراج الخطوة إلى قيمة GITHUB_REF المتغير. يتوفر هذا الناتج الآن في التدفق داخل الكائن steps.

  11. احذف المفاتيح الأخرى، لأنها غير مستخدمة في هذا التمرين.

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

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

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

    name: Build and push the tagged build to production
    
    on:
      push:
        tags:
          - 'v*'
    
    jobs:
      build_push_image:
        runs-on: ubuntu-20.04
    
        steps:
          - uses: actions/checkout@v2
    
          - name: Fetch latest version
            id: fetch_version
            run: echo ::set-output name=TAG::${GITHUB_REF#refs/tags/}
    
          - 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 production images
            uses: docker/build-push-action@v5.0.0
            with:
              context: .
              tags: ${{secrets.ACR_NAME}}/contoso-website:latest,${{secrets.ACR_NAME}}/contoso-website:${{ steps.fetch_version.outputs.TAG }}
              push: true
    

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

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

هذه المرة، لا يتم تشغيل إجراء الإنتاج، لأنك لم تدفع علامة جديدة، ولكن الإجراء المرحلي السابق يشغل صورة جديدة latest وينشئها.

إنشاء رمز مميز للوصول الشخصي (PAT)

تحتاج إلى PAT لدفع علاماتك في الخطوة التالية وتشغيل البرنامج النصي للتوزيع في وحدة لاحقة.

  1. انتقل إلى نسخة المستودع لنموذج المستودع في موقع GitHub على الويب. في الزاوية العلوية اليسرى، حدد صورة ملف التعريف الخاص بك، ثم حدد الإعدادات.

  2. حدد إعدادات المطور في أسفل القائمة اليمنى.

  3. حدد الرموز المميزة>للوصول الشخصي (الكلاسيكي) من القائمة المنسدلة.

  4. حدد إنشاء رمز مميز للوصول الشخصي.

  5. ضمن ملاحظة، قم بتوفير اسم ل PAT الخاص بك، مثل myPersonalAccessTokenLM.

  6. ضمن تحديد النطاقات، حدد خانة الاختيار بجوار سير العمل.

    Screenshot that shows the personal access tokens page.

    إشعار

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

  7. حدد Generate token في أسفل الصفحة.

  8. حدد أيقونة النسخ لنسخ رمز الوصول الشخصي المميز الخاص بك. احفظ PAT لاستخدامه في الخطوات اللاحقة.

    Screenshot that shows the personal access token after it's created.

تشغيل حدث العلامة

  1. في Azure Cloud Shell، انتقل إلى المستودع المستنسخ وقم بتشغيل git pull.

  2. شغّل الأمر التالي:

    git tag -a v2.0.0 -m 'My first tag'
    
  3. قم بتشغيل الأمر التالي. عند المطالبة، قم بتوفير PAT الخاص بك ككلمة مرور.

    git push --tags
    

    هام

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

  4. حدد علامة التبويب ⁧⁩Actions⁧⁩ وتحقق من عملية التشغيل.

  5. عند اكتمال العملية، قم بتشغيل الأمر التالي في Cloud Shell، مع <ACR_NAME> استبدال ب ACR_NAME، للتأكد من إدراج العلامتين في النتائج.

    az acr repository show-tags --repository contoso-website --name <ACR_NAME> -o table
    

انتقل إلى الوحدة التالية للتعرف على استخدام Helm، وهي أداة حزم لتطبيقات Kubernetes، لأتمتة البنية الأساسية لبرنامج ربط العمليات التجارية الخاصة بك.