Apakah permintaan fitur Anda terkait dengan masalah?
Sepanjang proses pengerjaan autobot saya telah berjuang dengan penanganan/parsing/groking pengaturan konfigurasi label otomatis.
Bahkan ketika saya mulai menggunakan otomatis, memetakan perilaku yang saya inginkan ke konfigurasi yang tersedia sedikit rumit.
Di bawah ini saya akan menguraikan beberapa perilaku yang menurut saya membuatnya lebih kompleks daripada yang seharusnya:
labels
dan skipReleaseLabels
. Label di labels
yang juga ada di skipReleaseLabels
akan melewatkan rilis. Jadi, jika Anda menginginkan label dokumentasi yang tidak dirilis, label tersebut perlu ditambahkan di dua tempat. Juga, apa yang terjadi ketika Anda menambahkan major
, minor
, atau patch
ke bagian skipReleaseLabels
? Dan kemudian ada label skip-release
yang berbeda dari skipReleaseLabels
.minor
dan documentation
keduanya ada, judul changelog mana yang lebih diutamakan?Jelaskan solusi yang Anda inginkan
Saya ingin mengusulkan agar kami menyederhanakan definisi label dan dengan jelas mendokumentasikan setiap kasus sudut. Ini hanya satu saran.
{
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'
}
]
}
Logika
name
dan releaseType
diperlukanreleaseType
didefinisikan sebagai major | minor | patch | skip | none
. Ini dapat dikurangi lebih lanjut menjadi tiga kategori: semver | skip | none
.semver
dapat ditampilkan pada satu waktu tertentu.semver
_harus_ ada, kecuali jika none
ada.skip
hanya valid bila dipasangkan dengan label semver
dan sebaliknya adalah larangan.none
tidak menghasilkan rilis dengan sendirinya, tetapi dapat disertakan dengan label semver
untuk menyertakan entri log perubahan tambahan.none
tidak menyebabkan rilis dilewati jika ada label semver
.none
dapat dimasukkan untuk menambahkan PR di bawah bagian berbeda dari changelogJelaskan alternatif yang telah Anda pertimbangkan
Ini memang masih rumit dan tentunya lebih bertele-tele. Alternatif (dan sedikit kompromi dengan apa yang kita miliki saat ini) adalah memperlakukan label semver
berbeda.
{
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'
}
]
}
}
Dalam versi ini, major
, minor
, dan patch
menyimpan api yang serupa dengan yang mereka miliki saat ini. Mereka pada dasarnya diperlakukan sebagai kasus khusus. Semua label lain masuk ke ember other
(yang bisa memiliki nama yang lebih baik).
Dalam skenario ini:
semver
dapat hadir pada suatu waktuskipRelease: true
dapat dimasukkan pada label other
untuk membuatnya dilewati.changelogTitle
dapat dimasukkan pada label other
untuk menambahkan entri changelog. (Sekali lagi, ini akan menjadi duplikat dari entri lain).skipRelease
atau changelogTitle
akan membuat label menjadi label arbitrer tanpa operasi (yang mempertahankan dukungan label arbitrer yang kita miliki saat ini).Pada akhirnya saya terbuka untuk ide-ide lain. Saya hanya berpikir pendekatan kami saat ini cukup penuh dengan kasus sudut dan gotcha yang tidak berdokumen. Saya ingin membuat ini semudah mungkin untuk dipahami (dan dikodekan).
Saya suka opsi pertama. ini sangat sederhana dan bersih, saya kesulitan membedakan perbedaan antara none
dan skip
. Jika saya mengerti dengan benar skip
tidak ada hubungannya dengan changelog dan perlu dengan label semver, dan none
akan melewatkan rilis tetapi membuat entri changelog yang unik.
metode ini menghilangkan sebagian besar singkatan tetapi saya pikir kami masih dapat mendukung beberapa?
misalnya yang berikut ini akan mengganti label major
default tetapi juga mewarisi deskripsi dan changelogTitle
{
labels: [
{
name: 'Breaking change',
releaseType: 'major'
}
]
}
atau hanya mengedit judul
{
labels: [
{
releaseType: 'major',
changelogTitle: 'Super Big Changes'
}
]
}
skip
adalah tidak melakukan rilis. none
artinya label tidak berpengaruh pada rilis... jadi bisa rilis atau tidak rilis, tergantung keberadaan label lain. Itu memang membutuhkan nama yang lebih baik.
Jadi berdasarkan saran Anda, label memiliki fallback default berdasarkan releaseType
yang ada? Saya pikir itu masuk akal.
Jadi berdasarkan saran Anda, label memiliki fallback default berdasarkan releaseType apa yang ada? Saya pikir itu masuk akal.
ya
@zephraph Itu memang membutuhkan nama yang lebih baik.
Saya pikir itu bagus. Tidak ada yang lebih baik daripada mengatakan "tidak ada karena tidak berdampak pada proses rilis, misalnya tugas/dependensi/apa pun".
berpikir itu masuk akal.
Ya, benar-benar.
Usulannya luar biasa.
Saya pikir name
dan chagelogTitle
keduanya harus memiliki default berdasarkan releaseType
.
Saya punya PR untuk ini sekarang. Itu tidak membahas hal-hal berikut:
Judul changelog dapat ditambahkan ke label, tetapi tidak begitu jelas urutannya. Jika label minor dan dokumentasi keduanya ada, judul changelog mana yang diutamakan?
Logic
sebagian besar validasi yang dijelaskan di sini mungkin harus hidup di autobot. Saya tidak berpikir auto itu sendiri harus memaksakan ini
(terkait dengan 1) > Beberapa label tidak ada yang dapat dimasukkan untuk menambahkan PR di bawah bagian berbeda dari changelog
Saya tidak mengerti. Bagaimana _"Label lewati hanya valid ketika dipasangkan dengan label semver dan sebaliknya tidak boleh."_ masuk akal? Jika saya memiliki deps
label atau infra
, ketik skip
dan saya ingin melewatkan rilis mengapa saya perlu menambahkan label semver juga? Saya kira saya harus menggunakan none
, tetapi ini juga memungkinkan menambahkan label semver juga, jadi... WAT?! :D
Saat ini saya punya
"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"
}
},
dan saya ingin melewatkan dokumen, melewatkan-rilis, devDeps dan infra, tetapi tidak ingin melewatkan deps
misalnya. Karena saya menggunakan renovate dan ingin rilis patch pada fix(deps)
.
Saya juga tetap mengaktifkan onlyPublishWithReleaseLabel
jadi itu tidak akan menjadi masalah besar bagi saya.
Dan satu hal lagi, apakah changelogTitle
di tag dist next
? Saya hanya meminta klarifikasi, karena tidak ditampilkan di PR.
@tunnckoCore Saya pikir pengaturan Anda akan terlihat seperti ini dengan cara baru:
{
"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"
}
]
}
Tidak ada yang secara efektif bertindak sebagai skip
. Tetapi jika Anda benar-benar perlu merilis pembaruan devDep
Anda dapat menambahkan patch
dan rilis akan dibuat. Ini berbeda dengan menambahkan label skip
, yang akan melewatkan rilis terlepas dari label lainnya.
changelogTitle
Saya juga belum melakukan ini. Masih sebatas judul. Saya akan menambahkan ini ke PR saya untuk refactor (masih belum di berikutnya. Saya akan mengeluarkannya setelah changelogTitle )
Benar. Oke, bagus :)
Masalah dirilis di v8.0.0-next.8
Apakah sekarang? Saya menduga prerelease
s diterbitkan pada next
? :thinking: Lagi pula, saya tidak terburu-buru. Masih berjuang dengan Benang v2+pnp dan bangunan/bundling.
edit: Dan apakah title/changelogTitle
hilang masih menyiratkan bahwa itu tidak akan membuat bagian dalam Catatan rilis?
@tunnckoCore ada default pada judul changelog berdasarkan versi apa yang Anda rilis.
Saya bertanya tentang "label khusus" lain yang kami tambahkan dari konfigurasi dan itu bukan tentang semver. Jika saya memiliki label infra
tanpa judul, itu tidak akan ditambahkan, bukan? Dan ketika saya memiliki judul (seperti di devDeps) itu akan ditambahkan.
:rocket: Masalah dirilis di v8.0.0 :rocket:
@adierkens , sepertinya masalah ini adalah dorongan utama di balik v8 major rev, jadi saya mengajukan pertanyaan ini di sini... Apakah ada hal khusus yang perlu saya lakukan untuk meningkatkan ke v8 dari v7.x?
Jika Anda memiliki labels
atau skipReleaseLabels
Anda harus menggunakan format baru
https://intuit.github.io/auto/pages/autorc.html#label -customization
Wooooooo! :tada: Saya akan mencobanya di akhir pekan.
Pertama-tama, Perubahan keren untuk v8!
Tentang
Judul changelog dapat ditambahkan ke label, tetapi tidak begitu jelas urutannya. Jika label minor dan dokumentasi keduanya ada, judul changelog mana yang diutamakan?
Dari pengujian lokal, tampaknya perilaku saat ini adalah:
changelogTitle
dalam urutan prioritas releaseType
( major
, minor
, patch
, lalu semua yang lain)releaseType
atas, maka PR disertakan dalam bagian label yang ditentukan dalam konfigurasi terlebih dahulu (label default mendahului yang lainnya)Di bawah ini adalah beberapa contoh:
(1): minor dan tidak ada label
konfigurasi:
"labels": [
{ "name": "typescript", "changelogTitle": "Typescript Change", "releaseType": "none" },
{ "name": "minor", "changelogTitle": "Enhancement", "releaseType": "minor" }
]
label pada PR:
minor
bagian label changelog: minor
minor
releaseType
memiliki prioritas yang lebih tinggi(2): beberapa label tambalan
konfigurasi:
"labels": [
{ "name": "typescript", "changelogTitle": "Typescript Change", "releaseType": "patch" },
{ "name": "core", "changelogTitle": "Core Change", "releaseType": "patch" }
]
label pada PR:
core
bagian label changelog: typescript
typescript
muncul di konfigurasi sebelum core
(3): tidak ada label dan tidak ada label default
konfigurasi:
"labels": [
{ "name": "typescript", "changelogTitle": "Typescript Change", "releaseType": "none" }
]
label pada PR:
internal
bagian label changelog: internal
internal
muncul di config sebelum typescript
(muncul di default config yang lebih diutamakan antara releaseType
@hipstersmoothie , Apakah urutan perilaku/prioritas di atas dimaksudkan?
Jika demikian, akan lebih baik untuk menambahkan dokumentasi sehingga jelas bagaimana bagian label changelog dibuat dan bagaimana bagian didahulukan (saya dapat membantu dengan ini jika diperlukan)
Jika tidak, dapatkah kita bekerja untuk menentukan urutan prioritas, baik sebagai bagian dari masalah ini atau lainnya?
Saya tidak melihatnya sebagai sesuatu yang istimewa atau salah. Tampaknya cukup intuitif. Satu-satunya hal yang penting adalah major
, minor
dan patch
untuk selalu menjadi yang pertama di changelog, hanya karena itu hal yang standar. Tetapi bahkan jika pesanan dapat dikonfigurasi, tidak apa-apa juga.
Komentar yang paling membantu
Jika Anda memiliki
labels
atauskipReleaseLabels
Anda harus menggunakan format baruhttps://intuit.github.io/auto/pages/autorc.html#label -customization