Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How do I add a releaseRule that also respects the ! for a breaking change? (conventionalcommits preset) #413

Open
natesilva opened this issue Feb 2, 2023 · 5 comments

Comments

@natesilva
Copy link

natesilva commented Feb 2, 2023

We’re using the conventionalcommits preset. In this preset, adding an exclamation after the type triggers a breaking change/major version bump.

Using the default releaseRules this works. feat!:, fix!: and perf!: are recognized as major/breaking changes.

In fact, anything with an exclamation triggers a major/breaking change, such as docs!: or even allGloryToTheHypnoToad!:

Now we want to add refactor as a type.

plugins: [
    [
      '@semantic-release/commit-analyzer',
      {
        preset: 'conventionalcommits'
        releaseRules: [{ type: 'refactor', release: 'patch' }]
      }
    ],

After adding this, refactor: triggers a patch change, as expected.

But refactor!: no longer triggers a major version bump.

How do we get this to work?

Edit to add version info: semantic-release 19.0.5, @semantic-release/commit-analyzer 9.0.2, Node 16.19.0

@RaphaelNeumann
Copy link

I had the same issue like you.

But I found a solution by adding {breaking: true, release: 'major'} on my releaseRules

{
  preset: 'conventionalcommits',
  releaseRules: [
    { breaking: true, release: 'major' },
    { type: 'feat', release: 'minor' },
    { type: 'feature', release: 'minor' },
    { type: 'fix', release: 'patch' },
    { type: 'style', release: 'patch' },
    { type: 'refactor', release: 'patch' },
    { type: 'perf', release: 'patch' },
    { type: 'build', release: 'patch' },
    { type: 'chore', release: 'patch' },
    { type: 'revert', release: 'patch' }
  ]
}

@tomavic
Copy link

tomavic commented Apr 24, 2023

I also had the same issue when I tried to commit a perf commit with BREAKING CHANGE: in the body, I was expecting a major release but instead it triggers the patch.

      "@semantic-release/commit-analyzer",
      {
        "preset": "conventionalcommits",
        "parserOpts": {
          "noteKeywords": ["BREAKING CHANGE", "BREAKING CHANGES", "BREAKING"]
        },
        "releaseRules": [
          { "type": "docs", "release": "patch" },
          { "type": "refactor", "release": "patch" },
          { "type": "style", "release": "patch" },
          { "type": "test", "release": "patch" },
          { "type": "ci", "release": "patch" },
          { "type": "chore", "release": "patch" },
          { "type": "perf", "release": "patch" }
        ]
      }

Is there is any way to add multiple types with multiple release?
Or something to override the rules if it found the BREAKING CHANGE: word in the body of the commit message?

I had the same issue like you.

But I found a solution by adding {breaking: true, release: 'major'} on my releaseRules

{
  preset: 'conventionalcommits',
  releaseRules: [
    { breaking: true, release: 'major' },
    { type: 'feat', release: 'minor' },
    { type: 'feature', release: 'minor' },
    { type: 'fix', release: 'patch' },
    { type: 'style', release: 'patch' },
    { type: 'refactor', release: 'patch' },
    { type: 'perf', release: 'patch' },
    { type: 'build', release: 'patch' },
    { type: 'chore', release: 'patch' },
    { type: 'revert', release: 'patch' }
  ]
}

@ajcerezo
Copy link

ajcerezo commented Nov 6, 2024

Hello,

I have the same problem, with this solution I solved it.

thank you

@tomavic
Copy link

tomavic commented Nov 11, 2024

@ajcerezo which solution do you mean?

@ajcerezo
Copy link

This solution of @RaphaelNeumann

I had the same issue like you.

But I found a solution by adding {breaking: true, release: 'major'} on my releaseRules

{
  preset: 'conventionalcommits',
  releaseRules: [
    { breaking: true, release: 'major' },
    { type: 'feat', release: 'minor' },
    { type: 'feature', release: 'minor' },
    { type: 'fix', release: 'patch' },
    { type: 'style', release: 'patch' },
    { type: 'refactor', release: 'patch' },
    { type: 'perf', release: 'patch' },
    { type: 'build', release: 'patch' },
    { type: 'chore', release: 'patch' },
    { type: 'revert', release: 'patch' }
  ]
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants