Brent Moran
unread,Feb 21, 2023, 12:20:30 AM2/21/23Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to Mathesar Developers
Context:
I woke up this morning to find that the current prod docker image was
not able to successfully run via our `install.sh` script. The problem
was that static files aren't being served properly.
Problems:
- The docker image was published to the `latest` tag, but couldn't run
via the `install.sh` script.
- The `master` branch of the repo has (for a while; multiple days)
been such that building a prod docker image using the repo would
result in an image that can't run via the `install.sh` script.
This Proposal aims to solve those problems, and kick off the
discussion of how we want to handle releasing 'production' code and
artifacts.
Tasks for making it possible to test our images:
- Set up a separate `mathesar-git-nightly` repo on docker hub.
- Modify `install.sh` to be able to use that repo, or a local image
rather than `mathesar-prod` when given a specific parameter.
- Establish an understanding that any non-trivial branch being merged
into master must first be built as a docker image, and then smoke
tested by using `install.sh` to run it as if it were the prod image.
- The build of the test image must be in a fresh repo pulled
directly from github, checked out to the appropriate branch, in a
pristine docker environment.
- Once per day, someone (maybe me) should build a completely fresh
pull of the repo in a pristine environment and push the resulting
image to `mathesar-git-nightly`. This image should be pulled and run
for a double-check.
- For now, we could do this manually, but we should make a GH action
for it ASAP (the pristine Docker environment requirement is a pain).
Doing the above should endure that any Docker build produced from the
master branch will work as the `mathesar-prod` image.
Proposed Alpha Release Process
We need a process for releasing GH versions and associated artifacts
in a safe(ish) way. We'll take the above as a given, i.e., we know (or
are relatively sure) that a docker image built from master works.
1. Determine a commit into master that will be the base of the release.
2. Compose the release notes, and get the prose written up.
3. Build the code for that commit into a docker image; push to
`mathesar-git-nightly:latest`, and pull/run it to ensure it works.
4. Tag the same image (on your local machine) for
`mathesar/mathesar-prod:X.Y.Z`, and `mathesar/mathesar-prod:latest`,
and push that.
5. Publish the release on Github.
We should also figure out if we want any human bureaucracy involved,
and who those humans should be.