From f0cd040bacac6ee2e5e54ce2773af3a282f5d24b Mon Sep 17 00:00:00 2001 From: Jonas L Date: Mon, 28 Mar 2022 21:08:44 +0200 Subject: [PATCH] chore: release 3.0.0-alpha.11 (#1620) * chore: release 3.0.0-alpha.11 * import release note skeleton * add missing db config schema changes * wording * sort release note commit order and add latest commits / changes * chore: bump website version tag to 3.0.0-alpha.11 * add latest commits * add note about api static files removal * improve upgrade procedure after testing * document #1606 as a known issue Co-authored-by: Kyle Robbertze --- docs/releases/3.0.0-alpha.11.md | 287 ++++++++++++++++++++++++++++++++ website/vars.js | 4 +- 2 files changed, 289 insertions(+), 2 deletions(-) create mode 100644 docs/releases/3.0.0-alpha.11.md diff --git a/docs/releases/3.0.0-alpha.11.md b/docs/releases/3.0.0-alpha.11.md new file mode 100644 index 000000000..d0c2318e2 --- /dev/null +++ b/docs/releases/3.0.0-alpha.11.md @@ -0,0 +1,287 @@ +--- +title: LibreTime 3.0.0 alpha 11 +--- + +import ReleaseHead from './\_release-head.md'; + + + +## :sparkling_heart: Contributors + +The LibreTime project wants to thank the following contributors for authoring PRs to this release: + +## :rocket: Features + +- Use setuptools entrypoints ([#1409](https://github.com/libretime/libretime/issues/1409)) +- Support php7.4 ([#1354](https://github.com/libretime/libretime/issues/1354)) +- run API tests in CI ([#1421](https://github.com/libretime/libretime/issues/1421)) +- add support for Ubuntu Focal 20.04 ([#1168](https://github.com/libretime/libretime/issues/1168)) +- debian 11 support ([#1292](https://github.com/libretime/libretime/issues/1292)) +- create libretime_shared package ([#1349](https://github.com/libretime/libretime/issues/1349)) +- enhance libretime shared ([#1491](https://github.com/libretime/libretime/issues/1491)) +- **shared:** let user provide the log level ([#1493](https://github.com/libretime/libretime/issues/1493)) +- replace verbosity flag with log-level flag ([#1496](https://github.com/libretime/libretime/issues/1496)) +- **playout:** enhance playout logging ([#1495](https://github.com/libretime/libretime/issues/1495)) +- **api:** update env var settings loading +- **api:** allow to run without log file for dev +- **analyzer:** enhance analyzer cli and logging ([#1507](https://github.com/libretime/libretime/issues/1507)) +- **playout:** migrate notify cli to click ([#1519](https://github.com/libretime/libretime/issues/1519)) +- **shared:** allow loading from ini config file +- **shared:** allow cli parametrized decorators ([#1527](https://github.com/libretime/libretime/issues/1527)) +- **shared:** add suffix to shared config models +- **analyzer:** load config using shared helpers +- **playout:** change playout working directory +- **playout:** load config using shared helpers +- **analyzer:** analyze replaygain using ffmpeg +- **analyzer:** analyze cuepoint using ffmpeg +- **playout:** change liquidsoap working dir ([#1547](https://github.com/libretime/libretime/issues/1547)) +- **legacy:** rename log filepath ([#1551](https://github.com/libretime/libretime/issues/1551)) +- **shared:** add url/dsn property to config classes ([#1553](https://github.com/libretime/libretime/issues/1553)) +- remove locale generation from installer ([#1560](https://github.com/libretime/libretime/issues/1560)) +- **legacy:** consolidate constants ([#1558](https://github.com/libretime/libretime/issues/1558)) +- **legacy:** add db config defaults and allow custom port ([#1559](https://github.com/libretime/libretime/issues/1559)) +- remove unused ubuntu ppa ([#1591](https://github.com/libretime/libretime/issues/1591)) +- **analyzer:** do verify ssl certs on requests +- **analyzer:** rework analyze_metadata step +- **api:** improve uwsgi systemd integration ([#1614](https://github.com/libretime/libretime/issues/1614)) +- **analyzer:** rework organise_file using pathlib +- **shared:** load config from str filepath +- **shared:** create general config model +- **shared:** create time functions +- **shared:** return log level and filepath +- remove unused web_server_user config entry +- **legacy:** clean config parsing and add defaults +- **api_client:** load config using shared helpers +- **worker:** load config using shared helpers +- **shared:** do not exit on missing config file +- **api:** remove admin app and static files +- **api:** load config using shared helpers +- **legacy:** replace massivescale/celery-php with jooola/celery-php +- **worker:** set celery timezone to UTC +- **api:** include id in file/webstream serializers + +## :bug: Bug fixes + +- remove rogue buster reference +- correct vagrantfile function call +- declare pypo.notify module +- revert removal of eval for shell commands +- add missing dependencies to celery module +- assume api client is installed +- **shared:** fix tests +- change filepath options type to pathlib.Path ([#1506](https://github.com/libretime/libretime/issues/1506)) +- **legacy:** validate id param in show image controller ([#1510](https://github.com/libretime/libretime/issues/1510)) +- **playout:** optional log_file for liquidsoap +- **shared:** require click >=8.0.3 +- **legacy:** correct linting issues +- make vagrant source.list update idempotent ([#1520](https://github.com/libretime/libretime/issues/1520)) +- **api:** duplicate exception raising and close file +- **legacy:** api migration config variable name ([#1522](https://github.com/libretime/libretime/issues/1522)) +- **shared:** prevent child override by empty dict +- **shared:** tmp_path fixture type mismatch +- **analyzer:** install missing steps package +- **shared:** type is required for default config submodel ([#1536](https://github.com/libretime/libretime/issues/1536)) +- **legacy:** default values when array is null +- **legacy:** do not catch too broad exceptions +- **legacy:** add more null check in api live info +- **legacy:** only render if img creation succeed ([#1540](https://github.com/libretime/libretime/issues/1540)) +- **shared:** pin loguru version +- **legacy:** clean sql migrations files ([#1545](https://github.com/libretime/libretime/issues/1545)) +- **shared:** set logger encoding and dont assume encoding +- **playout:** proper logger format string +- **playout:** only exclude ended file event +- **api_client:** use same date format as schedule key +- **api_client:** properly enclose events in media dict +- **playout:** properly populate scheduled_now_webstream +- **legacy:** revert default storage path ([#1563](https://github.com/libretime/libretime/issues/1563)) +- **legacy:** update setup with new db config schema ([#1567](https://github.com/libretime/libretime/issues/1567)) +- **shared:** do not strip vhost slash ([#1594](https://github.com/libretime/libretime/issues/1594)) +- **analyzer:** remove bad attributes in shutdown handler ([#1605](https://github.com/libretime/libretime/issues/1605)) +- **analyzer:** update docstring for organise_file +- **shared:** fix missing port in public_url +- change celery user in worker service file ([#1638](https://github.com/libretime/libretime/issues/1638)) +- **api:** model_bakery is a dev dependency +- **api:** static_url settings is required in dev mode ([#1662](https://github.com/libretime/libretime/issues/1662)) +- **api_client:** comply to legacy schedule events +- **playout:** remove stream_buffer_start in event dispatch + +## :fire: Deprecation and removal + +## :arrow_up: Upgrading + +### Analyzer certificate verification + +Analyzer no longer ignore certificate verification when performing a request. We recommend using Let's Encrypt to get a certificate. If you do rely on self signed certificate, please read the [requests](https://docs.python-requests.org/) documentation to provide a CA Bundle to verify the cert using environment variables. + +### Analyzer new command line interface + +The Analyzer command line interface has been reworked and uses new flags. + +- `--debug` flag becomes `--log-level ` +- `--rmq-config-file` flag becomes `--config ` +- `--http-retry-queue-file` flag becomes `--retry-queue-filepath`. +- `retry-queue-filepath` default value changed from `/tmp/airtime_analyzer_http_retries` to `retry_queue` in the working directory. + +### New configuration schema and validation + +The configuration file parsing was improved with validation and the configuration schema was updated. Some deprecated fields were removed and other were renamed. + +The `general` section has been changed: + +- the `general.web_server_user` entry was removed +- the `general.cache_ahead_hours` entry now defaults to 1 +- the `general.airtime_dir` entry is deprecated and can be removed +- the `general.station_id` entry is deprecated and can be removed +- the `general.protocol` (`http` or `https`) entry is recommended over the `general.force_ssl` entry. +- the `general.force_ssl` entry should either be removed or set to a value (`true` or `false`), an empty value will fail validation. + +The storage (`current_backend`) section has been changed: + +- the `current_backend.storage_backend` entry now defaults to the only valid value `file`. + +:::note + +You can remove the entire `current_backend` section from your configuration file. + +::: + +The `database` section has been changed: + +- the `database.*` entries now have defaults +- the `database.port` entry was added and defaults to `5432` +- the `database.dbname` entry was renamed to `database.name` +- the `database.dbuser` entry was renamed to `database.user` +- the `database.dbpass` entry was renamed to `database.password` + +The `rabbitmq` section has been changed: + +- the `rabbitmq.*` entries now have defaults + +The `pypo` section has been changed: + +- the `pypo` section was renamed to `playout` +- the `pypo.ls_*` entries were renamed to `playout.liquidsoap_*` +- the `pypo.*_dir` entries were removed +- the `pypo.api_client` entry was removed +- the `pypo.record_file_type` entry was renamed to `playout.record_file_format` +- the `pypo.base_recorded_files` entry was removed +- the `pypo.poll_interval` entry was removed +- the `pypo.push_interval` entry was removed +- the `pypo.cue_style` entry was removed + +The deprecated sections `monit` and `facebook` are unused, they can be removed from your configuration file. + +Unless you use a custom auth backend, the `ldap` section can be removed from your configuration file. + +Remove any quoted values in your configuration file, validation might fail otherwise. See the following example: + +```ini +# The previously quoted value +ls_port = '1234' +# should become +liquidsoap_port = 1234 +``` + +Please see the [configuration documentation](../admin-manual/setup/configuration.md) for more details. + +### Environment variables + +The API configuration environment variables names changed: + +- `LIBRETIME_CONF_DIR` was removed +- `LIBRETIME_CONF_FILE` was renamed to `LIBRETIME_CONFIG_FILEPATH` + +The Analayzer configuration environment variables names changed: + +- `LIBRETIME_CONF_DIR` environment variable was replaced with `LIBRETIME_CONFIG_FILEPATH`. + +The Worker configuration environment variables names changed: + +- `RMQ_CONFIG_FILE` was renamed to `LIBRETIME_CONFIG_FILEPATH`. + +### Log files new paths + +When running Playout from the command line, the service will not log to a file by default. +When running Playout as a systemd service, the log file moved from `/var/log/airtime/pypo/pypo.log` to `/var/log/libretime/playout.log` + +The Playout Notify log file at `/var/log/airtime/pypo-liquidsoap/notify.log` was removed and merged into the existing `/var/log/libretime/liquidsoap.log` log file. + +When running Liquidsoap from the command line, the service will not log to a file by default. +When running Liquidsoap as a systemd service, the log file moved from `/var/log/airtime/pypo-liquidsoap/ls_script.log` to `/var/log/libretime/liquidsoap.log` + +The Legacy log file moved from `/var/log/airtime/zendphp.log` to `/var/log/libretime/legacy.log` + +The API log file moved from `/var/log/airtime/api.log` to `/var/log/libretime/api.log` + +Run the following command to create the new and clean the old log directory: + +```bash +sudo mkdir -p /var/log/libretime +sudo chown -R www-data:www-data /var/log/libretime + +sudo rm -rf /var/log/airtime +``` + +### Services new working directories + +When running Playout as a systemd service, the working directory changed from `/var/tmp/airtime/pypo/` to `/var/lib/libretime/playout`. When running from the command line, the users current working directory is now used by default. + +When running Liquidsoap as a systemd service, the working directory is now `/var/lib/libretime/playout`. When running from the command line, the users current working directory is now used by default. + +When running Analyzer as a systemd service, the working directory is now `/var/lib/libretime/analyzer`. + +When running Worker (celery) as a systemd service, the working directory changed from `/srv/airtime` to `/var/lib/libretime/worker`. + +Run the following command to clean the old directory: + +```bash +sudo rm -rf /var/tmp/airtime/pypo/ +``` + +### Analyzer new `ffmpeg` based steps + +The Analyzer now requires `ffmpeg`. The `silan` system dependency and the `rgain3` python package and it's system dependencies can be removed. + +Run the following command to clean the old packages: + +```bash +sudo apt purge silan + +sudo apt purge \ + gir1.2-gtk-3.0 \ + libcairo2-dev \ + libgirepository1.0-dev \ + libglib2.0-dev \ + pkg-config \ + python3-cairo \ + python3-dev \ + python3-gi \ + python3-gi-cairo \ + python3-gst-1.0 +sudo pip3 uninstall rgain3 +``` + +### No static files for the API + +The API does not rely on static files in production anymore. + +Run the following command to clean the old files: + +```bash +sudo rm -rf /usr/share/airtime/api +``` + +## :warning: Known issues + +The following issues may need a workaround for the time being. Please search the [issues](https://github.com/libretime/libretime/issues) before reporting problems not listed below. + +### Ubuntu 18.04 Playout Status + +The playout status notifications in the web interface are not working. The issue +is tracked in [#1606](https://github.com/libretime/libretime/issues/1606). The +playout works correctly and can be heard in Icecast, however the **On Air** +button is greyed out and the status reported on the **Streams** status page can +report errors connecting to Liquidsoap. The current workaround is to upgrade the +server to Ubuntu 20.04. + +## :memo: Colophon diff --git a/website/vars.js b/website/vars.js index c1401a8d1..8baa1303a 100644 --- a/website/vars.js +++ b/website/vars.js @@ -1,7 +1,7 @@ module.exports = { title: "LibreTime", description: "Radio Broadcast & Automation Platform", - version: "3.0.0-alpha.10", + version: "3.0.0-alpha.11", website: "https://libretime.org", repository: { @@ -22,7 +22,7 @@ module.exports = { home: { links: [ { label: "Get started 🚀", to: "/docs/admin-manual" }, - { label: "Release note", to: "/docs/releases/3.0.0-alpha.10" }, + { label: "Release note", to: "/docs/releases/3.0.0-alpha.11" }, ], },