TimescaleDB 2.30.2 pour PostgreSQL 16 à 18, 2.28.3 gardé pour PostgreSQL 15
🚀 Docker Build and Push / build-and-push (15) (push) Successful in 2m58s
🚀 Docker Build and Push / build-and-push (16) (push) Successful in 3m39s
🚀 Docker Build and Push / build-and-push (17) (push) Successful in 3m37s
🚀 Docker Build and Push / build-and-push (18) (push) Successful in 3m36s
🚀 Docker Build and Push / build-and-push (15) (push) Successful in 2m58s
🚀 Docker Build and Push / build-and-push (16) (push) Successful in 3m39s
🚀 Docker Build and Push / build-and-push (17) (push) Successful in 3m37s
🚀 Docker Build and Push / build-and-push (18) (push) Successful in 3m36s
- TIMESCALEDB_VERSION passe de 2.28.3 à 2.30.2. Vérifié pour 16, 17 et 18 : compilation, tests, et reprise d'une base créée par l'image publiée après `ALTER EXTENSION timescaledb UPDATE`. - TimescaleDB 2.29 a retiré PostgreSQL 15 (`Unsupported PostgreSQL version` à la compilation) : `pg15` garde 2.28.3 par TIMESCALEDB_VERSION_PG15. - Décision 0007, tableau et badge du README, procédure de changement de version. Une base existante refuse toute requête sur la nouvelle image tant que l'extension n'est pas mise à niveau : voir docs/exploitation/publication.md.
This commit is contained in:
6 files changed
+62
-22
No files matched your search
@@ -15,8 +15,8 @@ docker build --build-arg PG_VERSION=17 -t postgres-ts-vectors:pg17 .
|
|||||||
# Rejouer la mise à niveau des paquets, que le cache garderait sinon telle quelle
|
# Rejouer la mise à niveau des paquets, que le cache garderait sinon telle quelle
|
||||||
docker build --build-arg PG_VERSION=17 --build-arg APT_REFRESH=$(date +%F) -t postgres-ts-vectors:pg17 .
|
docker build --build-arg PG_VERSION=17 --build-arg APT_REFRESH=$(date +%F) -t postgres-ts-vectors:pg17 .
|
||||||
|
|
||||||
# Essayer une autre version de TimescaleDB sans toucher au Dockerfile
|
# Essayer une autre version de TimescaleDB sans toucher au Dockerfile (X.Y.Z : étiquette Git)
|
||||||
docker build --build-arg PG_VERSION=17 --build-arg TIMESCALEDB_VERSION=2.30.2 -t postgres-ts-vectors:essai .
|
docker build --build-arg PG_VERSION=17 --build-arg TIMESCALEDB_VERSION=X.Y.Z -t postgres-ts-vectors:essai .
|
||||||
|
|
||||||
# Tests de l'image
|
# Tests de l'image
|
||||||
./tests.sh postgres-ts-vectors:pg17
|
./tests.sh postgres-ts-vectors:pg17
|
||||||
@@ -49,7 +49,9 @@ docker run --rm --entrypoint sh gitea.killinger.fr/maxime.killinger/postgres-ts-
|
|||||||
l'image de base.
|
l'image de base.
|
||||||
- **Versions épinglées dans le Dockerfile**
|
- **Versions épinglées dans le Dockerfile**
|
||||||
([0003](docs/decisions/0003-versions-de-timescaledb-et-vectorchord-epinglees.md)) :
|
([0003](docs/decisions/0003-versions-de-timescaledb-et-vectorchord-epinglees.md)) :
|
||||||
`TIMESCALEDB_VERSION` et `VCHORD_VERSION`. Les changer suit la procédure de
|
`TIMESCALEDB_VERSION`, `TIMESCALEDB_VERSION_PG15`
|
||||||
|
([0007](docs/decisions/0007-postgresql-15-garde-timescaledb-2-28.md)) et `VCHORD_VERSION`.
|
||||||
|
Les changer suit la procédure de
|
||||||
[docs/exploitation/publication.md](docs/exploitation/publication.md), et met à jour le
|
[docs/exploitation/publication.md](docs/exploitation/publication.md), et met à jour le
|
||||||
tableau et les badges du `README.md`.
|
tableau et les badges du `README.md`.
|
||||||
- **Le reste vient d'apt, à jour**
|
- **Le reste vient d'apt, à jour**
|
||||||
@@ -74,7 +76,7 @@ docker run --rm --entrypoint sh gitea.killinger.fr/maxime.killinger/postgres-ts-
|
|||||||
|
|
||||||
- **Changer la version de TimescaleDB rend une base existante inutilisable jusqu'à sa mise
|
- **Changer la version de TimescaleDB rend une base existante inutilisable jusqu'à sa mise
|
||||||
à niveau.** L'image ne contient que la bibliothèque de sa version : toute requête échoue
|
à niveau.** L'image ne contient que la bibliothèque de sa version : toute requête échoue
|
||||||
avec `could not access file "$libdir/timescaledb-2.28.3"` tant que
|
avec `could not access file "$libdir/timescaledb-X.Y.Z"` tant que
|
||||||
`ALTER EXTENSION timescaledb UPDATE` n'a pas été exécuté, en première instruction d'une
|
`ALTER EXTENSION timescaledb UPDATE` n'a pas été exécuté, en première instruction d'une
|
||||||
session `psql -X`. `pg_isready` répond pourtant, et le conteneur paraît sain.
|
session `psql -X`. `pg_isready` répond pourtant, et le conteneur paraît sain.
|
||||||
- **Des en-têtes plus récents que le serveur cassent TimescaleDB au chargement**
|
- **Des en-têtes plus récents que le serveur cassent TimescaleDB au chargement**
|
||||||
|
|||||||
+6
-3
@@ -37,10 +37,13 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|||||||
postgresql-server-dev-$PG_MAJOR="$(dpkg-query -W -f='${Version}' postgresql-$PG_MAJOR)" \
|
postgresql-server-dev-$PG_MAJOR="$(dpkg-query -W -f='${Version}' postgresql-$PG_MAJOR)" \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# TimescaleDB compilé depuis l'étiquette de la version stable
|
# TimescaleDB compilé depuis l'étiquette de la version stable.
|
||||||
ARG TIMESCALEDB_VERSION=2.28.3
|
# TimescaleDB 2.29 a abandonné PostgreSQL 15, qui garde la dernière version qui le gère.
|
||||||
|
ARG TIMESCALEDB_VERSION=2.30.2
|
||||||
|
ARG TIMESCALEDB_VERSION_PG15=2.28.3
|
||||||
WORKDIR /build/timescaledb
|
WORKDIR /build/timescaledb
|
||||||
RUN git clone --branch ${TIMESCALEDB_VERSION} --depth 1 https://github.com/timescale/timescaledb.git . \
|
RUN if [ "$PG_MAJOR" = 15 ]; then version="$TIMESCALEDB_VERSION_PG15"; else version="$TIMESCALEDB_VERSION"; fi \
|
||||||
|
&& git clone --branch "$version" --depth 1 https://github.com/timescale/timescaledb.git . \
|
||||||
&& ./bootstrap -DREGRESS_CHECKS=OFF -DWARNINGS_AS_ERRORS=OFF \
|
&& ./bootstrap -DREGRESS_CHECKS=OFF -DWARNINGS_AS_ERRORS=OFF \
|
||||||
&& cd build && make -j$(nproc) && make install DESTDIR=/tmp/timescaledb
|
&& cd build && make -j$(nproc) && make install DESTDIR=/tmp/timescaledb
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://gitea.killinger.fr/maxime.killinger/postgres-ts-vectors/actions?workflow=docker.yml"><img src="https://gitea.killinger.fr/maxime.killinger/postgres-ts-vectors/actions/workflows/docker.yml/badge.svg?branch=main" alt="CI"></a>
|
<a href="https://gitea.killinger.fr/maxime.killinger/postgres-ts-vectors/actions?workflow=docker.yml"><img src="https://gitea.killinger.fr/maxime.killinger/postgres-ts-vectors/actions/workflows/docker.yml/badge.svg?branch=main" alt="CI"></a>
|
||||||
<img src="https://img.shields.io/badge/PostgreSQL-15%20%C2%B7%2016%20%C2%B7%2017%20%C2%B7%2018-4169E1?style=flat-square&logo=postgresql&logoColor=white" alt="PostgreSQL 15, 16, 17 et 18">
|
<img src="https://img.shields.io/badge/PostgreSQL-15%20%C2%B7%2016%20%C2%B7%2017%20%C2%B7%2018-4169E1?style=flat-square&logo=postgresql&logoColor=white" alt="PostgreSQL 15, 16, 17 et 18">
|
||||||
<img src="https://img.shields.io/badge/TimescaleDB-2.28.3-FDB515?style=flat-square&logo=timescale&logoColor=black" alt="TimescaleDB 2.28.3">
|
<img src="https://img.shields.io/badge/TimescaleDB-2.30.2-FDB515?style=flat-square&logo=timescale&logoColor=black" alt="TimescaleDB 2.30.2">
|
||||||
<img src="https://img.shields.io/badge/VectorChord-1.1.1-6E56CF?style=flat-square" alt="VectorChord 1.1.1">
|
<img src="https://img.shields.io/badge/VectorChord-1.1.1-6E56CF?style=flat-square" alt="VectorChord 1.1.1">
|
||||||
<img src="https://img.shields.io/badge/pgvector-0.8-336791?style=flat-square" alt="pgvector 0.8">
|
<img src="https://img.shields.io/badge/pgvector-0.8-336791?style=flat-square" alt="pgvector 0.8">
|
||||||
<img src="https://img.shields.io/badge/PostGIS-3-5CAE58?style=flat-square" alt="PostGIS 3">
|
<img src="https://img.shields.io/badge/PostGIS-3-5CAE58?style=flat-square" alt="PostGIS 3">
|
||||||
@@ -31,11 +31,13 @@ Publiées sous `gitea.killinger.fr/maxime.killinger/postgres-ts-vectors`.
|
|||||||
| Étiquette | PostgreSQL | TimescaleDB | VectorChord | pgvector | PostGIS |
|
| Étiquette | PostgreSQL | TimescaleDB | VectorChord | pgvector | PostGIS |
|
||||||
|---|---|---|---|---|---|
|
|---|---|---|---|---|---|
|
||||||
| `pg15` | 15 | 2.28.3 | 1.1.1 | 0.8 | 3 |
|
| `pg15` | 15 | 2.28.3 | 1.1.1 | 0.8 | 3 |
|
||||||
| `pg16` | 16 | 2.28.3 | 1.1.1 | 0.8 | 3 |
|
| `pg16` | 16 | 2.30.2 | 1.1.1 | 0.8 | 3 |
|
||||||
| `pg17`, `latest` | 17 | 2.28.3 | 1.1.1 | 0.8 | 3 |
|
| `pg17`, `latest` | 17 | 2.30.2 | 1.1.1 | 0.8 | 3 |
|
||||||
| `pg18` | 18 | 2.28.3 | 1.1.1 | 0.8 | 3 |
|
| `pg18` | 18 | 2.30.2 | 1.1.1 | 0.8 | 3 |
|
||||||
|
|
||||||
TimescaleDB et VectorChord sont épinglés. PostgreSQL, pgvector et PostGIS suivent leurs
|
TimescaleDB et VectorChord sont épinglés ; `pg15` garde la dernière version de TimescaleDB
|
||||||
|
qui gère PostgreSQL 15
|
||||||
|
([0007](docs/decisions/0007-postgresql-15-garde-timescaledb-2-28.md)). PostgreSQL, pgvector et PostGIS suivent leurs
|
||||||
versions mineures : les images sont reconstruites dès qu'apt en propose
|
versions mineures : les images sont reconstruites dès qu'apt en propose
|
||||||
([Mises à jour](#mises-à-jour)). Les versions exactes se lisent dans un conteneur :
|
([Mises à jour](#mises-à-jour)). Les versions exactes se lisent dans un conteneur :
|
||||||
|
|
||||||
|
|||||||
+3
-5
@@ -4,11 +4,9 @@ Ce fichier ne contient que l'ouvert. Un point terminé est supprimé.
|
|||||||
|
|
||||||
## Versions
|
## Versions
|
||||||
|
|
||||||
- **TimescaleDB 2.30.2 est disponible**, l'image épingle 2.28.3. Vérifié sur PostgreSQL 17 :
|
- **`pg15` ne recevra plus de version de TimescaleDB**
|
||||||
la 2.30.2 compile, passe les tests et reprend une base créée en 2.28.3 après
|
([0007](decisions/0007-postgresql-15-garde-timescaledb-2-28.md)). À retirer de la matrice
|
||||||
`ALTER EXTENSION timescaledb UPDATE`. Reste à le vérifier pour 15, 16 et 18, puis à suivre
|
quand plus aucune base ne l'utilise.
|
||||||
la procédure de [exploitation/publication.md](exploitation/publication.md), base de Health
|
|
||||||
comprise.
|
|
||||||
|
|
||||||
## CI
|
## CI
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
# 0007 — PostgreSQL 15 garde TimescaleDB 2.28
|
||||||
|
|
||||||
|
Complète [0003](0003-versions-de-timescaledb-et-vectorchord-epinglees.md).
|
||||||
|
|
||||||
|
## Contexte
|
||||||
|
|
||||||
|
TimescaleDB 2.29 a retiré la prise en charge de PostgreSQL 15 : à partir de cette version, la
|
||||||
|
compilation contre PostgreSQL 15 échoue (`Unsupported PostgreSQL version`). Les images
|
||||||
|
`pg16`, `pg17` et `pg18` passent à TimescaleDB 2.30.
|
||||||
|
|
||||||
|
## Décision
|
||||||
|
|
||||||
|
- Le Dockerfile porte deux versions : `TIMESCALEDB_VERSION` pour PostgreSQL 16 et suivants,
|
||||||
|
`TIMESCALEDB_VERSION_PG15` pour PostgreSQL 15, fixée à la dernière version qui le gère.
|
||||||
|
- `pg15` reste publiée et continue de recevoir les mises à jour d'apt.
|
||||||
|
|
||||||
|
## Conséquences
|
||||||
|
|
||||||
|
- `pg15` ne reçoit plus ni fonctionnalité ni correctif de TimescaleDB.
|
||||||
|
- Les quatre images n'ont plus la même version de TimescaleDB : une base ne passe pas de
|
||||||
|
`pg15` à une autre étiquette sans mise à niveau de l'extension.
|
||||||
|
- Le jour où une autre version de PostgreSQL est abandonnée par TimescaleDB, le même
|
||||||
|
mécanisme est à généraliser, ou la version à retirer.
|
||||||
|
|
||||||
|
## Attestée par
|
||||||
|
|
||||||
|
`Dockerfile` (étape `builder`).
|
||||||
@@ -61,21 +61,29 @@ SELECT postgis_extensions_upgrade();
|
|||||||
|
|
||||||
1. Construire et tester en local contre l'image publiée, pour chaque version de PostgreSQL :
|
1. Construire et tester en local contre l'image publiée, pour chaque version de PostgreSQL :
|
||||||
```bash
|
```bash
|
||||||
docker build --build-arg PG_VERSION=17 --build-arg TIMESCALEDB_VERSION=2.30.2 -t postgres-ts-vectors:essai .
|
docker build --build-arg PG_VERSION=17 --build-arg TIMESCALEDB_VERSION=X.Y.Z -t postgres-ts-vectors:essai .
|
||||||
docker pull gitea.killinger.fr/maxime.killinger/postgres-ts-vectors:pg17
|
docker pull gitea.killinger.fr/maxime.killinger/postgres-ts-vectors:pg17
|
||||||
./tests.sh postgres-ts-vectors:essai gitea.killinger.fr/maxime.killinger/postgres-ts-vectors:pg17
|
./tests.sh postgres-ts-vectors:essai gitea.killinger.fr/maxime.killinger/postgres-ts-vectors:pg17
|
||||||
```
|
```
|
||||||
Une version de TimescaleDB qui abandonne une version de PostgreSQL échoue à la
|
Une version de TimescaleDB qui abandonne une version de PostgreSQL échoue à la
|
||||||
compilation : cette version de PostgreSQL sort alors de la matrice, ou garde l'ancienne
|
compilation (`Unsupported PostgreSQL version`). Cette version de PostgreSQL sort alors de
|
||||||
version de TimescaleDB.
|
la matrice, ou garde sa propre version de TimescaleDB, comme PostgreSQL 15
|
||||||
|
([0007](../decisions/0007-postgresql-15-garde-timescaledb-2-28.md)).
|
||||||
2. Changer `TIMESCALEDB_VERSION` dans le `Dockerfile`, le tableau et le badge du `README.md`.
|
2. Changer `TIMESCALEDB_VERSION` dans le `Dockerfile`, le tableau et le badge du `README.md`.
|
||||||
3. Prévenir les exploitants **avant** de pousser. Dès qu'un conteneur est recréé sur la
|
3. Prévenir les exploitants **avant** de pousser. Dès qu'un conteneur est recréé sur la
|
||||||
nouvelle image, sa base refuse toute requête jusqu'à l'exécution de :
|
nouvelle image, sa base refuse toute requête jusqu'à l'exécution de :
|
||||||
```bash
|
```bash
|
||||||
docker exec -it <conteneur> psql -X -U <utilisateur> -d <base> -c 'ALTER EXTENSION timescaledb UPDATE'
|
docker exec -it <conteneur> psql -X -U <utilisateur> -d <base> -c 'ALTER EXTENSION timescaledb UPDATE'
|
||||||
```
|
```
|
||||||
La commande est à passer dans chaque base qui a l'extension. `-X` et une session neuve
|
La commande est à passer dans chaque base du serveur qui a l'extension, `postgres`
|
||||||
sont nécessaires : l'instruction doit être la première de la session.
|
comprise si elle l'a. `-X` et une session neuve sont nécessaires : l'instruction doit être
|
||||||
|
la première de la session. Les bases se relèvent **avant** de recréer le conteneur, tant
|
||||||
|
que toutes répondent :
|
||||||
|
```sql
|
||||||
|
SELECT datname FROM pg_database WHERE datallowconn AND NOT datistemplate; -- les bases
|
||||||
|
SELECT extversion FROM pg_extension WHERE extname = 'timescaledb'; -- dans chacune
|
||||||
|
```
|
||||||
|
Les applications qui gardaient des connexions ouvertes sont à redémarrer.
|
||||||
|
|
||||||
## Changer la version de VectorChord
|
## Changer la version de VectorChord
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user