Improving the usability of nightly build outputs #2506
Replies: 4 comments 11 replies
-
This feels like it must be a very common deployment pattern. I guess the |
Beta Was this translation helpful? Give feedback.
-
I think this is a great idea! Typically I've heard of this pattern as a "release branch." We're basically moving towards continuous deployment, modulo the extremely long runtime of our end-to-end testing. This avoids having to worry about new stuff landing in If I'm reading this correctly, your plan is:
We could do the two parts of step 2 in either order. If we merge first, there will be a few minutes where I think that's... fine... for now. If we really want no downtime for this changeover, we could do this:
|
Beta Was this translation helpful? Give feedback.
-
Forking a conversation here from Slack:
|
Beta Was this translation helpful? Give feedback.
-
One of the issues blocking adoption of trunk-based development with tagged releases was the library nature of our code. Since we seem to be moving away from supporting the library use-case in #2979 , I want to re-propose the following:
|
Beta Was this translation helpful? Give feedback.
-
We have a couple of other repos that are downloading nightly build outputs and the code that goes with them (from
dev
) but when the nightly builds break these projects also break — since their DB is then older than the code as the DB is from the most recent successful build, but the code is from the currentdev
branch. These repos include at least CCAI Entity Matching and RMI Energy Communities. Are there others @cmgosnell @katie-lamb?Now that we're merging
dev
intomain
whenever the nightly builds succeed, it seems like a better pattern might be to associate the publicly available build outputs withmain
-- since then folks will always reliably have data and code that are in sync. We should also automate (or at least semi-automate) the practice of mergingdev
intomain
when the builds succeed, and take precautions to ensure that no additional commits can be added between when the build is kicked off, and the branch is merged.Maybe what we really want to do is:
nightly-build-YYYY-MM-DD
branch off ofdev
and create a draft PR from that branch intomain
main
and push the build outputs to their various externally visible locations — Datasette, GCS, and the AWS Open Data bucket — referring tomain
orlatest
or some other label that’s notdev
in those locations.That way the "default" outputs would be as fresh as possible while still definitely being associated with a successful build, and there would be a reliable correspondence between the code on the
main
branch and the currently public nightly builds.If the build fails what do we do? It could be that a database has been created, but it didn’t pass the data validations & tests, in which case it would be useful to make that database easily accessible for debugging the failure. Maybe in this case the ouputs get sent to the easily accessible to us, but less obvious to the rest of the world
gs://intake.catalyst.coop/dev
bucket. But it could also be that the construction of the DB failed, so maybe having it only sometimes moved todev
would be confusing for us even internally.Beta Was this translation helpful? Give feedback.
All reactions