استراتيجيات الإطلاق الحديث مع إجراءات GigtHub (العربية (Arabic))

استراتيجيات الإطلاق الحديث مع إجراءات GigtHub

Thursday, 04 December 2025

//

7 minute read

المبدأ الأساسي: جعل إطلاقات سريعة وغير مؤلمة، وسوف تطلق أكثر من ذلك. وهذا أمر بالغ الأهمية للتنمية السريعة السرعة - فالنشرات السريعة والموثوقة تخلق الحلقة السريعة التي تحتاج إليها. عندما يكون النشر مخيفاً أو بطيئاً، تقوم فرق بدفع التغييرات، وزيادة المخاطر. عندما يكون النشر مملاً وتلقائياً، تقوم بشحن التغييرات الصغيرة بشكل متكرر.

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

استراتيجيات الإطلاق عند مَجَزَة

قبل الغوص في التفاصيل، إليكم كيف تقارن الاستراتيجيات المشتركة:

□ الاستراتيجية □ الأفضل للمعقدة □ المشتركة في □ |----------|----------|------------|-----------| | تستند إلى عوامل □ تطبيقات، إطلاقات واضحة، إطلاقات صريحة، □ البداعات المنخفضة، الندوات المنفردة، الفرق الناضجة □ | الوظائف الممولة من □ نشر مستمر □ إعدادات منخفضة المستوى وأفرقة سريعة الحركة وأفرقة سريعة الحركة □ | & & & □ إصدارات منظمة، نسخ متعددة □ مؤسسة عالية، امتثال - ثقيلة □ | أعلام السركز + أعلام الصفات • أفرقة عالية السرعة ومتوسطة التقنية الكبيرة، الناشئة الناضجة | عُلبة متعددة • المكتبات، قواعد الرموز المشتركة، أفرقة المنبر المتوسطة والمتوسطة، مشاريع برمجيات المصدر المفتوح

مَنْ يَعْمَلُ مَنْ

ا مجموعات & صغيرة: ابدأ بالنشر على الوسم أو على أساس الفرع. واجعل الأمر بسيطاً - يمكنك دائماً إضافة التعقيد لاحقاً. التنمية على أساس الترنك مع الأعلام المميزة شعبية على نطاق واسع ولكنها مبالغ فيها بالنسبة للأفرقة الصغيرة.

الـتـنـجم: غالباً ما يتطلب Getflow أو ما يماثلها من أجل الامتثال، وسجلات مراجعة الحسابات، وإدارة الإصدارات. بيئات متعددة (dev، وQA، والتشكيل، وprod) مع بوابات الموافقة.

مُسو سو سو سو سو سو سو سو سو م مروج: الوسم هو مثالي. دفع علامة، النشر يحدث. لا مراسم، لا نفقات عامة.

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

1 - النشر المستند إلى الوصاق

أبسط الاستراتيجيات وأكثرها موثوقية. علامات تعريف مختلفة تشير إلى طريق إلى بيئات مختلفة أو تؤدي إلى إجراءات مختلفة.

الهدف

on:
  push:
    tags:
      - 'release-*'  # Production
      - 'local-*'    # Dev environment
