Closed elizabethsjudd closed 4 years ago
FYI, After going through some closed issues I also tried the following without any luck:
module.exports = {
monorepo: {
plugins:[
'@semantic-release/commit-analyzer',
['@semantic-release/release-notes-generator', {
preset: 'angular',
writerOpts: {
transform: (commit, context) => {...},
}
}],
'@semantic-release/npm',
'@semantic-release/github'
],
},
branches: ['master'],
githubUrl: 'https://github.ibm.com',
githubApiPathPrefix: 'api/v3',
releaseRules: [ ... ],
releaseNotes: {
issueResolution: {
template: '{baseUrl}/{owner}/{repo}/issues/{ref}',
baseUrl: 'https://github.ibm.com',
source: 'github.ibm.com',
},
},
}
Thanks for the report, @elizabethsjudd! Does it work if you move the plugins
key to the top-level?
E.g.:
module.exports = {
plugins: [
'@semantic-release/commit-analyzer',
['@semantic-release/release-notes-generator', {
preset: 'angular',
writerOpts: {
transform: (commit, context) => {...},
}
}],
'@semantic-release/npm',
'@semantic-release/github'
],
branches: ['master'],
githubUrl: 'https://github.ibm.com',
githubApiPathPrefix: 'api/v3',
releaseRules: [ ... ],
releaseNotes: {
issueResolution: {
template: '{baseUrl}/{owner}/{repo}/issues/{ref}',
baseUrl: 'https://github.ibm.com',
source: 'github.ibm.com',
},
},
}
@pmowrer That doesn't even create the custom release notes at all. Is this something I should be bring up with release-notes-generator
as semantic-release-monorepo
is expecting this format?
It depends on what version of semantic-release-monorepo
and semantic-release
you're trying this with. The monorepo
namespace key in the config was deprecated as of v7 of this lib and would have no effect.
@pmowrer these are the versions I'm using. So it looks like I shouldn't be using the monorepo
property at all.
"semantic-release": "^17.0.4",
"semantic-release-monorepo": "^7.0.1"
I guess my confusion is... is this a bug for:
release-notes-generator
- I can't use the plugins
property to configure it and then semantic-release-monorepo
would be able to use that
semantic-release-monorepo
- it doesn't work with the generateNotes
property supported by release-notes-generator
It's most likely a bug with this library... I'll dig into it!
I believe this has been fixed in the latest version (7.0.2
). Please re-open if it's still an issue.
:tada: This issue has been resolved in version 7.0.2 :tada:
The release is available on:
Your semantic-release bot :package::rocket:
@pmowrer, I updated our version of monorepo to 7.0.2 and am still having the same issue where defining a custom generateNotes
object (at the root of the config) does not scope the commits to the specific packages.
Example
both of the commits under build system
should not be part of a thing4
package release as they are part of a utilities
package (these screen shots are a dummy repo we use for testing)
I'm also now running in to the issue of it not recognizing our custom releaseRules
property either. I used to be able to have a release with the build
type and now that is no longer possible.
Here's our release rules:
[
{breaking: true, release: 'major'},
{revert: true, release: 'patch'},
{type: 'feat', release: 'minor'},
{type: 'fix', release: 'patch'},
{type: 'perf', release: 'patch'},
{type: 'docs', release: 'patch'},
{type: 'style', release: 'patch'},
{type: 'test', release: 'patch'},
{type: 'build', release: 'patch'},
{type: 'ci', release: 'patch'},
{type: 'refactor', release: 'patch'},
],
but when I have a merge with only a build
type, our CI system says it does not detect any changes
[semantic-release] › ✔ Completed step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ℹ There are no relevant changes, so no new version is released.
@elizabethsjudd Thanks for trying this out and sorry it still isn't working! A few questions as I try to diagnose this further:
plugins
part)? .releaserc
file or is it applied some other way?--debug
flag, are you seeing the following message: semantic-release:monorepo Filter commits by package path: "" +0ms
? If so, what follows?Release config:
{ branches:
[ 'master',
{ name: 'staging', prerelease: true },
{ name: 'v1', channel: 'v1x' },
{ name: 'next', prerelease: true } ],
githubUrl: 'https://github.ibm.com',
githubApiPathPrefix: 'api/v3',
releaseRules:
[ { breaking: true, release: 'major' },
{ revert: true, release: 'patch' },
{ type: 'feat', release: 'minor' },
{ type: 'fix', release: 'patch' },
{ type: 'perf', release: 'patch' },
{ type: 'docs', release: 'patch' },
{ type: 'style', release: 'patch' },
{ type: 'test', release: 'patch' },
{ type: 'build', release: 'patch' },
{ type: 'ci', release: 'patch' },
{ type: 'refactor', release: 'patch' },
{ scope: 'minor-*', release: 'minor' },
{ scope: 'patch-*', release: 'patch' },
{ scope: 'no-release', release: false } ],
releaseNotes:
{ issueResolution:
{ template: '{baseUrl}/{owner}/{repo}/issues/{ref}',
baseUrl: 'https://github.ibm.com',
source: 'github.ibm.com' } },
generateNotes:
{ preset: 'angular',
writerOpts: { transform: [Function: transform] } },
tagFormatPrefix: '@whpal/liz-semrel-testing-',
tagFormat: '@whpal/liz-semrel-testing-utilities-v${version}' }
We do not have any custom plugin setup.
Here's the config that's printed out from the --debug
flag
semantic-release:config options values: { branches:
semantic-release:config [ 'master',
semantic-release:config { name: 'staging', prerelease: true },
semantic-release:config { name: 'v1', channel: 'v1x' },
semantic-release:config { name: 'next', prerelease: true } ],
semantic-release:config repositoryUrl: 'git@github.ibm.com:liz-judd/semantic-release-testing.git',
semantic-release:config tagFormat: '@whpal/liz-semrel-testing-utilities-v${version}',
semantic-release:config plugins:
semantic-release:config [ '@semantic-release/commit-analyzer',
semantic-release:config '@semantic-release/release-notes-generator',
semantic-release:config '@semantic-release/npm',
semantic-release:config '@semantic-release/github' ],
semantic-release:config analyzeCommits:
semantic-release:config [ [AsyncFunction: semantic-release-monorepo],
semantic-release:config [AsyncFunction: semantic-release-monorepo],
semantic-release:config [AsyncFunction: semantic-release-monorepo],
semantic-release:config [AsyncFunction: semantic-release-monorepo],
semantic-release:config [AsyncFunction: semantic-release-monorepo],
semantic-release:config [AsyncFunction: semantic-release-monorepo],
semantic-release:config [AsyncFunction: semantic-release-monorepo],
semantic-release:config [AsyncFunction: semantic-release-monorepo],
semantic-release:config [AsyncFunction: semantic-release-monorepo],
semantic-release:config [AsyncFunction: semantic-release-monorepo] ],
semantic-release:config generateNotes:
semantic-release:config { preset: 'angular',
semantic-release:config writerOpts: { transform: [Function: transform] } },
semantic-release:config githubUrl: 'https://github.ibm.com',
semantic-release:config githubApiPathPrefix: 'api/v3',
semantic-release:config releaseRules:
semantic-release:config [ { breaking: true, release: 'major' },
semantic-release:config { revert: true, release: 'patch' },
semantic-release:config { type: 'feat', release: 'minor' },
semantic-release:config { type: 'fix', release: 32m'patch' },
semantic-release:config { type: 'perf', release: 'patch' },
semantic-release:config { type: 'docs', release: 'patch' },
semantic-release:config { type: 'style', release: 'patch' },
semantic-release:config { type: 'test', release: 'patch' },
semantic-release:config { type: 'build', release: 'patch' },
semantic-release:config { type: 'ci', release: 'patch' },
semantic-release:config { type: 'refactor', release: 'patch' },
semantic-release:config { scope: 'minor-*', release: 'minor' },
semantic-release:config { scope: 'patch-*', release: 'patch' },
semantic-release:config { scope: 'no-release', release: false } ],
semantic-release:config releaseNotes:
semantic-release:config { issueResolution:
semantic-release:config { template: '{baseUrl}/{owner}/{repo}/issues/{ref}',
semantic-release:config baseUrl: 'https://github.ibm.com',
semantic-release:config source: 'github.ibm.com' } },
semantic-release:config tagFormatPrefix: '@whpal/liz-semrel-testing-',
semantic-release:config _: [],
semantic-release:config debug: true,
semantic-release:config '$0': 'node_modules/.bin/semantic-release' }
The config is in a release.config.js
file and in the root of our package.json
we include:
"release": {
"extends": [
"semantic-release-monorepo",
"./release.config"
]
}
Using a JavaScript file allows us to break up the config in to multiple objects and share them across the multiple packages in the monorepo.
Here's the output of the debug from the packages that had changes in this particular push
[semantic-release] › ℹ Start step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
semantic-release:monorepo Running 'analyzeCommits' version '7.0.2' +0ms
semantic-release:monorepo Filter commits by package path: "packages/thing2" +0ms
semantic-release:monorepo Including commit "build: trying to debug" because it modified package file "packages/thing2/README.md". +117ms
semantic-release:monorepo Including commit "build: update semantic release monorepo version" because it modified package file "packages/thing2/package-lock.json". +0ms
[semantic-release] [[Function: semantic-release-monorepo]] › ℹ Found 2 commits for package @whpal/liz-semrel-testing-thing2 since last release
[semantic-release] [[Function: semantic-release-monorepo]] › ℹ Analyzing commit: build: trying to debug
semantic-release:commit-analyzer Analyzing with default rules +0ms
[semantic-release] [[Function: semantic-release-monorepo]] › ℹ The commit should not trigger a release
[semantic-release] [[Function: semantic-release-monorepo]] › ℹ Analyzing commit: build: update semantic release monorepo version
semantic-release:commit-analyzer Analyzing with default rules +1ms
[semantic-release] [[Function: semantic-release-monorepo]] › ℹ The commit should not trigger a release
[semantic-release] [[Function: semantic-release-monorepo]] › ℹ Analysis of 2 commits complete: no release
[semantic-release] › ✔ Completed step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ℹ Start step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ✔ Completed step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ℹ Start step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] 90m› ✔ Completed step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ℹ Start step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ✔ Completed step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ℹ Start step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ✔ Completed step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ℹ Start step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ✔ Completed step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ℹ Start step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ✔ Completed step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ℹ Start step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ✔ 39m Completed step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ℹ Start step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ✔ Completed step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ℹ Start step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ✔ Completed step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ℹ There are no relevant changes, so no new version is released.
and
[semantic-release] › ℹ Start step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
semantic-release:monorepo Running 'analyzeCommits' version '7.0.2' +0ms
semantic-release:monorepo Filter commits by package path: "packages/utilities" +0ms
semantic-release:monorepo Including commit "build: trying to debug" because it modified package file "packages/utilities/release.config.js". +49ms
semantic-release:monorepo Including commit "build: testing releaseRules" because it modified package file "packages/utilities/release.config.common.js". +0ms
semantic-release:monorepo Including commit "bug: fix JS bug in generateNotes function" because it modified package file "packages/utilities/release.config.common.js". +0ms
semantic-release:monorepo Including commit "build: revert changes for generateNotes" because it modified package file "packages/utilities/release.config.common.js". +0ms
semantic-release:monorepo Including commit "build: update semantic release monorepo version" because it modified package file "packages/utilities/package-lock.json". +0ms
[semantic-release] [[Function: semantic-release-monorepo]] › ℹ Found 5 commits for package @whpal/liz-semrel-testing-utilities since last release
[semantic-release] [[Function: semantic-release-monorepo]] › ℹ Analyzing commit: build: trying to debug
semantic-release:commit-analyzer Analyzing with default rules +0ms
[semantic-release] [[Function: semantic-release-monorepo]] › ℹ The commit should not trigger a release
[semantic-release] [[Function: semantic-release-monorepo]] › ℹ Analyzing commit: build: testing releaseRules
semantic-release:commit-analyzer Analyzing with default rules +1ms
[semantic-release] [[Function: semantic-release-monorepo]] › ℹ The commit should not trigger a release
[semantic-release] [[Function: semantic-release-monorepo]] › ℹ Analyzing commit: bug: fix JS bug in generateNotes function
semantic-release:commit-analyzer Analyzing with default rules +1ms
[semantic-release] [[Function: semantic-release-monorepo]] › ℹ The commit should not trigger a release
[semantic-release] [[Function: semantic-release-monorepo]] › ℹ Analyzing commit: build: revert changes for generateNotes
semantic-release:commit-analyzer Analyzing with default rules +0ms
[semantic-release] [[Function: semantic-release-monorepo]] › ℹ The commit should not trigger a release
[semantic-release] [[Function: semantic-release-monorepo]] › ℹ Analyzing commit: build: update semantic release monorepo version
semantic-release:commit-analyzer Analyzing with default rules +0ms
[semantic-release] [[Function: semantic-release-monorepo]] › ℹ The commit should not trigger a release
[semantic-release] [[Function: semantic-release-monorepo]] › ℹ Analysis of 5 commits complete: no release
[semantic-release] › ✔ Completed step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ℹ Start step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ✔ Completed step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ℹ Start step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ✔ Completed step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ℹ Start step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ✔ Completed step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ℹ Start step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ✔ Completed step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ℹ Start step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ✔ Completed step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ℹ Start step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › 32m✔ Completed step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ℹ Start step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ✔ Completed step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ℹ Start step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ✔ Completed step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ℹ Start step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ✔ Completed step "analyzeCommits" of plugin "[Function: semantic-release-monorepo]"
[semantic-release] › ℹ There are no relevant changes, so no new version is released.
Let me know if you need anything else and thank you for looking in to this.
That release config is using the old format semantic-release
format. As of version 15.10, most of the configuration has been moved into the plugins
. None of githubUrl
, githubApiPathPrefix
, releaseRules
, releaseNotes
, generateNotes
are valid top-level configuration keys anymore - I think that's why the release rules aren't being applied anymore.
See the current top-level config options here: https://github.com/semantic-release/semantic-release/blob/master/docs/usage/configuration.md#configuration
(I'd recommend running the latest version of this plugin with the latest version of semantic-release
.)
Here's roughly what I think your config should look like. Please reference the individual plugin READMEs via semantic-release
for their respective configuration options:
https://github.com/semantic-release/commit-analyzer https://github.com/semantic-release/github https://github.com/semantic-release/release-notes-generator
module.exports = {
branches: ...,
plugins: [
['@semantic-release/commit-analyzer', {
"releaseRules": [
{ breaking: true, release: 'major' },
{ revert: true, release: 'patch' },
{ type: 'feat', release: 'minor' },
...
]
}],
['@semantic-release/release-notes-generator', {
preset: 'angular',
writerOpts: {
transform: (commit, context) => {...},
}
}],
'@semantic-release/npm',
['@semantic-release/github', {
githubUrl: 'https://github.ibm.com',
githubApiPathPrefix: 'api/v3',
}]
],
}
That did the trick @pmowrer. Thank you so much for your help!
We are using
semantic-release
andsemantic-release-monorepo
in our project and want to modify the defaultconventional-changelog-angular
writerOpts
configuration (specifically thetransform
function).Following the guidelines for semantic release, I added the function at the root of the config object and my changes were applied to the changelog notes in GH.
However, with this approach we lost the commit package scoping that is provided by
semantic-release-monorepo
.In a different project we use
semantic-release-gitmoji
as our changelog convention and were able to set it up to work withsemantic-release-monorepo
by doing the following:I tried to do something similar in my current project:
but did not have any luck as it reverted back to using the default
transform
functionDebug with
generateNotes
inmonorepo
:Debug with
generateNotes
at root: