From d981c940bcf916663928773f18d9d86382fc4146 Mon Sep 17 00:00:00 2001 From: Lev Date: Sun, 22 Oct 2023 09:37:42 -0700 Subject: [PATCH 1/4] Document packages --- packages/README.md | 101 +++++++++++++++++++++++++++++++++++ packages/dependency-tree.png | Bin 0 -> 28742 bytes 2 files changed, 101 insertions(+) create mode 100644 packages/README.md create mode 100644 packages/dependency-tree.png diff --git a/packages/README.md b/packages/README.md new file mode 100644 index 000000000..10dfa2696 --- /dev/null +++ b/packages/README.md @@ -0,0 +1,101 @@ +# Packages + +A collection of installable packages and libraries used for distributing and working with PostgresML. + +## Table of contents + +1. `cargo-pgml-components`: cargo CLI for building our web apps (e.g. `pgml-dashboard`) +2. `pgml-components`: library implementing common Rust components used in our web apps +3. `postgresml`: meta package used to install all PostgresML components on an Ubuntu system +4. `postgresml-dashboard`: web app for managing PostgresML, Ubuntu package +5. `postgresml-python`: Python dependencies shipped as a pre-built virtual environment, Ubuntu package +6. `postgresql-pgml`: PostgreSQL extension, Ubuntu package + +## Packages + +### `cargo-pgml-components` + +A cargo (Rust build tool chain) CLI for building web apps written in Rust, Rocket, Sailfish and Turbo/Stimulus. It automatically creates the necessary folder structure for a project, and bundles JavaScript and Sass files into JS and CSS bundles. See [README.md](cargo-pgml-components/README.md) for more details. + +### `pgml-components` + +A Rust library implementing common components for web apps written in Rust, Rocket and Sailfish. Used in our web apps together with the cargo CLI. + +### `postgresml` + +A Debian (Ubuntu 22.04) package which installs everything needed for PostgresML to work on an Ubuntu system. It depends on `postgresql-pgml` and `postgresml-python`, ensuring that correct versions of both are installed, as needed. + +### `postgresml-dashboard` + +A Debian (Ubuntu 22.04) package which compiles and distributes `pgml-dashboard`. It follows the same release cadence as the extension package, documented below. + +### `postgresml-python` + +A Debian (Ubuntu 22.04) package which builds and distributes a Python virtual environment with all the required Python packages used by PostgresML. This includes HuggingFace, PyTorch, Scikit-learn, XGBoost, and many more. This package is quite large and distributed separately since we update our PostgreSQL extension more frequently than our Python dependencies. + +### `postgresql-pgml` + +A Debian (Ubuntu 22.04) package which builds and distributes the PostgreSQL extension. The extension, better known as PostgresML, is the foundation of our product suite and performs all machine learning operations. It's distributed separately from Python dependencies because it includes many algorithms that don't require Python (i.e. our `rust` runtime). Additionally, some systems manage Python dependencies outside of a virtual environment, and we don't want to mandate its use. + +## Dependency tree + +![dependency tree](./dependency-tree.png) + +## Release process + +When releasing a new version of PostgresML to the community, we follow the following release process. At the moment, there are a few manual steps documented below. There are opportunities for automation which we haven't had a moment to explore yet, but PRs and ideas here are welcome. + +### 1. Update version numbers + +#### Cargo.toml + +The version of PostgresML is set in many places, and all of them need to be updated. The first place is `Cargo.toml` (and `Cargo.lock`). Update it in `pgml-extension` and `pgml-dashboard`, making sure both of them match. This is helpful to our users because a version of the dashboard is guaranteed to work with the same version of the extension. The version in `pgml-extension/Cargo.toml` is automatically propagated to the PostgreSQL extension. Make sure to `cargo build` both packages to update the `Cargo.lock` lockfile as well. + +#### Documentation + +Additionally, we mention the version of the extension in our documentation. It would be very helpful to update it there as well, so our users are always instructed to install the latest and greatest version. Our documentation is located in `pgml-docs`. If you search it for the current version number, you should find all the places where we mention it. + +#### Github Actions + +We use Github actions to build our packages. The version of the Debian (Ubuntu) package is independently set from the extension version, but must match nonetheless to avoid confusion. The package version is passed into the build scripts using a Github Actions input variable. Currently, our build process is triggered manually, so that version should be either updated in the YAMLs, so the default is correct, or set manually by the release manager. + +Currently, we have two Github Actions: + +- `ubuntu-packages-and-docker-image`: builds `postgresml`, `postgresml-pgml`, `postgresml-dashboard`, and the Docker image +- `ubuntu-postgresml-python-package`: builds the `postgresml-python` package + +The version of the `postgresml-python` should match the version of `postgresml` only when Python dependencies change. + +### 2. Write a migration + +PostgreSQL extensions are installed into stateful databases. Therefore, a migration from the previous version to the new one is always required. A migration changes the system in a way to work with the new version of the extension. This is especially needed when we change or add an API (SQL function). Without altering/adding the SQL function definitions, PostgreSQL won't be able to use the functions we changed in the extension code. If no API changes were made, PostgreSQL extensions still require a migration file, which can be empty. This is commonly done for bug fixes for existing functionality or internal changes, e.g. swapping runtimes or adding additional options already supported by the existing kwarg-based API. + +#### How to write a migration + +A migration is a SQL (`.sql`) text file that has to be placed into the `pgml-extension/sql` folder. The name of the file is following a strict convention that needs to be followed for the migration to work: + +``` +----.sql +``` + +where: + +- `` is the name of the extension, in our case, `pgml` +- `` is the currently released version of the extension, including minor and patch version numbers +- `` is the new version of the extension being released with the PR, including minor and patch version numbers + +For example, if the current version of the extension is `2.7.10` and we would like to release the new version `2.7.11`, the migration file should be: `pgml-extension/sql/pgml--2.7.10--2.7.11.sql`. + +When the extension is packaged, the migration will be included automatically by `pgrx`, our Rust PostgreSQL extension toolkit. + +### 3. Commit and tag + +Push a commit to `master` with the changes above. Once pushed, make a new Github release. The release should be named after the version, e.g. `v2.7.11` so we and our users can more easily find the changelog. + +### 4. Run Github Actions + +In this order, run the Github actions: + +1. If Python dependencies were updated, run `ubuntu-postgresml-python-package` and wait for it to complete +2. Run `ubuntu-packages-and-docker-image`. When that's finished, the new version of the extension will be released to everyone in our community. + diff --git a/packages/dependency-tree.png b/packages/dependency-tree.png new file mode 100644 index 0000000000000000000000000000000000000000..afdbf53eb4ddd7ffebafff45787a79cc69cb4b9f GIT binary patch literal 28742 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 Date: Sun, 22 Oct 2023 09:40:42 -0700 Subject: [PATCH 2/4] Tag name --- packages/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/README.md b/packages/README.md index 10dfa2696..6b6d249b2 100644 --- a/packages/README.md +++ b/packages/README.md @@ -92,6 +92,10 @@ When the extension is packaged, the migration will be included automatically by Push a commit to `master` with the changes above. Once pushed, make a new Github release. The release should be named after the version, e.g. `v2.7.11` so we and our users can more easily find the changelog. +#### Name of the tag + +Make sure that the tag is named correctly. Tags are immutable, so if we push the wrong name, it'll stay in git forever. Tags should be named with the version number preceeded by the letter "v", e.g. `v2.7.11`. + ### 4. Run Github Actions In this order, run the Github actions: From 6a368b752df0f376e63348b0a2a97c9296060738 Mon Sep 17 00:00:00 2001 From: Lev Date: Sun, 22 Oct 2023 09:41:00 -0700 Subject: [PATCH 3/4] tag name --- packages/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/README.md b/packages/README.md index 6b6d249b2..ed5b5db8b 100644 --- a/packages/README.md +++ b/packages/README.md @@ -94,7 +94,7 @@ Push a commit to `master` with the changes above. Once pushed, make a new Github #### Name of the tag -Make sure that the tag is named correctly. Tags are immutable, so if we push the wrong name, it'll stay in git forever. Tags should be named with the version number preceeded by the letter "v", e.g. `v2.7.11`. +Make sure that the tag is named correctly. Tags are immutable, so if we push the wrong name, it'll stay in git forever. Tags should be named with the version number preceded by the letter "v", e.g. `v2.7.11`. ### 4. Run Github Actions From 585178be831581426a1023a95f72f1830d10a009 Mon Sep 17 00:00:00 2001 From: Lev Date: Sun, 22 Oct 2023 09:41:58 -0700 Subject: [PATCH 4/4] notes --- packages/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/README.md b/packages/README.md index ed5b5db8b..1f4c7419b 100644 --- a/packages/README.md +++ b/packages/README.md @@ -27,7 +27,7 @@ A Debian (Ubuntu 22.04) package which installs everything needed for PostgresML ### `postgresml-dashboard` -A Debian (Ubuntu 22.04) package which compiles and distributes `pgml-dashboard`. It follows the same release cadence as the extension package, documented below. +A Debian (Ubuntu 22.04) package which compiles and distributes `pgml-dashboard`. It follows the same release cadence as the extension package, documented below. The dashboard is distributed separately because it's a web app and often won't run on the same system as PostgresML. ### `postgresml-python` pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy