Skip to content

Monorepo support #168

Open
Open

Description

@danth

As suggested here, it would be useful to have the option to differentiate between multiple projects within the same repository when posting changelogs.

I think the most plausible solution is to pass some text on the command line which is appended before the title of the release, such as --project "Foo". This would create a title of Foo vX.X.X. Alternatively, more customization of the ordering could be given using some sort of format string.

Obviously, if the option is omitted then the behavior would be the same as it is now.

Activity

  1. KingDarBoja commented on Feb 14, 2020

    @KingDarBoja
    Contributor

    I forgot to mention, the generated assets on the releases tab contain the entire github repo instead of build artifacts per package. Should be good to provide extra documentation about this in some example.

    EDIT Looks like it is the default behaviour of GitHub repos and packages. Would be awesome if there is something like semantic-release-monorepo which seems to be what I am asking for 🤔

    Cheers!

  2. danth commented on Feb 14, 2020

    @danth
    ContributorAuthor

    Looking at that link you sent, maybe it'd be better to add more comprehensive support for monorepos instead of just the changelog titles.

  3. changed the title [-]Changelogs for multiple projects within one repository[/-] [+]Monorepo support[/+] on Feb 14, 2020
  4. added
    featureA new feature or a feature request
    on Mar 30, 2020
  5. added
    confirmedPrevent from becoming stale
    and removed on Mar 30, 2024
  6. added this to the Monorepo support milestone on Mar 30, 2024
  7. 19 remaining items

  8. wyardley commented on Jan 22, 2025

    @wyardley
    Contributor

    I would think that the scopes should be specific to each application within the project? And if you had a single commit that applied to scope x in project 1 and scope y in project 2, you’d omit the scope or use separate commits? It would be possible to use merge commits or rebase merge to keep atomic commits within a single PR.

    I also don’t think multiple scopes are supported in the conventional commits or angular style.

  9. codejedi365 commented on Jan 22, 2025

    @codejedi365
    Contributor

    I would think that the scopes should be specific to each application within the project? And if you had a single commit that applied to scope x in project 1 and scope y in project 2, you’d omit the scope or use separate commits? It would be possible to use merge commits or rebase merge to keep atomic commits within a single PR.

    I also don’t think multiple scopes are supported in the conventional commits or angular style.

    Agreed. From the Conventional Commits Spec:

    A scope MAY be provided after a type. A scope MUST consist of a noun describing a section of the codebase surrounded by parenthesis, e.g., fix(parser):

    This does not say anything about multiple scopes. And my recommendation is to keep each change atomic (even if one change causes a runtime-error in the other) just realize that the next commit to fix the function signature in the subsequent commit is required and both commits must be pushed/merged together.

    Soon I will have support for parsing squashed commits so it will not matter how you merge them into the release trunk.

  10. codejedi365 commented on Jan 22, 2025

    @codejedi365
    Contributor

    Probably use a concurrency key for any / all actions running semantic-release

    @wyardley Thanks for the idea. I'll play with that.

    Although you can get this might work, now you will need to consider what variant did you test and which sha are you releasing. I probably still have this problem with how PSR works but at least it was better than before. If you see the GitHub Actions example, I check out a specific sha (the one that was started with the workflow) and then move the branch to the current head so that the PSR release branch works. The problem I ran into with multiple PRs merged at once is that the first PR would pull master in the release job which was already bumped with the 2nd merged PR but wasn't what was tested with that workflow. Not good, could of been bad.

    So a concurrency flag would probably need to be set across the entire workflow, or you can go with the no commit environment (tags only) like described in #1149.

    I think instead of 2 workflows you are better off using multiple subsequent jobs like described in #1132. Hopefully i can also add the GitHub action output of the sha value which might also help in certain cases.

  11. github-actions commented on Mar 23, 2025

    @github-actions

    It has been 60 days since the last update on this confirmed issue. @python-semantic-release/team can you provide an update on the status of this issue?

  12. codejedi365 commented on Apr 22, 2025

    @codejedi365
    Contributor

    Still under development although the development has stalled for the time being.

  13. github-actions commented on Jun 23, 2025

    @github-actions

    It has been 60 days since the last update on this confirmed issue. @python-semantic-release/team can you provide an update on the status of this issue?

  14. codejedi365 commented on Jun 26, 2025

    @codejedi365
    Contributor

    PR #1143 provides a conventional commit parser for monorepos that can currently be used as a custom parser. It has been manually tested and is waiting automation testing for resolution. This should be one of the major steps to completion of monorepo support.

  15. akselerando commented on Sep 22, 2025

    @akselerando

    Is there an overview/roadmap for the remaining features for full monorepo support?

    I see in the new documentation that PSR configs are required in each package. Are there plans to support configuration only at the root level?

  16. codejedi365 commented on Sep 22, 2025

    @codejedi365
    Contributor

    Is there an overview/roadmap for the remaining features for full monorepo support?

    There is a Milestone dedicated to monorepo support that connects multiple issues together which is the closest thing to a roadmap.

    I see in the new documentation that PSR configs are required in each package. Are there plans to support configuration only at the root level?

    I anticipated this request would be asked. It's the primary reason why this ticket wasn't closed. And I needed to add support for monorepos in the other 2 commit parser types. It will be a while though for a consolidated workspaces configuration as the current config is undergoing a refactor.

  17. github-actions commented on Dec 22, 2025

    @github-actions

    It has been 90 days since the last update on this confirmed issue. @python-semantic-release/team can you provide an update on the status of this issue?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    confirmedPrevent from becoming stalefeatureA new feature or a feature requestneeds-updateNeeds status update from maintainers

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions