From 5268f29636ff1607eb84db99b05892997e95d888 Mon Sep 17 00:00:00 2001 From: MichaIng Date: Fri, 23 Dec 2022 06:44:19 +0100 Subject: [PATCH] [CI/CD] Add PyPi release workflow to dev branch Apply beta "b1" version suffix for a pre-release on PyPI. Bump version string to 0.43.1b1 for simpler upgrades from 0.43.0, which did not have a pre-release suffix. Update install instructions to pull pre-release from PyPI instead of GitHub. Additionally add instructions to work around the "error: externally-managed-environment" error on recent Debian and Ubuntu versions. Signed-off-by: MichaIng --- .github/workflows/pypi_release.yml | 25 +++++++++++++++++++++++++ README.md | 18 +++++++++++++----- motioneye/__init__.py | 2 +- 3 files changed, 39 insertions(+), 6 deletions(-) create mode 100644 .github/workflows/pypi_release.yml diff --git a/.github/workflows/pypi_release.yml b/.github/workflows/pypi_release.yml new file mode 100644 index 000000000..7a6795f91 --- /dev/null +++ b/.github/workflows/pypi_release.yml @@ -0,0 +1,25 @@ +name: PyPI release + +on: workflow_dispatch + +permissions: + contents: read + +jobs: + release: + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.x' + check-latest: true + - name: Install dependencies + run: | + python -m pip install --upgrade pip setuptools wheel + python -m pip install --upgrade build twine + - name: Build package + run: python -m build + - name: Publish package + #run: twine upload -r testpypi -u '__token__' -p '${{ secrets.TEST_PYPI_API_TOKEN }}' dist/* + run: twine upload -r pypi -u '__token__' -p '${{ secrets.PYPI_TOKEN }}' dist/* diff --git a/README.md b/README.md index 0f39f350a..01c831eb1 100644 --- a/README.md +++ b/README.md @@ -19,13 +19,13 @@ These install instructions are constantly tested via CI/CD pipeline on Debian Bu _Here the commands for APT-based Linux distributions are given._ - On **32-bit ARMv6 and ARMv7** systems: + On **32-bit ARMv6 and ARMv7** systems, thanks to [piwheels](https://piwheels.org/), no development headers are required: ```sh sudo apt update sudo apt --no-install-recommends install ca-certificates curl python3 python3-distutils ``` - On all other architectures additional development headers are required: + On **all other architectures** additional development headers are required: ```sh sudo apt update sudo apt --no-install-recommends install ca-certificates curl python3 python3-dev libcurl4-openssl-dev gcc libssl-dev @@ -38,14 +38,22 @@ These install instructions are constantly tested via CI/CD pipeline on Debian Bu rm get-pip.py ``` + **On recent Debian (Bookworm ant later) and Ubuntu (Lunar and later) versions**, the `libpython3.*-stdlib` package ships a file `/usr/lib/python3.*/EXTERNALLY-MANAGED`, which prevents the installation of Python modules outside of `venv` environments. + motionEye however has a small number of dependencies with no strict version requirements and hence is very unlikely to break any Python package you might have installed via APT. To bypass this block, add `break-system-packages=true` to the `[global]` section of your `pip.conf`: + ```sh + grep -q '\[global\]' /etc/pip.conf 2> /dev/null || printf '%b' '[global]\n' | sudo tee -a /etc/pip.conf > /dev/null + sudo sed -i '/^\[global\]/a\break-system-packages=true' /etc/pip.conf + ``` + On **32-bit ARMv6 and ARMv7** systems, additionally configure `pip` to use pre-compiled wheels from [piwheels](https://piwheels.org/): ```sh - printf '%b' '[global]\nextra-index-url=https://www.piwheels.org/simple/\n' | sudo tee /etc/pip.conf > /dev/null + grep -q '\[global\]' /etc/pip.conf 2> /dev/null || printf '%b' '[global]\n' | sudo tee -a /etc/pip.conf > /dev/null + sudo sed -i '/^\[global\]/a\extra-index-url=https://www.piwheels.org/simple/' /etc/pip.conf ``` 3. Install and setup **motionEye** ```sh - sudo python3 -m pip install 'https://github.com/motioneye-project/motioneye/archive/dev.tar.gz' + sudo python3 -m pip install --pre motioneye sudo motioneye_init ``` _NB: `motioneye_init` currently assumes either an APT- or RPM-based distribution with `systemd` as init system. For a manual setup, config and service files can be found here: _ @@ -54,6 +62,6 @@ These install instructions are constantly tested via CI/CD pipeline on Debian Bu ```sh sudo systemctl stop motioneye -sudo python3 -m pip install --upgrade --force-reinstall --no-deps 'https://github.com/motioneye-project/motioneye/archive/dev.tar.gz' +sudo python3 -m pip install --upgrade --pre motioneye sudo systemctl start motioneye ``` diff --git a/motioneye/__init__.py b/motioneye/__init__.py index 281f16d33..f05e17d0a 100644 --- a/motioneye/__init__.py +++ b/motioneye/__init__.py @@ -1 +1 @@ -VERSION = "0.43.0" +VERSION = "0.43.1b1"