機能リクエストは問題に関連していますか?
上の作業の過程を通して、オートボット私は、自動のラベルの構成セットアップをgroking /パース/取り扱いに苦労しました。
autoを使い始めたときでさえ、私が望むものの振る舞いを利用可能な構成にマッピングすることは少しトリッキーでした。
以下に、必要以上に複雑になると思われる動作の概要を示します。
labels
とskipReleaseLabels
ます。 skipReleaseLabels
もあるlabels
のラベルは、リリースをスキップします。 したがって、リリースを行わないドキュメントラベルが必要な場合は、2か所に追加する必要があります。 また、 major
、 minor
、またはpatch
をskipReleaseLabels
セクションに追加するとどうなりますか? そして、 skipReleaseLabels
とは異なるskip-release
ラベルがあります。minor
とdocumentation
両方のラベルが存在する場合、どちらの変更ログのタイトルが優先されますか?希望するソリューションを説明してください
ラベルの定義を大幅に簡素化し、コーナーケースを明確に文書化することを提案したいと思います。 これは1つの提案にすぎません。
{
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
として定義されます。 これはさらに3つのカテゴリに減らすことができます: semver | skip | none
。semver
ラベルは1つだけです。none
が存在しない限り、 semver
ラベルが存在する必要があります。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と同様のAPIを維持します。 ただし、基本的には特殊なケースとして扱われます。 他のすべてのラベルは、このother
バケットに入ります(より適切な名前が付けられている可能性があります)。
このシナリオでは:
semver
は1つだけです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もっと良い名前が必要です。
素晴らしいものだと思います。 「雑用/依存関係など、リリースプロセスに影響を与えないため、何もありません」と言うよりも良いことはありません。
それは理にかなっていると思います。
うん、完全に。
提案は素晴らしいです。
name
とchagelogTitle
はどちらも、 releaseType
基づくデフォルトを持つべきだと思います。
私は今これのためにPRを持っています。 以下については触れていません
変更ログのタイトルはラベルに追加できますが、どの順序で優先されるかは明確ではありません。 マイナーラベルとドキュメントラベルの両方が存在する場合、どちらの変更ログタイトルが優先されますか?
Logic
ここで説明する検証のほとんどは、おそらくオートボットに存在するはずです。 私は自動車自体がこれを強制するべきだとは思わない
(1に関連)>変更ログのさまざまなセクションの下にPRを追加するために、複数のnoneラベルを含めることができます
わかりません。 どのように_ "スキップラベルはsemverラベルとペアになっている場合にのみ有効であり、それ以外の場合はノーオペレーションです。" _意味がありますか? deps
ラベルまたは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
をスキップしたくありません。 私はrenovateを使用していて、 fix(deps)
パッチリリースが必要なためです。
とにかくonlyPublishWithReleaseLabel
有効にしているので、大きな問題にはなりません。
そしてもう1つ、 next
dist-tagにchangelogTitle
がありますか? 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"
}
]
}
noneは、効果的にskip
として機能します。 ただし、本当にdevDep
更新をリリースする必要がある場合は、 patch
を追加すると、リリースが行われます。 これは、他のラベルに関係なくリリースをスキップするskip
ラベルを追加することとは異なります。
changelogTitle
私もこれをしていません。 まだタイトルです。 これをリファクタリングのPRに追加します(まだ次はありません。changelogTitleの後で取得します)
右。 さて、素晴らしい:)
問題はv8.0.0-next.8でリリースされました
今ですか? prerelease
はnext
公開されていると思いますか? :thinking:とにかく、私は急いでいません。 まだYarnv2 + pnpと構築/バンドルと戦っています。
編集:そして、 title/changelogTitle
が欠落しているということは、リリースノートにセクションが作成されないことを意味しますか?
@tunnckoCoreリリースするバージョンに基づいて、変更ログのタイトルにデフォルトがあります。
構成から追加した、semverに関するものではない他の「カスタムラベル」について質問しています。 タイトルのないinfra
ラベルがある場合、追加されませんよね? そして、私がタイトルを持っているとき(devDepsのように)、それは追加されます。
:rocket:問題はv8.0.0でリリースされました:rocket:
@adierkens 、この問題はv8メジャー
追加のlabels
またはskipReleaseLabels
場合は、新しい形式を使用する必要があります
https://intuit.github.io/auto/pages/autorc.html#label -customization
Wooohooo! :tada:週末にやってみます。
まず第一に、v8のクールな変更です!
それにかんする
変更ログのタイトルはラベルに追加できますが、どの順序で優先されるかは明確ではありません。 マイナーラベルとドキュメントラベルの両方が存在する場合、どちらの変更ログタイトルが優先されますか?
ローカルテストから、現在の動作は次のようです。
changelogTitle
の優先順位にreleaseType
( major
、 minor
、 patch
、その後、他のすべて)releaseType
優先度に関連付けられた複数のラベルがある場合、PRは最初に構成で定義されたラベルのセクションに含まれます(デフォルトのラベルが他のすべてのラベルよりも前になります)以下にいくつかの例を示します。
(1):マイナーラベルなし
構成:
"labels": [
{ "name": "typescript", "changelogTitle": "Typescript Change", "releaseType": "none" },
{ "name": "minor", "changelogTitle": "Enhancement", "releaseType": "minor" }
]
PRのラベル:
minor
変更ログラベルセクション: minor
minor
releaseType
方が優先順位が高いため(2):複数のパッチラベル
構成:
"labels": [
{ "name": "typescript", "changelogTitle": "Typescript Change", "releaseType": "patch" },
{ "name": "core", "changelogTitle": "Core Change", "releaseType": "patch" }
]
PRのラベル:
core
変更ログラベルセクション: typescript
typescript
ラベルがcore
前に設定に表示されるため(3):ラベルなしおよびデフォルトなしラベル
構成:
"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