تمرين - بناء صورة تطبيق الإنتاج
في التمرين السابق، قمت ببناء سير العمل المرحلي لإنشاء صورة التطبيق ونشرها. في هذه الوحدة، يمكنك إنشاء سير عمل إنتاج يستخدم مشغل الإصدار الموسوم.
في هذا التمرين، ستقوم بما يلي:
- إنشاء سير عمل الإجراءات.
on tag
إنشاء المشغل.- إنشاء صورة الإنتاج ودفعها.
- إنشاء رمز مميز للوصول الشخصي (PAT).
- تشغيل حدث العلامة.
إنشاء سير عمل إجراءات GitHub
لبدء إنشاء البنية الأساسية لبرنامج ربط العمليات التجارية، انتقل إلى نسخة المستودع الخاصة بك من مستودع العينة في موقع GitHub على الويب وحدد علامة التبويب Actions .
في الجزء الأيمن، حدد سير عمل جديد.
في صفحة اختيار سير عمل ، حدد إعداد سير عمل بنفسك.
انسخ سير العمل الأساسي والصقه في جزء التحرير:
# 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.
أعلى جزء التحرير، أعد تسمية الملف من
main.yml
إلىbuild-production.yml
.name
تغيير المفتاح منCI
إلىBuild and push the tagged build to production
.
إنشاء مشغل العلامة "on"
قم بتغيير المشغلات الافتراضية في المفتاح on
.
قم بإزالة المشغل الثاني، وترك علامات
push
فقط.branches
استبدل المفتاح بالمفتاح التاليtags
. يعني هذا المفتاح أن سير العمل يعمل فقط على علامات معينة. في هذه الحالة، يتم تشغيل سير العمل فقط إذا كانت العلامةv*
تتبع النمط، والذي يتضمنv1.0.0
.name: Build and push the tagged build to production on: push: tags: - 'v*'
تكوين خطوة السداد مع الخروج
كما في التمرين السابق:
jobs
تغيير المفتاح منubuntu-latest
إلىubuntu-20.04
.- أعد تسمية
build
المفتاح إلىbuild_push_image
. - في
steps
المفتاح، احذف آخر خطوتين من المثال من القالب واحتفظ بالخيارcheckout
.
إنشاء خطوة جديدة تجمع معلومات الإصدار الضرورية. يمكنك استخدام
::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
.
في اللوحة اليسرى، ابحث عن Docker Login. حدد النتيجة الأولى المنشورة بواسطة Docker.
ضمن التثبيت، حدد أيقونة النسخ لنسخ استخدام YAML.
الصق YAML المنسخ أسفل
Fetch latest version
الإجراء.أضف القيم التالية إلى
registry
المفاتيحusername
و وpassword
:registry
:${{ secrets.ACR_NAME }}
username
:${{ secrets.ACR_LOGIN }}
password
:${{ secrets.ACR_PASSWORD }}
احذف المفاتيح الأخرى، لأنها غير مستخدمة في هذا التمرين.
في اللوحة اليمنى ضمن Marketplace، ابحث عن build and push docker images، وحدد النتيجة الأولى التي نشرها Docker.
ضمن التثبيت، حدد أيقونة النسخ لنسخ استخدام YAML.
الصق YAML المنسوخة أسفل المفتاح الأخير من الإجراء المنسوخ مسبقاً
docker-login
.أعد تسمية
name
المفتاح منBuild and push Docker images
إلىBuild and push production images
.أضف القيم التالية إلى
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
.احذف المفاتيح الأخرى، لأنها غير مستخدمة في هذا التمرين.
أضف إجراء آخر يسمى
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 لدفع علاماتك في الخطوة التالية وتشغيل البرنامج النصي للتوزيع في وحدة لاحقة.
انتقل إلى نسخة المستودع لنموذج المستودع في موقع GitHub على الويب. في الزاوية العلوية اليسرى، حدد صورة ملف التعريف الخاص بك، ثم حدد الإعدادات.
حدد إعدادات المطور في أسفل القائمة اليمنى.
حدد الرموز المميزة>للوصول الشخصي (الكلاسيكي) من القائمة المنسدلة.
حدد إنشاء رمز مميز للوصول الشخصي.
ضمن ملاحظة، قم بتوفير اسم ل PAT الخاص بك، مثل myPersonalAccessTokenLM.
ضمن تحديد النطاقات، حدد خانة الاختيار بجوار سير العمل.
إشعار
يمنح نطاق سير العمل وصول مستودع المسؤول إلى إجراءات Github. تحتاج إلى هذا الوصول لدفع العلامات الخاصة بك في الخطوة التالية وتشغيل البرنامج النصي للتوزيع في وحدة لاحقة.
حدد Generate token في أسفل الصفحة.
حدد أيقونة النسخ لنسخ رمز الوصول الشخصي المميز الخاص بك. احفظ PAT لاستخدامه في الخطوات اللاحقة.
تشغيل حدث العلامة
في Azure Cloud Shell، انتقل إلى المستودع المستنسخ وقم بتشغيل
git pull
.شغّل الأمر التالي:
git tag -a v2.0.0 -m 'My first tag'
قم بتشغيل الأمر التالي. عند المطالبة، قم بتوفير PAT الخاص بك ككلمة مرور.
git push --tags
هام
يستخدم المستودع الأصلي الإصدار 1.0.0، لذلك يجب دفع علامة مختلفة لأنه لا يمكن وجود التكرارات.
حدد علامة التبويب Actions وتحقق من عملية التشغيل.
عند اكتمال العملية، قم بتشغيل الأمر التالي في Cloud Shell، مع
<ACR_NAME>
استبدال بACR_NAME
، للتأكد من إدراج العلامتين في النتائج.az acr repository show-tags --repository contoso-website --name <ACR_NAME> -o table
انتقل إلى الوحدة التالية للتعرف على استخدام Helm، وهي أداة حزم لتطبيقات Kubernetes، لأتمتة البنية الأساسية لبرنامج ربط العمليات التجارية الخاصة بك.