Ваш запрос функции связан с проблемой?
На протяжении всего процесса работы над автоботом я боролся с настройкой конфигурации меток для работы с / парсингом / поиском.
Даже когда я начал использовать auto, сопоставление поведения того, что я хотел, с доступной конфигурацией было немного сложным.
Ниже я опишу некоторые особенности поведения, которые, как мне кажется, делают его более сложным, чем нужно:
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
, если не указано иное none
.skip
действительна только в паре с меткой semver
в противном случае она не работает.none
сам по себе не генерирует выпуска, но может быть включен с меткой semver
для включения дополнительной записи в журнале изменений.none
не вызывает пропуск релиза, если присутствует метка semver
.none
чтобы добавить PR в разных разделах журнала изменений.Опишите альтернативы, которые вы рассмотрели
По общему признанию, это все еще сложно и, безусловно, более многословно. Альтернативой (и небольшим компромиссом к тому, что мы имеем сегодня) было бы другое обращение с ярлыками 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
сохраняют тот же API, что и сегодня. Однако, по сути, они рассматриваются как особые случаи. Все остальные ярлыки входят в эту other
(название которой могло бы быть получше).
В этом сценарии:
semver
skipRelease: true
можно добавить в ярлыки other
чтобы их пропускать.changelogTitle
можно добавить в ярлыки other
чтобы добавить запись в журнал изменений. (Опять же, это будет дублировать другие записи).skipRelease
ни changelogTitle
сделало бы метку бесполезной произвольной меткой (которая сохраняет поддержку произвольной метки, которую мы имеем сегодня).В конечном итоге я открыт для других идей. Я просто думаю, что наш нынешний подход изобилует недокументированными угловыми случаями и ошибками. Я хотел бы, чтобы это было как можно проще для понимания (и для кодирования).
Мне нравится первый вариант. это супер простой и чистый, мне трудно различить разницу между none
и skip
. Если я правильно понимаю, skip
не имеет отношения к журналу изменений и должен иметь метку semver, а none
пропустит выпуск, но создаст уникальную запись в журнале изменений.
этот метод избавляется от большинства сокращений, но я думаю, что мы могли бы поддержать некоторые из них?
например, следующее переопределит метку по умолчанию major
но также унаследует описание и changelogTitle
{
labels: [
{
name: 'Breaking change',
releaseType: 'major'
}
]
}
или просто редактируя заголовок
{
labels: [
{
releaseType: 'major',
changelogTitle: 'Super Big Changes'
}
]
}
skip
- это не выпускать. none
означает, что лейбл не влияет на выпуск ... поэтому он может выпускать или не выпускать, в зависимости от наличия других лейблов. Это действительно нуждается в лучшем названии.
Итак, по вашему предложению ярлыки имеют резервные варианты по умолчанию в зависимости от того, что присутствует releaseType
? Я думаю, в этом есть смысл.
Итак, по вашему предложению, у ярлыков есть резервные варианты по умолчанию в зависимости от того, какой releaseType присутствует? Я думаю, в этом есть смысл.
Ага
@zephraph Это имя должно быть получше.
Я считаю, что он отличный. Нет ничего лучше, чем сказать «нет, потому что это не влияет на процесс выпуска, например, chore / dependencies / что-то еще».
думаю, это имеет смысл.
Да уж точно.
Предложение потрясающее.
Я думаю, что name
и chagelogTitle
должны иметь значения по умолчанию, основанные на releaseType
.
У меня есть пиар для этого сейчас. Он не касается следующих
Заголовки журнала изменений могут быть добавлены к ярлыкам, но не совсем ясно, в каком порядке они имеют прецедент. Если существуют и второстепенные ярлыки, и ярлыки документации, какое название журнала изменений имеет приоритет?
Logic
большая часть описанной здесь проверки, вероятно, должна выполняться автоботом. Я не думаю, что сам автомобиль должен заставлять это
(относится к 1)> Можно добавить несколько меток none, чтобы добавить PR в разные разделы журнала изменений
Я не понимаю. Как _ "Метка пропуска действительна только в паре с меткой semver, в противном случае она не работает". _ Имеет смысл? Если у меня есть deps
label или infra
, введите skip
и я хочу пропустить выпуск, почему мне также нужно добавить метку semver? Я предполагаю, что тогда мне следует использовать none
, но это также позволяет добавить метку semver, так что ... WAT ?! : D
В настоящее время у меня есть
"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"
}
},
и я хочу пропустить docs, skip-release, devDeps и infra, но не хочу, например, пропустить deps
. Потому что я использую Renewate и хочу выпускать исправления для fix(deps)
.
У меня все равно включено onlyPublishWithReleaseLabel
так что для меня это не будет большой проблемой.
И еще кое-что, есть ли changelogTitle
в теге next
dist? Я просто прошу разъяснений, потому что это не показано в PR.
@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
Я этого тоже не делал. Это все еще просто название. Я добавлю это в свой PR для рефакторинга (еще не в следующем. Я выйду после changelogTitle)
Правильно. Ладно, отлично :)
Проблема была выпущена в v8.0.0-next.8
Это сейчас? Я предполагаю, что prerelease
s публикуются на next
? : Thinking: Да ладно, я не тороплюсь. Все еще борется с Yarn v2 + pnp и сборкой / сборкой.
edit: И не означает ли отсутствие title/changelogTitle
что раздел в примечаниях к выпуску не будет?
@tunnckoCore есть значения по умолчанию для заголовков
Я спрашиваю о других "настраиваемых ярлыках", которые мы добавляем из конфигурации и не о семвере. Если у меня есть лейбл infra
без заголовка, он не будет добавлен, верно? И когда у меня будет заголовок (как в devDeps), он будет добавлен.
: rocket: Проблема появилась в версии 8.0.0: rocket:
@adierkens , похоже, что эта проблема была основным стимулом для основной версии v8, поэтому я задаю этот вопрос здесь ... Есть ли что-то особенное, что мне нужно сделать, чтобы перейти на v8 с v7.x?
Если у вас есть лишние labels
или skipReleaseLabels
вам нужно будет использовать новый формат
https://intuit.github.io/auto/pages/autorc.html#label -customization
Wooohooo! : tada: На выходных попробую.
Прежде всего, крутые изменения для v8!
Касательно
Заголовки журнала изменений могут быть добавлены к ярлыкам, но не совсем ясно, в каком порядке они имеют прецедент. Если существуют и второстепенные ярлыки, и ярлыки документации, какое название журнала изменений имеет приоритет?
Судя по локальному тестированию, текущее поведение выглядит следующим образом:
changelogTitle
в порядке приоритета releaseType
( major
, minor
, patch
, потом все остальные)releaseType
выше, тогда PR включается в раздел метки, определенной в конфигурации, первым (метки по умолчанию предшествуют всем остальным)Ниже приведены несколько примеров:
(1): второстепенные и никакие метки
config:
"labels": [
{ "name": "typescript", "changelogTitle": "Typescript Change", "releaseType": "none" },
{ "name": "minor", "changelogTitle": "Enhancement", "releaseType": "minor" }
]
этикетки на PR:
minor
раздел ярлыка журнала изменений: minor
minor
releaseType
имеет более высокий приоритет(2): несколько меток патча
config:
"labels": [
{ "name": "typescript", "changelogTitle": "Typescript Change", "releaseType": "patch" },
{ "name": "core", "changelogTitle": "Core Change", "releaseType": "patch" }
]
этикетки на PR:
core
раздел ярлыка журнала изменений: typescript
typescript
метка появляется в конфигурации перед core
(3): нет метки и по умолчанию нет метки
config:
"labels": [
{ "name": "typescript", "changelogTitle": "Typescript Change", "releaseType": "none" }
]
этикетки на PR:
internal
раздел ярлыка журнала изменений: internal
internal
метка появляется в конфигурации перед typescript
(она появляется в конфигурации по умолчанию, которая имеет наивысший приоритет между теми же releaseType
@hipstersmoothie ,
Если это так, было бы хорошо добавить в документацию, чтобы было ясно, как создаются разделы метки журнала изменений и как разделы имеют приоритет (при необходимости я мог бы помочь с этим)
Если нет, можем ли мы поработать над определением приоритета в рамках этой или другой проблемы?
Я не считаю это чем-то особенным или неправильным. Это кажется достаточно интуитивным. Важно только то, чтобы major
, minor
и patch
всегда были первыми в журнале изменений, просто потому, что это своего рода стандартная вещь. Но даже если порядок настраивается, это тоже нормально.
Самый полезный комментарий
Если у вас есть лишние
labels
илиskipReleaseLabels
вам нужно будет использовать новый форматhttps://intuit.github.io/auto/pages/autorc.html#label -customization