diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a89e0f2..4837d75 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -88,6 +88,15 @@ jobs: REMOVE_TITLE: "true" run: npx --no-install git-cliff --latest --strip header -o release-notes.md + - name: Limit release notes size + run: |- + MAX_CHARS=125000 + CHARS=$(wc -m < release-notes.md | tr -d ' ') + if [ "$CHARS" -gt "$MAX_CHARS" ]; then + echo "Release notes are too large ($CHARS characters, max $MAX_CHARS). Linking to CHANGELOG.md instead." + echo "Release notes are too large to display here. See [CHANGELOG.md](https://github.com/${{ github.repository }}/blob/v${{ steps.version.outputs.version }}/CHANGELOG.md) for the full changelog." > release-notes.md + fi + - name: Create release env: GH_TOKEN: ${{ github.token }} diff --git a/__tests__/unit/categories/js/release-workflow/preset/index.spec.ts b/__tests__/unit/categories/js/release-workflow/preset/index.spec.ts index 0bd5cf3..50e65bf 100644 --- a/__tests__/unit/categories/js/release-workflow/preset/index.spec.ts +++ b/__tests__/unit/categories/js/release-workflow/preset/index.spec.ts @@ -120,6 +120,17 @@ describe('release-workflow/preset', () => { }, run: 'npx --no-install git-cliff --latest --strip header -o release-notes.md', }, + { + name: 'Limit release notes size', + run: [ + 'MAX_CHARS=125000', + "CHARS=$(wc -m < release-notes.md | tr -d ' ')", + 'if [ "$CHARS" -gt "$MAX_CHARS" ]; then', + ' echo "Release notes are too large ($CHARS characters, max $MAX_CHARS). Linking to CHANGELOG.md instead."', + ' echo "Release notes are too large to display here. See [CHANGELOG.md](https://github.com/${{ github.repository }}/blob/v${{ steps.version.outputs.version }}/CHANGELOG.md) for the full changelog." > release-notes.md', + 'fi', + ].join('\n'), + }, { name: 'Create release', env: { diff --git a/__tests__/unit/categories/js/release-workflow/release-workflow.installer.spec.ts b/__tests__/unit/categories/js/release-workflow/release-workflow.installer.spec.ts index 834ea08..63acda9 100644 --- a/__tests__/unit/categories/js/release-workflow/release-workflow.installer.spec.ts +++ b/__tests__/unit/categories/js/release-workflow/release-workflow.installer.spec.ts @@ -123,6 +123,15 @@ describe('release-workflow.installer', () => { ' REMOVE_TITLE: "true"', ' run: npx --no-install git-cliff --latest --strip header -o release-notes.md', '', + ' - name: Limit release notes size', + ' run: |-', + ' MAX_CHARS=125000', + " CHARS=$(wc -m < release-notes.md | tr -d ' ')", + ' if [ "$CHARS" -gt "$MAX_CHARS" ]; then', + ' echo "Release notes are too large ($CHARS characters, max $MAX_CHARS). Linking to CHANGELOG.md instead."', + ' echo "Release notes are too large to display here. See [CHANGELOG.md](https://github.com/${{ github.repository }}/blob/v${{ steps.version.outputs.version }}/CHANGELOG.md) for the full changelog." > release-notes.md', + ' fi', + '', ' - name: Create release', ' env:', ' GH_TOKEN: ${{ github.token }}', diff --git a/src/categories/js/release-workflow/preset/default.preset.ts b/src/categories/js/release-workflow/preset/default.preset.ts index bd11f7f..17779b3 100644 --- a/src/categories/js/release-workflow/preset/default.preset.ts +++ b/src/categories/js/release-workflow/preset/default.preset.ts @@ -177,6 +177,17 @@ export const content = { }, run: 'npx --no-install git-cliff --latest --strip header -o release-notes.md', }, + { + name: 'Limit release notes size', + run: [ + 'MAX_CHARS=125000', + "CHARS=$(wc -m < release-notes.md | tr -d ' ')", + 'if [ "$CHARS" -gt "$MAX_CHARS" ]; then', + ' echo "Release notes are too large ($CHARS characters, max $MAX_CHARS). Linking to CHANGELOG.md instead."', + ' echo "Release notes are too large to display here. See [CHANGELOG.md](https://github.com/${{ github.repository }}/blob/v${{ steps.version.outputs.version }}/CHANGELOG.md) for the full changelog." > release-notes.md', + 'fi', + ].join('\n'), + }, { name: 'Create release', env: {