Remove support for Ubuntu 20.04 and Debian 11.

Signed-off-by: Anders Kaseorg <andersk@mit.edu>
This commit is contained in:
Anders Kaseorg
2024-03-25 14:31:39 -07:00
parent ce075fec6c
commit 70914b0475
30 changed files with 49 additions and 204 deletions

View File

@@ -135,11 +135,6 @@ jobs:
include: include:
# Docker images are built from 'tools/ci/Dockerfile'; the comments at # Docker images are built from 'tools/ci/Dockerfile'; the comments at
# the top explain how to build and upload these images. # the top explain how to build and upload these images.
- docker_image: zulip/ci:focal
name: Ubuntu 20.04 production install
os: focal
extra-args: ""
- docker_image: zulip/ci:jammy - docker_image: zulip/ci:jammy
name: Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga name: Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga
os: jammy os: jammy
@@ -150,11 +145,6 @@ jobs:
os: noble os: noble
extra-args: "" extra-args: ""
- docker_image: zulip/ci:bullseye
name: Debian 11 production install
os: bullseye
extra-args: ""
- docker_image: zulip/ci:bookworm - docker_image: zulip/ci:bookworm
name: Debian 12 production install with custom db name and user name: Debian 12 production install with custom db name and user
os: bookworm os: bookworm
@@ -247,15 +237,6 @@ jobs:
include: include:
# Docker images are built from 'tools/ci/Dockerfile.prod'; the comments at # Docker images are built from 'tools/ci/Dockerfile.prod'; the comments at
# the top explain how to build and upload these images. # the top explain how to build and upload these images.
- docker_image: zulip/ci:focal-3.2
name: 3.2 Version Upgrade
os: focal
- docker_image: zulip/ci:bullseye-4.2
name: 4.2 Version Upgrade
os: bullseye
- docker_image: zulip/ci:bullseye-5.0
name: 5.0 Version Upgrade
os: bullseye
- docker_image: zulip/ci:jammy-6.0 - docker_image: zulip/ci:jammy-6.0
name: 6.0 Version Upgrade name: 6.0 Version Upgrade
os: jammy os: jammy

View File

@@ -30,18 +30,6 @@ jobs:
include: include:
# Base images are built using `tools/ci/Dockerfile.prod.template`. # Base images are built using `tools/ci/Dockerfile.prod.template`.
# The comments at the top explain how to build and upload these images. # The comments at the top explain how to build and upload these images.
# Ubuntu 20.04 ships with Python 3.8.10.
- docker_image: zulip/ci:focal
name: Ubuntu 20.04 (Python 3.8, backend)
os: focal
include_documentation_tests: false
include_frontend_tests: false
# Debian 11 ships with Python 3.9.2.
- docker_image: zulip/ci:bullseye
name: Debian 11 (Python 3.9, backend)
os: bullseye
include_documentation_tests: false
include_frontend_tests: false
# Ubuntu 22.04 ships with Python 3.10.12. # Ubuntu 22.04 ships with Python 3.10.12.
- docker_image: zulip/ci:jammy - docker_image: zulip/ci:jammy
name: Ubuntu 22.04 (Python 3.10, backend + frontend) name: Ubuntu 22.04 (Python 3.10, backend + frontend)
@@ -227,7 +215,7 @@ jobs:
fi fi
- name: Test locked requirements - name: Test locked requirements
if: ${{ matrix.os == 'focal' }} if: ${{ matrix.os == 'jammy' }}
run: | run: |
. /srv/zulip-py3-venv/bin/activate && \ . /srv/zulip-py3-venv/bin/activate && \
./tools/test-locked-requirements ./tools/test-locked-requirements

View File

@@ -19,8 +19,8 @@ One can install the Zulip development environment directly on a Linux
host by following these instructions. Currently supported platforms host by following these instructions. Currently supported platforms
are: are:
- Ubuntu 20.04, 22.04, 24.04 - Ubuntu 22.04, 24.04
- Debian 11, 12 - Debian 12
- CentOS 7 (beta) - CentOS 7 (beta)
- Fedora 38 (beta) - Fedora 38 (beta)
- RHEL 7 (beta) - RHEL 7 (beta)

View File

@@ -71,8 +71,8 @@ the internet.)
:::{tab-item} Ubuntu/Debian :::{tab-item} Ubuntu/Debian
:sync: os-ubuntu :sync: os-ubuntu
- Ubuntu 20.04, 22.04, or 24.04 - Ubuntu 22.04, or 24.04
- Debian 11 or 12 - Debian 12
::: :::
:::{tab-item} Fedora :::{tab-item} Fedora

View File

@@ -62,16 +62,16 @@ branch, or a significant time has passed since you last used it.
### Test an install ### Test an install
The `test-install` tooling takes a distribution release name The `test-install` tooling takes a distribution release name
(e.g. "focal"), the path to an unpacked release directory (e.g. "jammy"), the path to an unpacked release directory
or tarball, and then any of the normal options you want to pass down or tarball, and then any of the normal options you want to pass down
into the installer. into the installer.
For example, to test an install onto Ubuntu 20.04 "Focal", we might For example, to test an install onto Ubuntu 22.04 "Jammy", we might
call: call:
```bash ```bash
sudo ./tools/test-install/install \ sudo ./tools/test-install/install \
-r focal \ -r jammy \
./zulip-test-installer/ \ ./zulip-test-installer/ \
--hostname=zulip.example.net \ --hostname=zulip.example.net \
--email=username@example.net --email=username@example.net
@@ -97,7 +97,7 @@ After using `lxc-ls` to list containers, you can choose one of them
and connect to its terminal: and connect to its terminal:
```bash ```bash
sudo lxc-attach --clear-env -n zulip-install-focal-PUvff sudo lxc-attach --clear-env -n zulip-install-jammy-PUvff
``` ```
### Stopping and destroying containers ### Stopping and destroying containers
@@ -112,7 +112,7 @@ sudo ./tools/test-install/destroy-all -f
To destroy just one container: To destroy just one container:
```bash ```bash
sudo lxc-destroy -f -n zulip-install-focal-PUvff sudo lxc-destroy -f -n zulip-install-jammy-PUvff
``` ```
### Iterating on the installer ### Iterating on the installer
@@ -126,7 +126,7 @@ which will start up a new container. Here, we update just the
rsync -az scripts puppet zulip-test-installer/zulip-server/ rsync -az scripts puppet zulip-test-installer/zulip-server/
sudo ./tools/test-install/install \ sudo ./tools/test-install/install \
-r focal \ -r jammy \
./zulip-test-installer/ \ ./zulip-test-installer/ \
--hostname=zulip.example.net \ --hostname=zulip.example.net \
--email=username@example.net --email=username@example.net

View File

@@ -5,8 +5,8 @@ versions. PostgreSQL 16 is the current default for new installations;
PostgreSQL 12, 13, 14, 15, and 16 are all supported. PostgreSQL 12, 13, 14, 15, and 16 are all supported.
Previous versions of Zulip used whatever version of PostgreSQL was Previous versions of Zulip used whatever version of PostgreSQL was
included with the base operating system (E.g. PostgreSQL 12 on Ubuntu included with the base operating system (E.g. PostgreSQL 14 on Ubuntu
20.04). We recommend that installations currently using older 22.04). We recommend that installations currently using older
PostgreSQL releases [upgrade to PostgreSQL 15][upgrade-postgresql], as PostgreSQL releases [upgrade to PostgreSQL 15][upgrade-postgresql], as
we may drop support for older PostgreSQL in a future release. we may drop support for older PostgreSQL in a future release.

View File

@@ -4,10 +4,8 @@ To run a Zulip server, you will need:
- A dedicated machine or VM - A dedicated machine or VM
- A supported OS: - A supported OS:
- Ubuntu 20.04
- Ubuntu 22.04 - Ubuntu 22.04
- Ubuntu 24.04 - Ubuntu 24.04
- Debian 11
- Debian 12 - Debian 12
- A supported CPU architecture: - A supported CPU architecture:
- x86-64 - x86-64
@@ -38,7 +36,7 @@ on issues you'll encounter](install-existing-server.md).
#### Operating system #### Operating system
Ubuntu 20.04, Ubuntu 22.04, Ubuntu 24.04, Debian 11, and Debian 12 Ubuntu 22.04, Ubuntu 24.04, and Debian 12
are supported for running Zulip in production. You can also are supported for running Zulip in production. You can also
run Zulip on other platforms that support Docker using run Zulip on other platforms that support Docker using
[docker-zulip][docker-zulip-homepage]. [docker-zulip][docker-zulip-homepage].

View File

@@ -413,10 +413,9 @@ instructions for other supported platforms.
/home/zulip/deployments/current/scripts/setup/reindex-textual-data --force /home/zulip/deployments/current/scripts/setup/reindex-textual-data --force
``` ```
7. We recommend that you now [upgrade from Ubuntu 20.04 to 7. [Upgrade from Ubuntu 20.04 to
22.04](#upgrading-from-ubuntu-2004-focal-to-2204-jammy). Although 22.04](#upgrading-from-ubuntu-2004-focal-to-2204-jammy), so that
Ubuntu 20.04 is still supported at this time, Ubuntu 22.04 will be you are running a supported operating system.
supported farther into the future.
### Upgrading from Ubuntu 16.04 Xenial to 18.04 Bionic ### Upgrading from Ubuntu 16.04 Xenial to 18.04 Bionic
@@ -466,8 +465,8 @@ instructions for other supported platforms.
``` ```
8. [Upgrade from Ubuntu 18.04 to 8. [Upgrade from Ubuntu 18.04 to
20.04](#upgrading-from-ubuntu-1804-bionic-to-2004-focal), so that 20.04](#upgrading-from-ubuntu-1804-bionic-to-2004-focal), the next
you are running a supported operating system. in chain of upgrades leading to a supported operating system.
### Upgrading from Ubuntu 14.04 Trusty to 16.04 Xenial ### Upgrading from Ubuntu 14.04 Trusty to 16.04 Xenial
@@ -509,8 +508,8 @@ instructions for other supported platforms.
correctly. correctly.
6. [Upgrade from Ubuntu 16.04 to 6. [Upgrade from Ubuntu 16.04 to
18.04](#upgrading-from-ubuntu-1604-xenial-to-1804-bionic), so 18.04](#upgrading-from-ubuntu-1604-xenial-to-1804-bionic), the next
that you are running a supported operating system. in chain of upgrades leading to a supported operating system.
### Upgrading from Debian 11 to 12 ### Upgrading from Debian 11 to 12
@@ -615,6 +614,9 @@ instructions for other supported platforms.
7. As an additional step, you can also [upgrade the PostgreSQL version](#upgrading-postgresql). 7. As an additional step, you can also [upgrade the PostgreSQL version](#upgrading-postgresql).
8. [Upgrade from Debian 11 to 12](#upgrading-from-debian-11-to-12),
so that you are running a supported operating system.
### Upgrading from Debian 9 to 10 ### Upgrading from Debian 9 to 10
1. Upgrade your server to the latest Zulip `2.1.x` release. You can 1. Upgrade your server to the latest Zulip `2.1.x` release. You can
@@ -686,8 +688,9 @@ instructions for other supported platforms.
/home/zulip/deployments/current/manage.py audit_fts_indexes /home/zulip/deployments/current/manage.py audit_fts_indexes
``` ```
9. [Upgrading from Debian 10 to 11](#upgrading-from-debian-10-to-11), 9. [Upgrade from Debian 10 to 11](#upgrading-from-debian-10-to-11),
so that you are running a supported operating system. the next in chain of upgrades leading to a supported operating
system.
## Upgrading PostgreSQL ## Upgrading PostgreSQL
@@ -695,7 +698,7 @@ Starting with Zulip 3.0, we use the latest available version of
PostgreSQL at installation time (currently version 15). Upgrades to PostgreSQL at installation time (currently version 15). Upgrades to
the version of PostgreSQL are no longer linked to upgrades of the the version of PostgreSQL are no longer linked to upgrades of the
distribution; that is, you may opt to upgrade to PostgreSQL 15 while distribution; that is, you may opt to upgrade to PostgreSQL 15 while
running Ubuntu 20.04. running Ubuntu 22.04.
Not all versions of Zulip Server support all versions of PostgreSQL, however: Not all versions of Zulip Server support all versions of PostgreSQL, however:

View File

@@ -120,8 +120,8 @@ extension, used by our [full-text search](full-text-search.md).
## Python packages ## Python packages
Zulip uses the version of Python itself provided by the host OS for Zulip uses the version of Python itself provided by the host OS for
the Zulip server. We currently support Python 3.8 and newer, with the Zulip server. We currently support Python 3.10 and newer, with
Ubuntu 20.04 being the platform requiring 3.8 support. The comments Ubuntu 22.04 being the platform requiring 3.10 support. The comments
in `.github/workflows/zulip-ci.yml` document the Python versions used in `.github/workflows/zulip-ci.yml` document the Python versions used
by each supported platform. by each supported platform.

View File

@@ -36,7 +36,7 @@ preparing a new release.
them. Use the `--branch 6.x` parameter for maintenance releases. them. Use the `--branch 6.x` parameter for maintenance releases.
- Use `build-release-tarball` to generate a pre-release tarball. - Use `build-release-tarball` to generate a pre-release tarball.
- Test the new tarball extensively, both new install and upgrade from last - Test the new tarball extensively, both new install and upgrade from last
release, on Ubuntu 20.04 or 22.04. release, on Ubuntu 22.04.
- Repeat until release is ready. - Repeat until release is ready.
- Send around the Paper blog post draft for review. - Send around the Paper blog post draft for review.
- Move the blog post draft to Astro: - Move the blog post draft to Astro:
@@ -109,7 +109,7 @@ preparing a new release.
resources and archive the previous release branch's resources with resources and archive the previous release branch's resources with
the "Translations can't translate this resource" setting. the "Translations can't translate this resource" setting.
- Add a new CI production upgrade target: - Add a new CI production upgrade target:
- Build a docker image: `cd tools/ci && docker build . -f Dockerfile.prod --build-arg=BASE_IMAGE=zulip/ci:bullseye --build-arg=VERSION=5.0 --tag=zulip/ci:bullseye-5.0 && docker push zulip/ci:bullseye-5.0` - Build a docker image: `cd tools/ci && docker build . -f Dockerfile.prod --build-arg=BASE_IMAGE=zulip/ci:bookworm --build-arg=VERSION=7.0 --tag=zulip/ci:bookworm-7.0 && docker push zulip/ci:bookworm-7.0`
- Add a new line to the `production_upgrade` matrix in - Add a new line to the `production_upgrade` matrix in
`.github/workflows/production-suite.yml`. `.github/workflows/production-suite.yml`.
- _Minor releases only (e.g. 3.2):_ - _Minor releases only (e.g. 3.2):_

View File

@@ -20,7 +20,6 @@ Jinja2
# Needed for Markdown processing # Needed for Markdown processing
Markdown Markdown
importlib-metadata ; python_version < "3.10" # for Markdown
Pygments Pygments
jsx-lexer jsx-lexer
uri-template uri-template
@@ -85,9 +84,6 @@ django-bmemcached
# Needed for zerver/tests/test_timestamp.py # Needed for zerver/tests/test_timestamp.py
python-dateutil python-dateutil
# Needed for time zone work
https://github.com/zulip/zoneinfo/archive/f9687abaea8453be1c8d0e21544bd557d65af933.zip#egg=backports.zoneinfo==0.2.1+git ; python_version < "3.9" # https://github.com/pganssle/zoneinfo/pull/126
# Needed for Redis # Needed for Redis
redis redis
@@ -165,7 +161,6 @@ requests-oauthlib
# For OpenAPI schema validation. # For OpenAPI schema validation.
openapi-core openapi-core
importlib-resources ; python_version < "3.9"
# For reporting errors to sentry.io # For reporting errors to sentry.io
sentry-sdk sentry-sdk

View File

@@ -185,11 +185,6 @@ backoff==2.2.1 \
--hash=sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba \ --hash=sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba \
--hash=sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8 --hash=sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8
# via -r requirements/common.in # via -r requirements/common.in
https://github.com/zulip/zoneinfo/archive/f9687abaea8453be1c8d0e21544bd557d65af933.zip#egg=backports.zoneinfo==0.2.1+git ; python_version < "3.9" \
--hash=sha256:23938590401ee45d88f37a5caa538b410ffa827169965a0bcf387da13b695450
# via
# -r requirements/common.in
# django
beautifulsoup4==4.12.3 \ beautifulsoup4==4.12.3 \
--hash=sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051 \ --hash=sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051 \
--hash=sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed --hash=sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed
@@ -1148,23 +1143,6 @@ imagesize==1.4.1 \
--hash=sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b \ --hash=sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b \
--hash=sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a --hash=sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a
# via sphinx # via sphinx
importlib-metadata==7.1.0 ; python_version < "3.10" \
--hash=sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570 \
--hash=sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2
# via
# -r requirements/common.in
# -r requirements/mypy.in
# markdown
# sphinx
# zulip-bots
importlib-resources==6.3.2 ; python_version < "3.9" \
--hash=sha256:963eb79649252b0160c1afcfe5a1d3fe3ad66edd0a8b114beacffb70c0674223 \
--hash=sha256:f41f4098b16cd140a97d256137cfd943d958219007990b2afb00439fc623f580
# via
# -r requirements/common.in
# jsonschema
# jsonschema-specifications
# openapi-spec-validator
incremental==22.10.0 \ incremental==22.10.0 \
--hash=sha256:912feeb5e0f7e0188e6f42241d2f450002e11bbc0937c65865045854c24c0bd0 \ --hash=sha256:912feeb5e0f7e0188e6f42241d2f450002e11bbc0937c65865045854c24c0bd0 \
--hash=sha256:b864a1f30885ee72c5ac2835a761b8fe8aa9c28b9395cacf27286602688d3e51 --hash=sha256:b864a1f30885ee72c5ac2835a761b8fe8aa9c28b9395cacf27286602688d3e51
@@ -1933,10 +1911,6 @@ pip-tools==6.2.0 \
--hash=sha256:77727ef7457d1865e61fe34c2b1439f9b971b570cc232616a22ce82ab89d357d \ --hash=sha256:77727ef7457d1865e61fe34c2b1439f9b971b570cc232616a22ce82ab89d357d \
--hash=sha256:9ed38c73da4993e531694ea151f77048b4dbf2ba7b94c4a569daa39568cc6564 --hash=sha256:9ed38c73da4993e531694ea151f77048b4dbf2ba7b94c4a569daa39568cc6564
# via -r requirements/dev.in # via -r requirements/dev.in
pkgutil-resolve-name==1.3.10 \
--hash=sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174 \
--hash=sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e
# via jsonschema
platformdirs==4.2.0 \ platformdirs==4.2.0 \
--hash=sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068 \ --hash=sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068 \
--hash=sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768 --hash=sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768
@@ -2319,10 +2293,6 @@ python3-saml==1.16.0 \
# via # via
# -r requirements/common.in # -r requirements/common.in
# social-auth-core # social-auth-core
pytz==2024.1 \
--hash=sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812 \
--hash=sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319
# via babel
pyuca==1.2 \ pyuca==1.2 \
--hash=sha256:8a382fe74627f08c0d18908c0713ca4a20aad5385f077579e56208beea2893b2 \ --hash=sha256:8a382fe74627f08c0d18908c0713ca4a20aad5385f077579e56208beea2893b2 \
--hash=sha256:abaa12e1bd2c7c68ca8396ff8383bc0654a739cef3ae68fd7af58bf29af0a91e --hash=sha256:abaa12e1bd2c7c68ca8396ff8383bc0654a739cef3ae68fd7af58bf29af0a91e
@@ -3160,14 +3130,11 @@ typing-extensions==4.10.0 \
--hash=sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb --hash=sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb
# via # via
# -r requirements/common.in # -r requirements/common.in
# annotated-types
# asgiref # asgiref
# black # black
# boto3-stubs # boto3-stubs
# botocore-stubs
# django-stubs # django-stubs
# django-stubs-ext # django-stubs-ext
# ipython
# libcst # libcst
# mypy # mypy
# mypy-boto3-s3 # mypy-boto3-s3
@@ -3180,7 +3147,6 @@ typing-extensions==4.10.0 \
# pyre-extensions # pyre-extensions
# qrcode # qrcode
# returns # returns
# rich
# semgrep # semgrep
# sqlalchemy2-stubs # sqlalchemy2-stubs
# stripe # stripe
@@ -3366,12 +3332,6 @@ yarl==1.9.4 \
--hash=sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749 \ --hash=sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749 \
--hash=sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec --hash=sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec
# via aiohttp # via aiohttp
zipp==3.18.1 \
--hash=sha256:206f5a15f2af3dbaee80769fb7dc6f249695e940acca08dfb2a4769fe61e538b \
--hash=sha256:2884ed22e7d8961de1c9a05142eb69a247f120291bc0206a00a7642f09b5b715
# via
# importlib-metadata
# importlib-resources
zope-interface==6.2 \ zope-interface==6.2 \
--hash=sha256:02adbab560683c4eca3789cc0ac487dcc5f5a81cc48695ec247f00803cafe2fe \ --hash=sha256:02adbab560683c4eca3789cc0ac487dcc5f5a81cc48695ec247f00803cafe2fe \
--hash=sha256:14e02a6fc1772b458ebb6be1c276528b362041217b9ca37e52ecea2cbdce9fac \ --hash=sha256:14e02a6fc1772b458ebb6be1c276528b362041217b9ca37e52ecea2cbdce9fac \

View File

@@ -126,10 +126,6 @@ imagesize==1.4.1 \
--hash=sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b \ --hash=sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b \
--hash=sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a --hash=sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a
# via sphinx # via sphinx
importlib-metadata==7.1.0 \
--hash=sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570 \
--hash=sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2
# via sphinx
jinja2==3.1.3 \ jinja2==3.1.3 \
--hash=sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa \ --hash=sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa \
--hash=sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90 --hash=sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90
@@ -224,10 +220,6 @@ pygments==2.17.2 \
--hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \ --hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \
--hash=sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367 --hash=sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367
# via sphinx # via sphinx
pytz==2024.1 \
--hash=sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812 \
--hash=sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319
# via babel
pyyaml==6.0.1 \ pyyaml==6.0.1 \
--hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \ --hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \
--hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \ --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \
@@ -338,7 +330,3 @@ urllib3==1.26.18 \
--hash=sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07 \ --hash=sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07 \
--hash=sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0 --hash=sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0
# via requests # via requests
zipp==3.18.1 \
--hash=sha256:206f5a15f2af3dbaee80769fb7dc6f249695e940acca08dfb2a4769fe61e538b \
--hash=sha256:2884ed22e7d8961de1c9a05142eb69a247f120291bc0206a00a7642f09b5b715
# via importlib-metadata

View File

@@ -26,6 +26,4 @@ types-regex
types-requests<2.31.0.7 # https://github.com/python/typeshed/issues/10825 types-requests<2.31.0.7 # https://github.com/python/typeshed/issues/10825
types-zxcvbn types-zxcvbn
importlib-metadata ; python_version < "3.10" # for SQLAlchemy
django-stubs django-stubs

View File

@@ -163,11 +163,6 @@ backoff==2.2.1 \
--hash=sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba \ --hash=sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba \
--hash=sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8 --hash=sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8
# via -r requirements/common.in # via -r requirements/common.in
https://github.com/zulip/zoneinfo/archive/f9687abaea8453be1c8d0e21544bd557d65af933.zip#egg=backports.zoneinfo==0.2.1+git ; python_version < "3.9" \
--hash=sha256:23938590401ee45d88f37a5caa538b410ffa827169965a0bcf387da13b695450
# via
# -r requirements/common.in
# django
beautifulsoup4==4.12.3 \ beautifulsoup4==4.12.3 \
--hash=sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051 \ --hash=sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051 \
--hash=sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed --hash=sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed
@@ -928,21 +923,6 @@ idna==3.6 \
# via # via
# requests # requests
# yarl # yarl
importlib-metadata==7.1.0 ; python_version < "3.10" \
--hash=sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570 \
--hash=sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2
# via
# -r requirements/common.in
# markdown
# zulip-bots
importlib-resources==6.3.2 ; python_version < "3.9" \
--hash=sha256:963eb79649252b0160c1afcfe5a1d3fe3ad66edd0a8b114beacffb70c0674223 \
--hash=sha256:f41f4098b16cd140a97d256137cfd943d958219007990b2afb00439fc623f580
# via
# -r requirements/common.in
# jsonschema
# jsonschema-specifications
# openapi-spec-validator
ipython==8.12.3 \ ipython==8.12.3 \
--hash=sha256:3910c4b54543c2ad73d06579aa771041b7d5707b033bd488669b4cf544e3b363 \ --hash=sha256:3910c4b54543c2ad73d06579aa771041b7d5707b033bd488669b4cf544e3b363 \
--hash=sha256:b0340d46a933d27c657b211a329d0be23793c36595acf9e6ef4164bc01a1804c --hash=sha256:b0340d46a933d27c657b211a329d0be23793c36595acf9e6ef4164bc01a1804c
@@ -1479,10 +1459,6 @@ pillow==10.2.0 \
--hash=sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48 \ --hash=sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48 \
--hash=sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868 --hash=sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868
# via -r requirements/common.in # via -r requirements/common.in
pkgutil-resolve-name==1.3.10 \
--hash=sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174 \
--hash=sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e
# via jsonschema
polib==1.2.0 \ polib==1.2.0 \
--hash=sha256:1c77ee1b81feb31df9bca258cbc58db1bbb32d10214b173882452c73af06d62d \ --hash=sha256:1c77ee1b81feb31df9bca258cbc58db1bbb32d10214b173882452c73af06d62d \
--hash=sha256:f3ef94aefed6e183e342a8a269ae1fc4742ba193186ad76f175938621dbfc26b --hash=sha256:f3ef94aefed6e183e342a8a269ae1fc4742ba193186ad76f175938621dbfc26b
@@ -2237,10 +2213,8 @@ typing-extensions==4.10.0 \
--hash=sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb --hash=sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb
# via # via
# -r requirements/common.in # -r requirements/common.in
# annotated-types
# asgiref # asgiref
# django-stubs-ext # django-stubs-ext
# ipython
# mypy-boto3-s3 # mypy-boto3-s3
# mypy-boto3-ses # mypy-boto3-ses
# mypy-boto3-sns # mypy-boto3-sns
@@ -2397,12 +2371,6 @@ yarl==1.9.4 \
--hash=sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749 \ --hash=sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749 \
--hash=sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec --hash=sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec
# via aiohttp # via aiohttp
zipp==3.18.1 \
--hash=sha256:206f5a15f2af3dbaee80769fb7dc6f249695e940acca08dfb2a4769fe61e538b \
--hash=sha256:2884ed22e7d8961de1c9a05142eb69a247f120291bc0206a00a7642f09b5b715
# via
# importlib-metadata
# importlib-resources
https://github.com/zulip/python-zulip-api/archive/0.9.0.zip#egg=zulip==0.9.0+git&subdirectory=zulip \ https://github.com/zulip/python-zulip-api/archive/0.9.0.zip#egg=zulip==0.9.0+git&subdirectory=zulip \
--hash=sha256:71ea94192f1a0de1c45fd177e827b65fe4970c4fc8565991fd066b4de77eaccb --hash=sha256:71ea94192f1a0de1c45fd177e827b65fe4970c4fc8565991fd066b4de77eaccb
# via # via

View File

@@ -231,15 +231,13 @@ if [ -f /etc/os-release ]; then
fi fi
case "$os_id $os_version_id" in case "$os_id $os_version_id" in
'debian 11' | 'debian 12' | 'ubuntu 20.04' | 'ubuntu 22.04' | 'ubuntu 24.04') ;; 'debian 12' | 'ubuntu 22.04' | 'ubuntu 24.04') ;;
*) *)
system_requirements_failure <<EOF system_requirements_failure <<EOF
Unsupported OS release: $os_id $os_version_id Unsupported OS release: $os_id $os_version_id
Zulip in production is supported only on: Zulip in production is supported only on:
- Debian 11
- Debian 12 - Debian 12
- Ubuntu 20.04 LTS
- Ubuntu 22.04 LTS - Ubuntu 22.04 LTS
- Ubuntu 24.04 LTS - Ubuntu 24.04 LTS
EOF EOF

View File

@@ -8,7 +8,7 @@ from urllib.request import urlopen
import yaml import yaml
from .zulip_tools import parse_os_release, run from .zulip_tools import run
ZULIP_PATH = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) ZULIP_PATH = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
ZULIP_SRV_PATH = "/srv" ZULIP_SRV_PATH = "/srv"
@@ -89,11 +89,6 @@ def install_puppet_module(
tarball.write(tarball_content) tarball.write(tarball_content)
tarball.flush() tarball.flush()
# This is to suppress Puppet warnings with ruby 2.7.
distro_info = parse_os_release()
puppet_env = os.environ.copy()
if (distro_info["ID"], distro_info["VERSION_ID"]) in [("ubuntu", "20.04")]:
puppet_env["RUBYOPT"] = "-W0"
run( run(
[ [
"puppet", "puppet",
@@ -104,5 +99,4 @@ def install_puppet_module(
tarball.name, tarball.name,
"--ignore-dependencies", "--ignore-dependencies",
], ],
env=puppet_env,
) )

View File

@@ -112,7 +112,7 @@ try:
).splitlines() ).splitlines()
# We can't use `git worktree list --porcelain -z` here because # We can't use `git worktree list --porcelain -z` here because
# Ubuntu 20.04 Focal only has git 2.25.1, and -z was # Ubuntu 22.04 only has git 2.34.1, and -z was
# introduced in 2.36 # introduced in 2.36
worktree_data = subprocess.check_output( worktree_data = subprocess.check_output(
["git", "worktree", "list", "--porcelain"], ["git", "worktree", "list", "--porcelain"],

View File

@@ -1,2 +0,0 @@
deb http://www.ksplice.com/apt focal ksplice
deb-src http://www.ksplice.com/apt focal ksplice

View File

@@ -1 +0,0 @@
deb https://apt.releases.teleport.dev/ubuntu focal stable/v14

View File

@@ -1,2 +0,0 @@
deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main
deb-src http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main

View File

@@ -1,5 +0,0 @@
deb http://apt.postgresql.org/pub/repos/apt/ focal-pgdg main
deb-src http://apt.postgresql.org/pub/repos/apt/ focal-pgdg main
deb http://ppa.launchpad.net/groonga/ppa/ubuntu focal main
deb-src http://ppa.launchpad.net/groonga/ppa/ubuntu focal main

View File

@@ -63,10 +63,6 @@ puppet_env = os.environ.copy()
puppet_env["FACTER_zulip_conf_path"] = args.config puppet_env["FACTER_zulip_conf_path"] = args.config
puppet_env["FACTER_zulip_scripts_path"] = scripts_path puppet_env["FACTER_zulip_scripts_path"] = scripts_path
# This is to suppress Puppet warnings with ruby 2.7.
if (distro_info["ID"], distro_info["VERSION_ID"]) in [("ubuntu", "20.04")]:
puppet_env["RUBYOPT"] = "-W0"
def noop_would_change(puppet_cmd: List[str]) -> bool: def noop_would_change(puppet_cmd: List[str]) -> bool:
# --noop does not work with --detailed-exitcodes; see # --noop does not work with --detailed-exitcodes; see

View File

@@ -4,9 +4,9 @@
# because by then we've already cloned the repo); # because by then we've already cloned the repo);
# * Git and other basic utilities. # * Git and other basic utilities.
# To rebuild from this file for a given release, say Ubuntu 20.04 focal: # To rebuild from this file for a given release, say Ubuntu 22.04 jammy:
# docker build . --build-arg=BASE_IMAGE=ubuntu:20.04 --pull --tag=zulip/ci:focal # docker build . --build-arg=BASE_IMAGE=ubuntu:22.04 --pull --tag=zulip/ci:jammy
# docker push zulip/ci:focal # docker push zulip/ci:jammy
# #
# tools/ci/build-docker-images will rebuild all images, but not push them. # tools/ci/build-docker-images will rebuild all images, but not push them.

View File

@@ -1,10 +1,10 @@
# To build these production upgrade test images, say an Debian 11 Bullseye system # To build these production upgrade test images, say an Debian 12 Bookworm system
# preinstalled with Zulip 5.0: # preinstalled with Zulip 7.0:
# docker build . -f Dockerfile.prod \ # docker build . -f Dockerfile.prod \
# --build-arg=BASE_IMAGE=zulip/ci:bullseye \ # --build-arg=BASE_IMAGE=zulip/ci:bookworm \
# --build-arg=VERSION=5.0 \ # --build-arg=VERSION=7.0 \
# --tag=zulip/ci:focal-5.0 # --tag=zulip/ci:bookworm-7.0
# docker push zulip/ci:focal-5.0 # docker push zulip/ci:bookworm-7.0
ARG BASE_IMAGE ARG BASE_IMAGE
FROM $BASE_IMAGE FROM $BASE_IMAGE
@@ -14,8 +14,6 @@ ARG VERSION
RUN cd $(mktemp -d) \ RUN cd $(mktemp -d) \
&& curl -fLO --retry 3 "https://download.zulip.com/server/zulip-server-$VERSION.tar.gz" \ && curl -fLO --retry 3 "https://download.zulip.com/server/zulip-server-$VERSION.tar.gz" \
&& tar -xf "zulip-server-$VERSION.tar.gz" \ && tar -xf "zulip-server-$VERSION.tar.gz" \
# Version 3.4 predates ddb9d16132a6336b384bf674c4c950cd75d83e5c and 9d57fa97597ec176a8357d6620ab9e670ee19f4e
&& perl -pi -e 's/pgrep -f epmd/which pgrep && pgrep -x epmd/' zulip-server-$VERSION/puppet/zulip/manifests/rabbit.pp \
&& sudo -s "./zulip-server-$VERSION/scripts/setup/install" --self-signed-cert --hostname 127.0.0.1 --email ci@example.com \ && sudo -s "./zulip-server-$VERSION/scripts/setup/install" --self-signed-cert --hostname 127.0.0.1 --email ci@example.com \
&& sudo service rabbitmq-server stop && sudo service rabbitmq-server stop

View File

@@ -1,8 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -eux set -eux
cd "$(dirname "${BASH_SOURCE[0]}")" cd "$(dirname "${BASH_SOURCE[0]}")"
docker build . --build-arg=BASE_IMAGE=ubuntu:20.04 --pull --tag=zulip/ci:focal
docker build . --build-arg=BASE_IMAGE=ubuntu:22.04 --pull --tag=zulip/ci:jammy docker build . --build-arg=BASE_IMAGE=ubuntu:22.04 --pull --tag=zulip/ci:jammy
docker build . --build-arg=BASE_IMAGE=ubuntu:24.04 --pull --tag=zulip/ci:noble docker build . --build-arg=BASE_IMAGE=ubuntu:24.04 --pull --tag=zulip/ci:noble
docker build . --build-arg=BASE_IMAGE=debian:11 --pull --tag=zulip/ci:bullseye
docker build . --build-arg=BASE_IMAGE=debian:12 --pull --tag=zulip/ci:bookworm docker build . --build-arg=BASE_IMAGE=debian:12 --pull --tag=zulip/ci:bookworm

View File

@@ -74,20 +74,12 @@ except OSError:
distro_info = parse_os_release() distro_info = parse_os_release()
vendor = distro_info["ID"] vendor = distro_info["ID"]
os_version = distro_info["VERSION_ID"] os_version = distro_info["VERSION_ID"]
if vendor == "debian" and os_version == "11": # bullseye if vendor == "debian" and os_version == "12": # bookworm
POSTGRESQL_VERSION = "13"
elif vendor == "debian" and os_version == "12": # bookworm
POSTGRESQL_VERSION = "15" POSTGRESQL_VERSION = "15"
elif vendor == "ubuntu" and os_version == "20.04": # focal
POSTGRESQL_VERSION = "12"
elif vendor == "ubuntu" and os_version == "21.10": # impish
POSTGRESQL_VERSION = "13"
elif vendor == "ubuntu" and os_version == "22.04": # jammy elif vendor == "ubuntu" and os_version == "22.04": # jammy
POSTGRESQL_VERSION = "14" POSTGRESQL_VERSION = "14"
elif vendor == "ubuntu" and os_version == "24.04": # noble elif vendor == "ubuntu" and os_version == "24.04": # noble
POSTGRESQL_VERSION = "16" POSTGRESQL_VERSION = "16"
elif vendor == "neon" and os_version == "20.04": # KDE Neon
POSTGRESQL_VERSION = "12"
elif vendor == "fedora" and os_version == "38": elif vendor == "fedora" and os_version == "38":
POSTGRESQL_VERSION = "15" POSTGRESQL_VERSION = "15"
elif vendor == "rhel" and os_version.startswith("7."): elif vendor == "rhel" and os_version.startswith("7."):

View File

@@ -32,8 +32,8 @@ esac
python_version="$(python3 --version)" python_version="$(python3 --version)"
case "$python_version" in case "$python_version" in
Python\ 3.[0-7].*) Python\ 3.[0-9].*)
echo 'Error: Zulip requires an OS with Python 3.8 or later.' >&2 echo 'Error: Zulip requires an OS with Python 3.10 or later.' >&2
exit 1 exit 1
;; ;;
esac esac

View File

@@ -10,7 +10,7 @@ RELEASE="$1"
ARCH=amd64 # TODO: maybe i686 too ARCH=amd64 # TODO: maybe i686 too
case "$RELEASE" in case "$RELEASE" in
focal | jammy) jammy)
extra_packages=(python3-pip) extra_packages=(python3-pip)
;; ;;
*) *)

View File

@@ -48,4 +48,4 @@ API_FEATURE_LEVEL = 245
# historical commits sharing the same major version, in which case a # historical commits sharing the same major version, in which case a
# minor version bump suffices. # minor version bump suffices.
PROVISION_VERSION = (266, 2) PROVISION_VERSION = (267, 0)