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.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Problem
We currently run nightlies of
react-nativebut 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
packagesfolder excludingpackages/react-native.About monorepo releases
react-native, we ship a new "main" version of monorepo packages.bump-oss-packagesandalign-package-versionswhich 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-nativeNote:
react-nativeversionsreact-native, but we can already publish 0.73.2 for a monorepo packagemainwithout 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-nativecan specify in itspackage.jsonthe latest "main" version (which it already does).2. Ship nightlies of
react-nativedependencies 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-nativenightlyreact-nativeRC. All work onmainfor 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-nativepackage we have the concept that ourpackage.jsoncommitted inmainis 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