-
Notifications
You must be signed in to change notification settings - Fork 67
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
Discovery: Publishing multiple packages from the component-library repo #1068
Comments
The main "off the shelf" solution I found is The hard part about this as I see it isn't just the publishing - it's having descriptive release notes which correspond to each individual package as an artifact of publishing. Using semantic-release-monorepoSimilar to the work done in department-of-veterans-affairs/component-library#490 We can see the With the Custom solutionAnother option is to build out the CI mostly ourselves using Github's API. Here's an outline of what that could look like:
A nice bonus would be if each package had its own changelog in addition to having its releases in the repos list of all the other releases. Since it seems like our Github bot token doesn't have permissions to make commits, I think we would have to use a new bot/token to do this automatically or have a script that we run and commit the resulting CHANGELOG changes locally. This automation could essentially copy the release notes for a package version and paste them into a file - I don't think we would need to do anything additional like format our commits a certain way so that it can parse them. |
I'm curious, what other options did you look into? |
I looked at the options mentioned in this article. |
I see NX mentioned in the comments, did you look into that? I also have heard that it's possible to publish using Yarn workspaces, but I don't see that in this article. Have you looked into that at all? |
A couple of good resources to take a look at: |
We're already publishing using Yarn workspaces. The real challenge is having separate release notes for each of those published packages. I didn't look closely at nx, I'll see if it would help solve our problems. |
There may be other options in those resources I linked to above as well. I would recommend taking a look at at least a few of them. |
In the awesome-monorepo link I found a list of notable public monorepos, one of which is a good example of what we want to achieve as a result of this discovery and followup development. That repo has Github Releases (along with release notes) and git tags specific to a package and version. Even with our current setup, we are building and publishing multiple packages, but we don't have separate releases. As an example, We're already using yarn workspaces, and that gives us tools to do common things across all packages, like manage dependencies and build and publish. Most of the tooling I've seen is designed to support that kind of functionality - running various scripts on some or all of the packages or making code sharing easier. I haven't found anything in |
Lerna used to be state-of-the-art for monorepo management, but last year the team that had been maintaining it announced that they would no longer be doing that. Another team subsequently picked it up, but that doesn't give me a great deal of confidence in the future of that project, so while Lerna probably has great tools, I'm not sure we want to rely on it. Unfortunately. I'm glad you've found a good example, though, that's awesome. Thank you for digging in a little further. |
I've also had to deal with some pain & frustration with lerna (the tools repo is a lerna repo) so I'm also hesitant of jumping into lerna for that reason alone. I didn't know about the change in ownership, I can see how that doesn't inspire confidence. |
Next steps are to create a dummy repo setup with |
I've been doing some more discovery in this testing repo and found out a few things.
|
Action item: Setup another dummy repo for experimenting with lerna. |
@bkjohnson , closing this out. Please write up ticket(s) for any work going forward based on this discovery. |
Description
With the addition of the CSS library package, we would like to explore tooling options for easy and automated publishing of multiple packages from the component-library repository. The result of this discovery should be the recommendation of a particular tool along with an analysis of it and other tooling options.
Details
Things to consider:
Tasks
Acceptance Criteria
The text was updated successfully, but these errors were encountered: