semantic-release / semantic-release/release-notes-generator

Including entire commit body in release note

Open
#332 6 comments 12 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
JavaScript
Stars
368
Forks
55
Avg merge
10m
Merged PRs (30d)
1

Description

Hello! When the commit below gets analyzed and outputted on the release note, only the commit title is outputted. Is it possible to include the additional commit description/body in the release note?

Screen Shot 2022-04-13 at 8 54 20 PM

release.config.js

const verifyConditions = [
  [
    "@semantic-release/changelog",
    {
      changelogFile: "CHANGELOG.md"
    }
  ],
  [
    "@semantic-release/git",
    {
      assets: ["CHANGELOG.md"]
    }
  ]
];
const analyzeCommits = [
  [
    "@semantic-release/commit-analyzer",
    {
      preset: "angular",
      releaseRules: [
        {
          // e.g.: next upgrade, large refactors, removing large chunks of code
          type: "breaking",
          release: "major"
        },
        {
          // e.g.: next upgrade, large refactors, removing large chunks of code
          type: "BREAKING",
          release: "major"
        },
        {
          // e.g. the new new hottest features
          type: "feat",
          release: "minor"
        },
        {
          // e.g. bugfixes
          type: "fix",
          release: "patch"
        },
        {
          // commits that need to be released outside of the release process
          type: "hotfix",
          release: "patch"
        },
        {
          // commits that need to be released outside of the release process
          type: "HOTFIX",
          release: "patch"
        },
        // you needed to revert a commit on dev or main
        {
          type: "revert",
          release: "patch"
        },
        // added jest or E2E tests
        {
          type: "test",
          release: false
        },
        // e.g. removing code comments
        {
          type: "chore",
          release: false
        },
        // e.g. edits/new markdown files
        {
          type: "docs",
          release: false
        },
        // e.g. feat(no-release): will skip release based off of type
        {
          subject: "no-release:",
          release: false
        }
      ],
      parserOpts: {
        noteKeywords: ["BREAKING CHANGE", "BREAKING CHANGES"]
      }
    }
  ]
];

const generateNotes = [
  [
    "@semantic-release/release-notes-generator",
    {
      preset: "conventionalcommits",
      presetConfig: {
        issuePrefixes: [
          "#",
          "CAR-",
          "GRO-",
        ],
        issueUrlFormat:
          "https://atlassian.net/browse/{{prefix}}{{id}}",
        types: [
          { type: "breaking", section: "❗ Breaking ❗", hidden: false },
          { type: "feat", section: "✨ Feature ✨", hidden: false },
          { type: "fix", section: "🐛 Bugfix 🐛", hidden: false },
          { type: "hotfix", section: "🔥 Hotfix 🔥", hidden: false },
          // !  The following are capitalized to grab attention
          { type: "BREAKING", section: "❗ Breaking ❗", hidden: false },
          { type: "HOTFIX", section: "🔥 Hotfix 🔥", hidden: false }
        ],
        userUrlFormat: "https://github.com/FooBar/{{user}}"
      }
    }
  ]
];
const prepare = [
  "@semantic-release/changelog",
  [
    "@semantic-release/npm",
    {
      // this here is just for package.log update
      npmPublish: false
    }
  ],
  [
    "@semantic-release/git",
    {
      assets: ["package.json", "CHANGELOG.md"],
      message:
        /* eslint-disable no-template-curly-in-string */
        "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
    }
  ]
];
const publish = [["@semantic-release/github"]];

const verifyRelease = [];
const fail = [];
const success = [];
const addChannel = [];

module.exports = {
  repositoryUrl: "https://github.com/Foo/Bar",
  branches: [
    "main",
    {
      name: "next-RC",
      prerelease: false
    }
  ],
  defaultBranch: "main",
  verifyConditions,
  analyzeCommits,
  verifyRelease,
  generateNotes,
  prepare,
  publish,
  fail,
  success,
  addChannel
};

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the generateNotes configuration in release.config.js and compare the current release-note output, which includes only commit titles. Trace how commit information reaches note generation and define the expected formatting for the body; done means generated release notes include the full commit body while preserving the configured sections and links.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
release
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.