بناء التدفق الخاص بك لبوابة من نقطة الصفر

في ذلك اليوم كانت هناك مقالة جميلة ، وإن كانت مثيرة للجدل - من فضلك ، توقف عن استخدام GitFlow! (وعشرات آخرين حول نفس الموضوع بعده).


كانت نقاطها الرئيسية:


  • يتعارض GitFlow مع أطروحة "يجب أن تكون الفروع قصيرة الأجل".
    هذا أمر مهم ، لأنه كلما قل عمر الفرع ، قل احتمال حدوث النزاعات (ليس فقط البوابة ، ولكن أيضًا منطقية)
  • يثني GitFlow عمليات إعادة التوطين لحفظ عمليات الدمج.
    نعم ، يمكن حفظها من خلال تجديد الاشتراك ، لكن فرق Git Flow لا تفعل ذلك.
  • ينكر GitFlow نهج التسليم المتواصل ، معتقدًا أن كل إجراء تسليم يجب أن يتم من قبل مهندس تحرير ، وبشكل عام يمكنك أن ترى أنه يركز فقط على دورة إطلاق طويلة.
  • GitFlow ليس صديقًا للخدمات الصغيرة على رأس المستودعات المتعددة (ومع ذلك ، ليس هناك الكثير للقيام به هنا ، إنها فكرة تنتهي دائمًا بشكل سيء)
  • لكن المشكلة مع GitFlow هي أنها ليست صديقة للمستودعات الأحادية أيضًا.


    تعثرت بنفسي على هذا في عملية تصميم خطوط أنابيب CI: يتداخل GitFlow بشكل كبير عندما يتم تشغيله فوق مستودع واحد مع العديد من المخرجات ، على سبيل المثال ، عندما تكون كل من الواجهة الخلفية والواجهة الأمامية منفصلة في مستودع واحد - نظرًا لأنها تسمح لك بالالتزام بإطلاق الفروع ، يمكن أن تحدث التعارضات مع الدمج العكسي في حالة وجود أكثر من فرع إصدار واحد في كل مرة. نعم ، حتى لو كان واحدًا ، فإن الأمر سيء تمامًا - في مثل هذه الظروف ، من الضروري تصحيح آليات إصدار GitFlow من حيث المبدأ ، بحيث تعمل الإصدارات المنفصلة بطريقة أو بأخرى من الكيانات.



اذا مالعمل؟


ساعد كاتب المقالة الأصلية في تطوير علامات + ميزات تستند إلى الجذع - تقريبًا google google trunk ، ولكن ليس في الحقيقة. ولكن هذا لا يعني على الإطلاق أنك بحاجة إلى هذا النهج.


أولاً ، تحتاج إلى فهم الأولويات.


كيف تبدو إصداراتك؟


  • ? , , , , ?
  • ? , , WebSockets, . .
  • ? LTS-, backport- ( , , 2016 ) ? canary beta-?
  • Continuous Delivery?

?


  • ( ) , ? design review merge/pull-request-, PR — 5 100 ?
  • , ?

? , ?


  • : -,

, — . , flow , . Apache Kafka SQS — , , -, - , .


— . ( ) , , , , , , , .


, , — - . , JSON YAML, — , , .


, , , — , , — . , , . — , — .


flow


-, . , , ( ). , , , , , , , , v1 v2 .


, , . , , , CI, : .


— Continuous Delivery.


— , deliverables. - , , Google. — 10% - — -, .


. , :



  • CI-


  • deliverables:


    • prestable/staging-
    • alert- ( -)
    • ( )

  • — flow, ,


  • , backport- — , . , (master/develop/trunk), , . git — cherry-picking. "" — , .


    • ,
    • , . JS — eslint-. Prettier ( ).


, 5-6 , — trunk-based development ( , ). — , , git - . Google , , , , . Facebook , , .


, Trunk-based — " ", , , . , CI/CD, :


  • feature flags — .


    , .


    . 2-3 , , ( , )


  • — merge queue, — , .


    , , .



, - :


  • github-flow
  • CI,
  • git-flow ( + )
  • CD
  • git-flow , CD, staging-,
  • trunk-based
  • trunk-based-

— . github-flow ( GitOps- — , ). , "". , , — .


, , , , .


Git — , , . , , .


إذا شعرت أن جهاز Git الخاص بك يؤلمك - فاكتب إلي ، سيسعدني تقديم المساعدة.


All Articles