هل طلب الميزة الخاص بك متعلق بمشكلة؟
طوال عملية العمل على autobot ، عانيت من التعامل مع إعداد تكوين تسمية السيارات / التحليل / التلميع.
حتى عندما بدأت في استخدام تلقائي ، كان تعيين سلوك ما أريده للتكوين المتاح صعبًا بعض الشيء.
سأوضح أدناه بعض السلوكيات التي أعتقد أنها تجعلها أكثر تعقيدًا مما يجب أن تكون عليه:
labels
و skipReleaseLabels
. الملصق في labels
أيضًا في skipReleaseLabels
سيتخطى الإصدار. لذلك ، إذا كنت تريد ملصق توثيقي لا يعمل على إصدار ، فيجب إضافته في مكانين. ماذا يحدث أيضًا عند إضافة major
أو minor
أو patch
إلى قسم skipReleaseLabels
؟ ثم هناك التصنيف skip-release
والذي يختلف عن skipReleaseLabels
.minor
و documentation
كلاهما موجودًا ، فما عنوان التغيير الذي يسبقه؟صِف الحل الذي تريده
أود أن أقترح أن نبسط تعريف الملصق إلى حد كبير وأن نوثق بوضوح أي حالات زاوية. هذا مجرد اقتراح واحد.
{
labels: [
{
name: 'Breaking change',
releaseType: 'major',
description: 'A non-backwards compatible change'
changelogTitle: 'Breaking changes',
color: '#FFF000'
},
{
name: 'Feature',
releaseType: 'minor',
description: 'A new capability'
changelogTitle: 'Improvements',
color: '#FAA00A'
},
{
name: 'Bug fix',
releaseType: 'patch',
description: 'A bug fix'
changelogTitle: 'Bug fixes',
color: '#FAA00A'
},
{
name: 'Skip Release',
releaseType: 'skip',
description: "Ensures a release doesn't happen",
// changelog title not valid for skip releases
// changelogTitle: '',
color: '#FAA00A'
},
{
name: 'Documentation',
releaseType: 'none',
description: 'Used to denote documentation changes',
changelogTitle: 'Documentation updates',
color: '#C8C8C8'
}
]
}
منطق
name
و releaseType
releaseType
بأنه major | minor | patch | skip | none
. يمكن تقليل هذا إلى ثلاث فئات: semver | skip | none
.semver
واحد في أي وقت محدد.semver
_mob_ موجودة ، ما لم يكن none
موجودًا بطريقة أخرى.skip
صالحة فقط عند إقرانها بعلامة semver
وتكون بخلاف ذلك علامة no-op.none
أي إصدار بمفرده ، ولكن يمكن تضمينه مع تسمية semver
لتضمين إدخال تغيير إضافي.none
في تخطي الإصدار في حالة وجود ملصق semver
.none
لإضافة العلاقات العامة ضمن أقسام مختلفة من سجل التغييرصِف البدائل التي فكرت فيها
من المسلم به أن هذا لا يزال معقدًا وبالتأكيد أكثر تفصيلاً. سيكون البديل (وحل وسط بسيط لما لدينا اليوم) هو التعامل مع تسميات semver
مختلف.
{
labels: {
major: "Version: Major",
minor: {
name: "Version: Minor",
changelogTitle: "Bug fixes"
},
patch: "Version: Patch",
other: [
{
name: 'Skip release',
skipRelease: true
},
{
name: 'Documentation',
changelogTitle: 'Documentation updates'
}
]
}
}
في هذا الإصدار ، يحتفظ major
و minor
و patch
بواجهة برمجة تطبيقات مشابهة لما لديهم اليوم. ومع ذلك ، يتم التعامل معهم بشكل أساسي على أنهم حالات خاصة. تدخل جميع التصنيفات الأخرى في مجموعة other
(والتي قد يكون لها اسم أفضل).
في هذا السيناريو:
semver
واحدًا أن يكون موجودًا في المرة الواحدةskipRelease: true
يمكن تضمينها في other
تسميات لجعلها تخطي.changelogTitle
يمكن تضمينها في other
تسميات لإضافة إدخال التغيير. (مرة أخرى ، سيكون هذا تكرارًا لإدخالات أخرى).skipRelease
أو changelogTitle
سيجعل التسمية تسمية عشوائية غير عملية (والتي تحافظ على دعم التسمية التعسفي الذي لدينا اليوم).في النهاية أنا منفتح على الأفكار الأخرى. أعتقد فقط أن نهجنا الحالي مليء جدًا بحالات الركن غير الموثقة والمشكلات. أود أن أجعل هذا سهل الفهم (والترميز) قدر الإمكان.
أنا أحب الخيار الأول. إنه بسيط للغاية ونظيف ، أواجه مشكلة في تمييز الفرق بين none
و skip
. إذا فهمت بشكل صحيح ، فإن skip
ليس له أي تأثير على سجل التغيير ويجب أن يكون مع ملصق semver ، و none
سيتخطى الإصدار ولكنه ينشئ إدخال تغيير فريد.
تتخلص هذه الطريقة من معظم الاختصارات ولكن أعتقد أنه لا يزال بإمكاننا دعم بعضها؟
على سبيل المثال ، سيؤدي ما يلي إلى تجاوز التصنيف الافتراضي major
ولكنه يرث أيضًا الوصف وعنوان التغيير
{
labels: [
{
name: 'Breaking change',
releaseType: 'major'
}
]
}
أو مجرد تعديل العنوان
{
labels: [
{
releaseType: 'major',
changelogTitle: 'Super Big Changes'
}
]
}
skip
لا تقوم بالإفراج. يعني none
أن التسمية ليس لها أي تأثير على الإصدار ... لذلك قد يتم إصدارها أو قد لا يتم إصدارها ، اعتمادًا على وجود تسميات أخرى. إنها تحتاج إلى اسم أفضل.
إذن ، وفقًا لاقتراحك ، تحتوي التصنيفات على احتياطات افتراضية بناءً على ما هو releaseType
الموجود؟ اعتقد ان هذا منطقي.
إذن ، وفقًا لاقتراحك ، تحتوي التصنيفات على احتياطات افتراضية بناءً على نوع الإصدار الموجود؟ اعتقد ان هذا منطقي.
بلى
zephraph إنها بحاجة إلى اسم أفضل.
أعتقد أنها واحدة رائعة. لا يوجد شيء أفضل من قول "لا شيء لأنه ليس له أي تأثير على عملية الإصدار ، مثل الأعمال الروتينية / التبعيات / أيا كان".
أعتقد أن هذا منطقي.
نعم ، تمامًا.
الاقتراح رائع.
أعتقد أن كلا من name
و chagelogTitle
يجب أن يكون لهما قيم افتراضية على أساس releaseType
.
لدي علاقات عامة لهذا الآن. انها لا تتناول ما يلي
يمكن إضافة عناوين سجل التغيير إلى التصنيفات ، ولكن ليس من الواضح تمامًا في أي ترتيب تأخذ سابقة. في حالة وجود كل من التسميات الثانوية والتوثيق ، ما هو عنوان التغيير الذي يحظى بالأسبقية؟
Logic
من المحتمل أن تكون معظم عمليات التحقق الموضحة هنا موجودة في autobot. لا أعتقد أن السيارة نفسها يجب أن تفرض هذا
(المتعلقة بـ 1)> لا يمكن تضمين عدة تسميات لإضافة العلاقات العامة ضمن أقسام مختلفة من سجل التغيير
أنا لا أفهم. كيف _ "تكون تسمية التخطي صالحة فقط عند إقرانها بتسمية semver وتكون بخلاف ذلك علامة no-op." _ منطقية؟ إذا كان لدي ملصق deps
أو infra
، اكتب skip
وأريد تخطي الإصدار لماذا أحتاج إلى إضافة تسمية semver أيضًا؟ أظن أنه يجب علي استخدام none
بعد ذلك ، لكن هذا يسمح أيضًا بإضافة ملصق semver أيضًا ، لذا ... WAT ؟! :د
لدي حاليا
"skipReleaseLabels": [
"documentation",
"skip-release",
"devDeps",
"infra"
],
"labels": {
"deps": {
"name": "deps",
"title": "🔩 Dependency Updates"
},
"devDeps": {
"name": "devDeps",
"title": "🔩 Dependency Updates"
},
"documentation": {
"name": "documentation",
"title": "🗒️ Documentation"
},
"core": {
"name": "core",
"title": "📦 Core"
}
},
وأريد أن أتخطى المستندات ، وتخطي الإصدار ، و devDeps والبنية التحتية ، لكن لا أريد أن أتخطى deps
على سبيل المثال. لأنني أستخدم التجديد وأريد إصدارات التصحيح على fix(deps)
.
لدي أيضًا onlyPublishWithReleaseLabel
ممكّنًا على أي حال ، لذا لن تكون مشكلة كبيرة بالنسبة لي.
وشيء آخر ، هل changelogTitle
على علامة dist-tag next
؟ أنا فقط أطلب التوضيح ، لأنه لا يظهر في العلاقات العامة.
tunnckoCore أعتقد أن الإعداد سيبدو
{
"labels": [
{
"name": "deps",
"title": "🔩 Dependency Updates",
// when deps are merged create a patch release
"releaseType": "patch"
},
{
"name": "devDeps",
"title": "🔩 Dependency Updates",
"releaseType": "none"
},
{
"name": "documentation",
"title": "🗒️ Documentation",
"releaseType": "none"
},
{
"name": "core",
"title": "📦 Core",
"releaseType": "patch"
}
]
}
لا شيء يعمل بشكل فعال كـ skip
. ولكن إذا كنت حقًا بحاجة إلى إصدار تحديث devDep
يمكنك إضافة patch
وسيتم إصدار إصدار. هذا يختلف عن إضافة تسمية skip
، والتي ستتخطى الإصدار بغض النظر عن التسميات الأخرى.
التغيير
انا لم افعل هذا ايضا لا يزال مجرد عنوان. سأضيف هذا إلى العلاقات العامة الخاصة بي من أجل إعادة البناء (لا يزال ليس في التالي. سأخرجه بعد changelogTitle)
حق. حسنا عظيم :)
تم إصدار الإصدار في v8.0.0-next.8
هل الان؟ أظن أنه تم نشر prerelease
s على next
؟ : التفكير: على أي حال ، أنا لست في عجلة من أمره. لا يزال القتال مع Yarn v2 + pnp والبناء / التجميع.
تحرير: وهل لا يزال فقدان title/changelogTitle
يعني أنه لن يتم إنشاء قسم في ملاحظات الإصدار؟
tunnckoCore ، توجد تطلقه .
أنا أسأل عن "التسميات المخصصة" الأخرى التي نضيفها من التكوين والتي لا تتعلق بـ semver. إذا كان لدي ملصق infra
بدون عنوان فلن تتم إضافته ، أليس كذلك؟ وعندما يكون لدي عنوان (كما هو الحال في devDeps) ، ستتم إضافته.
: صاروخ: تم إصدار الإصدار في v8.0.0: صاروخ:
adierkens ، يبدو أن هذه المشكلة كانت الدافع الرئيسي وراء مراجعة v8 الرئيسية ، لذلك أطرح هذا السؤال هنا ... هل هناك أي شيء خاص أحتاج إلى القيام به للترقية إلى الإصدار 8 من الإصدار v7.x؟
إذا كان لديك أي labels
إضافي من skipReleaseLabels
، فستحتاج إلى استخدام التنسيق الجديد
https://intuit.github.io/auto/pages/autorc.html#label - التخصيص
رائع! : تادا: سأحاول ذلك في عطلة نهاية الأسبوع.
بادئ ذي بدء ، تغييرات رائعة لـ v8!
بخصوص
يمكن إضافة عناوين سجل التغيير إلى التصنيفات ، ولكن ليس من الواضح تمامًا في أي ترتيب تأخذ سابقة. في حالة وجود كل من التسميات الثانوية والتوثيق ، ما هو عنوان التغيير الذي يحظى بالأسبقية؟
من الاختبارات المحلية ، يبدو أن السلوك الحالي هو:
changelogTitle
بترتيب الأولوية releaseType
( major
، minor
، patch
، ثم كل الآخرين)releaseType
المذكورة أعلاه ، فسيتم تضمين PR في قسم الملصق المحدد في التكوين أولاً (تسميات افتراضية تسبق كل العلامات الأخرى)في الأسفل يوجد بعض الأمثلة:
(1): تسميات ثانوية ولا شيء
التكوين:
"labels": [
{ "name": "typescript", "changelogTitle": "Typescript Change", "releaseType": "none" },
{ "name": "minor", "changelogTitle": "Enhancement", "releaseType": "minor" }
]
تسميات على العلاقات العامة:
minor
قسم تسمية التغيير: minor
minor
releaseType
له أسبقية أعلى(2): ملصقات رقعة متعددة
التكوين:
"labels": [
{ "name": "typescript", "changelogTitle": "Typescript Change", "releaseType": "patch" },
{ "name": "core", "changelogTitle": "Core Change", "releaseType": "patch" }
]
تسميات على العلاقات العامة:
core
قسم تسمية سجل التغيير: typescript
typescript
يظهر في التكوين قبل core
(3): بلا تسمية وتسمية بلا تسمية افتراضية
التكوين:
"labels": [
{ "name": "typescript", "changelogTitle": "Typescript Change", "releaseType": "none" }
]
تسميات على العلاقات العامة:
internal
قسم تسمية سجل التغيير: internal
internal
تظهر في التكوين قبل typescript
(تظهر في التكوين الافتراضي الذي يأخذ أعلى أولوية بين نفس releaseType
hipstersmoothie ، هل يُقصد ترتيب السلوك / الأسبقية أعلاه؟
إذا كان الأمر كذلك ، فسيكون من الجيد الإضافة إلى الوثائق بحيث يكون من الواضح كيفية إنشاء أقسام تسمية التغيير وكيف تأخذ الأقسام الأسبقية (يمكنني المساعدة في ذلك إذا لزم الأمر)
إذا لم يكن الأمر كذلك ، فهل يمكننا العمل على تحديد ترتيب الأسبقية ، إما كجزء من هذه المشكلة أو كجزء آخر؟
لا أراه شيئًا خاصًا أو خاطئًا. يبدو بديهيًا بدرجة كافية. الشيء الوحيد المهم هو major
و minor
و patch
لتكون دائمًا في المقدمة في التغيير ، فقط لأنها نوع من الأشياء القياسية. ولكن حتى لو كان الطلب قابلاً للتكوين ، فلا بأس أيضًا.
التعليق الأكثر فائدة
إذا كان لديك أي
labels
إضافي منskipReleaseLabels
، فستحتاج إلى استخدام التنسيق الجديدhttps://intuit.github.io/auto/pages/autorc.html#label - التخصيص