Replies: 5 comments 10 replies
-
I am leaning more towards the second solution with using Few thoughts:
|
Beta Was this translation helpful? Give feedback.
-
It sounds to me like you are mixing two different concepts: releases and versioning on the monorepo packages, and releasing nightlies. I think that we should aim for these two processes to be clearly and properly separated - let me try to bring some further context for folks that are not in the release crew so they might not be fully aware of everything going on. "normal" releasesFirst thing, to make sure we're fully clear 'cause I can see some room for confusion:
there are two separate things going on here: in -stable branchWhen we have cut 0.72, we also released new patch versions 0.72.x for all monorepo packages that have unreleased changes. And in ´0.72-stable´, we do new patch releases for these packages through automation when new changes happen, ahead of new 0.72.x minor for in main branchThe reason why we shipped 0.73 of all monorepo packages from When to do new patches for packages in nightliesA separate problem is releasing nightlies - both for Currently a nightly is a completely automated process that only releases a snapshot of Doing nothing means that the latest nightly will consume the latest released from main version of said monorepo packages (keeping up with the example above, it'd mean latest 0.73.x release of the packages), which, as you mentioned, might lead to a slightly inconsistent nightly. my 2c$Like @hoxyq, I am very concerned with how noisy and expensive releasing a nightly for all packages every 24hrs might be. I think that the first thing to ask before picking one of the two options you are proposing is: how frequent are changes in the other (!= But if the frequency is low (let's say a change every couple weeks on avg), I think it might make more sense to go for option 1 and just make so that when a new change lands in one of these other packages, it's released. There's probably room for automation here. |
Beta Was this translation helpful? Give feedback.
-
Echoing what @kelset said, to me fixing the React Native nightlies == make sure The versioning schema of nightlies can be discussed separately, it can be
Can you elaborate on how "expensive" it is publishing a |
Beta Was this translation helpful? Give feedback.
-
To summarize:
Does that sound right to folks? |
Beta Was this translation helpful? Give feedback.
-
Closing this as this work has been completed! |
Beta Was this translation helpful? Give feedback.
-
Problem
We currently run nightlies of
react-native
but we don't have nightlies for dependencies that we ship from the monorepo. This slightly invalidates the intention of running a nightly ofreact-native
-- to provide a daily functional snapshot of the codebase to ideally test and catch regressions earlier.Context:
Note: I use the term "monorepo packages" to refer to packages under the
packages
folder excludingpackages/react-native
.About monorepo releases
react-native
, we ship a new "main" version of monorepo packages.bump-oss-packages
andalign-package-versions
which increment and update the versions within all the packages. (monorepo packages may depend on one another)main
, if someone updates the version of a monorepo package, we have CircleCI job to publishreact-native
Note:
react-native
versionsreact-native
, but we can already publish 0.73.2 for a monorepo packagemain
without bumping the version (and publishing).Potential Solutions
1. We could enforce that whenever you make a change in a monorepo package, it requires a version bump and publish.
This ensures we're "flushing" any changes and so our nightly
react-native
can specify in itspackage.json
the latest "main" version (which it already does).2. Ship nightlies of
react-native
dependencies from our monorepo.This option lends to some more questions...
What version should we use for the monorepo nightlies?
Options:
0.0.0-...
naming schema which we use forreact-native
.react-native
.0.73.0-nightly...
-- similar to proposed version forreact-native
nightlyreact-native
RC. All work onmain
for a monorepo package is "in-progress"My recommendation
I think option 2 feels like the more consistent approach but takes a bit more work.
Re: 1 -- I'm not sure how reasonable it is to publish a patch everytime we make a change to a monorepo package -- but no one would really be expected to use it except for nightlies.
Other musings
I think there's a conflict here of what "version" we have committed to code and what "version" we have published. For
react-native
package we have the concept that ourpackage.json
committed inmain
is a non-package, re:1000.0.0
.But our monorepo packages imply that the version they're committed are the latest published version -- which allows for this "limbo" of changes -- how are those represented? I think that's the essential issue with the question of nightlies. I think option 2 moves us to a consistent approach where we'd also set our monorepo packages to a non-package version on
main
.Looking for
Most importantly, does solution 2 miss something? That's the approach I'm leaning towards.
Beta Was this translation helpful? Give feedback.
All reactions