You can use Jira’s build-in release note templates as it is for “Component Version” release note templates. In addition to the version object you can also access component object within “velocity template”.
In addition to all common variables you have also access to following “component version” specific variable within your template.
#disable_html_escaping() ##Text is escaped twice so that the characters generated in the text area display properly escaped (JRA-12184) ###macro (doubleEncode $html) ## $textUtils.htmlEncode($textUtils.htmlEncode($html)) ###end <title>$textUtils.htmlEncode($action.getText('release.notes.html.title', $project, $version))</title> <body> #foreach ($issueType in $issueTypes) #if($issueType.issues.size() > 0) <h2>$textUtils.htmlEncode($issueType.name)</h2> <ul> #foreach ($issue in $issueType.issues) <li>[<a href='$requestContext.canonicalBaseUrl/browse/$issue.key'>$issue.key</a>] - $textUtils.htmlEncode($issue.summary)</li> #end </ul> #end #end <a name="editarea"></a> <h2>$action.getText('release.notes.edit.copy')</h2> <p>$action.getText('release.notes.description')</p> <textarea rows="40" cols="120" id="editcopy"> #doubleEncode($action.getText('release.notes.heading', $project, $version)) #foreach ($issueType in $issueTypes) #if($issueType.issues.size() > 0) <h2>#doubleEncode($issueType.name)</h2> <ul> #foreach ($issue in $issueType.issues) <li>[<a href='$!requestContext.canonicalBaseUrl/browse/$issue.key'>$issue.key</a>] - #doubleEncode($issue.summary)</li> #end </ul> #end #end </textarea> </body>