- name: Build Docker image
  run: |
    TAG_NAME=${GITHUB_REF#refs/tags/}
    if [[ "$TAG_NAME" == local-* ]]; then
      docker build -t myapp:local .
    else
      docker build -t myapp:latest -t myapp:$(date +%s) .
    fi

لماذا تعمل؟: نموذج عقلي بسيط، نشرات صريحة، عودة سهلة عن طريق العلامات الزمنية.

# Deploy to production
git tag release-v2024.12.01 && git push origin release-v2024.12.01

# Deploy to dev
git tag local-feature-test && git push origin local-feature-test

نسخ النسخ متعدد Comment

لـ مُحَدَّد مع متعدد قابل للنشر، استخدام وَصْف إلى تحديد أيّ حزمة إلى إطلاق:

# Different workflows, different tag patterns
# umami-net.yml
on:
  push:
    tags: ['umamiv*.*.*']  # e.g., umamiv1.0.5

# fetchextension.yml
on:
  push:
    tags: ['fetchextension-v*.*.*']  # e.g., fetchextension-v1.2.0

استخرج النسخة واستخدمها في:

- name: Extract version
  run: echo "VERSION=${GITHUB_REF#refs/tags/umamiv}" >> $GITHUB_OUTPUT

- name: Build & Pack
  run: |
    dotnet build -c Release -p:Version=${{ steps.version.outputs.VERSION }}
    dotnet pack -c Release -p:PackageVersion=${{ steps.version.outputs.VERSION }}

بالنسبة للإصدار الآلي، انتقِ مِنْ مجلّد:

<PackageReference Include="MinVer" Version="6.0.0" PrivateAssets="all" />
<PropertyGroup>
  <MinVerTagPrefix>umamiv</MinVerTagPrefix>
</PropertyGroup>

فرع النشر

انشر تلقائياً عندما تشفير يهبط على فروع محددة. مشترك في الفرق الناشئة وفرق الحركة السريعة.

on:
  push:
    branches: [main]      # → Production
    # branches: [develop] # → Staging

Pro ProS ProS: لا يوجد خطوة يدوية، نشرات على الإندماج كون CCCC: نشرات عرضية ممكنة، تاريخ أقل وضوحاً

أنا أستخدم نهج هجين - بناء على دفع فرع (CI) التحقق، ولكن فقط نشر على العلامات:

on:
  push:
    tags: ['scheduler-*']
    branches: [main, local]

jobs:
  build:
    # Always build
  publish:
    if: startsWith(github.ref, 'refs/tags/')  # Only publish on tags

تحديثات تلقائية مع مجلس

بالنسبة لعمليات النشر المستضافة ذاتياً، ( ١ كورنثوس ٧ : ٧ ) فَقَدْ تَعَلَّمْتُ مِنْهُمْ أَنْ يَسْتَطِيعُوا أَنْ يَعْرِفُوا عَلَيْهِمْ أَنْ يَتَعَلَّمُوا عَلَيْهِمْ أَنْ يَتَعَلَّمُوا عَلَيْهِمْ أَنْ يَتَعَلَّمُوا عَلَيْهِمْ . سوّاء:

services:
  app:
    image: myapp:latest
    labels:
      - "com.centurylinklabs.watchtower.enable=true"

  watchtower:
    image: containrrr/watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    command: --interval 300  # Check every 5 minutes

تدفق النشر: دفع بطاقة GitHub Actions يبني GitHub GuitHub Actions Building إلى تسجيل TM Burgarter سحب TM Washer Bull: زهاء 5 دقائق.

لا يُشغِّي الجودة

عمليات الانتشار السريع عديمة الفائدة إذا قمت بنشر الحشرات. يجب أن يتضمن كل تدفق لسير العمل بوابات:

- name: Run tests
  run: dotnet test --configuration Release

- name: Build
  run: dotnet build --configuration Release

# Tests or build fail → workflow stops → no publish

فيما يتعلق بالمجموعات المتعددة الأطر، وضع جميع الأهداف:

- run: dotnet build -c Release --framework net8.0
- run: dotnet build -c Release --framework net9.0

مراسلة مع المنظمة الدولية للفرانكتات

النهج الحديث - لا أسرار للتناوب، لا مفاتيح للتسريب:

permissions:
  id-token: write
  contents: read

- uses: NuGet/login@v1
  with:
    user: 'myusername'

- run: dotnet nuget push *.nupkg --api-key ${{ steps.login.outputs.NUGET_API_KEY }}

غيت هوب يتبادل رمزه OIDC لـ a قصير العمر Nuget API مفتاح اضبط ثقة يعمل Nuget. org إلى تمكين هذا.

إثبات أن أثرك تم بناؤه في شركة "سي آي" وليس العبث به، مطلوب بشكل متزايد من قبل الشركات.

permissions:
  id-token: write
  attestations: write

- uses: docker/build-push-action@v6
  id: push
  with:
    push: true
    tags: myapp:latest

- uses: actions/attest-build-provenance@v2
  with:
    subject-name: index.docker.io/myuser/myapp
    subject-digest: ${{ steps.push.outputs.digest }}
    push-to-registry: true

يجري التحقق من المستهلك مع: gh attestation verify oci://index.docker.io/myuser/myapp:latest --owner myuser

هذا مُنجز المستوى 2للمستوى 3، الاستخدام تدفقات عمل قابلة لإعادة استخدام.

أولاً- مقدمة

وتحتاج الأفرقة إلى قيام أصحاب المصلحة بمعاينة التغييرات قبل الدمج.

النهج المتبع في المؤسسة - بيئات المعاينة القائمة على الفرع:

on:
  pull_request:
    types: [opened, synchronize]

- run: |
    BRANCH=$(echo ${{ github.head_ref }} | sed 's/[^a-zA-Z0-9]/-/g')
    docker build -t myapp:preview-$BRANCH .
    # Deploy to k8s namespace, cloud platform, etc.

نهج البدء/البداية -أنفق آلتك المحلية:

# Cloudflare Tunnel (free)
cloudflared tunnel run --url http://localhost:5000 my-preview
# → https://my-preview.cfargotunnel.com

الاستخدام في حالة الاستخدام وحدة خدمات VPN للفريق الداخلي الدخول إلى جهازك Dev.

جاري جاري جاري جاري جاري جاري جاري جاري جاري جاري جاري جاري جاري جاري جاري جاري جاري جاري جاري جاري جاري جاري حفظالشعارات تلتصق بالأرجاء إلى الأبد

git tag -d old-test-tag                      # Delete local
git push origin :refs/tags/old-test-tag      # Delete remote

***** تكون ثابتة.

  • release-YYYY.MM.DD
  • local-feature-name خ ف خ ف
  • packagev1.2.3 في مكتبات مكتبات

الأسرار- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - مُحَجّه هوب المُسَاسر"أبداً في الشفرة" "أسرار نمطية:"

  • DOCKER_HUB_ACCESS_TOKEN
  • NUGET_API_KEY (أو استخدام الاستخدام OSIDC)
  • NPM_TOKEN

2 - التنمية: استخدام إشارات مرجعية إلى المشاريع أثناء التطوير، والانتقال إلى إشارات الحزم للتحقق من النشر:

<ProjectReference Include="..\MyLib\MyLib.csproj" />
<!-- <PackageReference Include="MyLib" Version="1.0.0" /> -->

الانتقال إلى Kobernetes

مبادئ متشابهة، أدوات مختلفة:

  • Dokkker compurnetes |----------------|------------| لَجْسِلَ لِسْرِجْر Aargo / | □ DOkker- Compons.yml بيئات □ Name مساحات الاسم TM TM ● الحاويات التي أعيد إطلاقها
  • دليل العودة إلى الوراء □ GitOps العودة إلى

أولاً - موجز

  1. & بسيط:يغطي النشر القائم على أساس الوسم معظم الاحتياجات
  2. زيادة التعقيد عند الحاجة:الفروع، متعددة البيئـة، شهادـات
  3. بوابات الجودة: يجب أن تمر الاختبارات قبل النشر:
  4. ****التأريخ الزمني للعلامات أو تاريخ GetOps:
  5. تأمين خط أنابيبك: OIDC للاسرار وشهادات للإثبات : OIDC للاسرار وشهادات للإثبات
  6. ****: Sollo dev o start upstup prostruction

الواجهات المعروضة هنا قيد التشغيل في هذا المستودع - التحقق .github/workflows/ التنفيذ الكامل.

يُذكر: عمليات النشر السريعة والموثوقة هي أساس التنمية السريعة. إستثمر في خط أنابيب إطلاق سراحك في وقت مبكر.

Finding related posts...
logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.