Brokkr

Latest version: v0.4.0

Safety actively analyzes 624755 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 2

1.2.3b4

VERSION='VERSION_NUMBER'
Git branch to make the release from, e.g. 'main', 'master' or '1.x'
MAIN_BRANCH='BRANCH_NAME'
Prepare-release branch name
PREPARE_RELEASE_BRANCH=prepare-release-$VERSION
Release branch name, if a new major/minor release, e.g. '1.x' or '0.4.x'
RELEASE_BRANCH=$MAIN_BRANCH
Set mode to 'client' (if on a Pi) or 'server' (if on the central VPS)
MODE='MODE_NAME'


or, all in one line,

bash
VERSION='VERSION_NUMBER'; MAIN_BRANCH='BRANCH_NAME'; PREPARE_RELEASE_BRANCH=prepare-release-$VERSION; RELEASE_BRANCH=$MAIN_BRANCH; MODE='MODE_NAME'


* [ ] Update local repo

shell
git reset --hard && git switch $MAIN_BRANCH && git pull upstream $MAIN_BRANCH


* [ ] Clean local repo

shell
git clean -xdi


* [ ] Perform a quick local smoke-test of the final development version

shell
python -b -X dev -m pip install -e .
pylint src/brokkr
python -I -bb -X dev -W error -m brokkr --version
python -I -bb -X dev -W error -m brokkr monitor
python -I -bb -X dev -W error -m brokkr --mode test start
tail -n 10 "$(ls -t ~/brokkr/test/telemetry/telemetry* | head -n 1)"



Commit

* [ ] Create a new branch for the release

shell
git switch -c $PREPARE_RELEASE_BRANCH


* [ ] Ensure docs and metadata are up to date and commit any changes

* [ ] [Release Guide](./RELEASE.md)
* [ ] [License](./LICENSE.txt)
* [ ] [Readme](./README.md)
* [ ] [Contributing Guide](./CONTRIBUTING.md)
* [ ] [MANIFEST.in](./MANIFEST.in)
* [ ] [setup.cfg](./setup.cfg) (Python/dep version reqs, classifiers, other metadata)
* [ ] [Roadmap](./ROADMAP.md)

* [ ] Update [`CHANGELOG.md`](./CHANGELOG.md) with the latest changes

* [ ] Update `__version__` in [`__init__.py`](./src/brokkr/__init__.py) (set release version, remove `.dev0`)

shell
nano src/brokkr/__init__.py


* [ ] Create release commit

shell
git commit -m "Release Brokkr version $VERSION"


* [ ] Push the prepare-release branch to your fork

shell
git push -u origin $PREPARE_RELEASE_BRANCH


* [ ] Open a [pull request](https://github.com/project-mjolnir/brokkr/pulls) for the branch


Test

* [ ] On the Pi/server, pull the prepare-release branch

shell
git reset --hard && git fetch --all && git switch $PREPARE_RELEASE_BRANCH


* [ ] Clean repository of old artifacts

shell
git clean -xdi


* [ ] Create and activate a fresh virtual environment for testing

shell
python -m venv test-env && source test-env/bin/activate


* [ ] Install/update the packaging stack

build
python -m pip install --upgrade pip
pip install --upgrade build setuptools wheel


* [ ] Build the distribution packages

build
python -bb -X dev -W error -m build


* [ ] Install from built wheel

shell
python -b -X dev -m pip install dist/brokkr-$VERSION-py3-none-any.whl[all]


* [ ] Check environment

shell
pip check; python -I -bb -X dev -W error -m brokkr --version


* [ ] Test package


python -I -bb -X dev -W error -m brokkr status
python -I -bb -X dev -W error -m brokkr monitor
python -I -bb -X dev -W error -m brokkr --mode test start
ls -lh ~/brokkr/test/telemetry
head -n 10 "$(ls -t ~/brokkr/test/telemetry/telemetry* | head -n 1)"
tail -n 10 "$(ls -t ~/brokkr/test/telemetry/telemetry* | head -n 1)"



Stage

* [ ] On the Pi/server(s), activate the production virtual environment

* [ ] Disable and stop Brokkr service

shell
sudo systemctl disable brokkr-hamma-default && sudo systemctl stop brokkr-hamma-default


* [ ] Reinstall the package from the built wheel

shell
python -b -X dev -m pip install dist/brokkr-$VERSION-py3-none-any.whl


* [ ] Reinstall service

shell
sudo /$PATH_TO_VENV/bin/python -I -bb -X dev -W error -m brokkr install-service -vvv --account $ACCOUNT


* [ ] Restart services

shell
sudo systemctl restart brokkr-hamma-default sindri-hamma-$MODE


* [ ] Verify still running, no errors and functioning correctly after 60 seconds

shell
systemctl status brokkr-hamma-default sindri-hamma-$MODE



Build

* [ ] Activate the appropriate venv/conda environment

* [ ] Clean local repo

shell
git clean -xdi


* [ ] Update the packaging stack

shell
python -m pip install --upgrade pip
pip install --upgrade --upgrade-strategy eager build setuptools twine wheel


* [ ] Build source distribution and wheel

shell
python -bb -X dev -W error -m build



Check

* [ ] Check Pylint

shell
pylint src/brokkr


* [ ] Check distribution archives

shell
twine check --strict dist/*


* [ ] Check installation

shell
python -b -X dev -m pip install dist/brokkr-$VERSION-py3-none-any.whl


* [ ] Check environment

shell
pip check; python -I -bb -X dev -W error -m brokkr --version


* [ ] Check functionality

shell
python -I -bb -X dev -W error -m brokkr monitor
python -I -bb -X dev -W error -m brokkr --mode test start
tail -n 10 "$(ls -t ~/brokkr/test/telemetry/telemetry* | head -n 1)"



Release

* [ ] Upload distribution packages to PyPI

shell
twine upload dist/*


* [ ] Create release tag

shell
git tag -a v$VERSION -m "Brokkr version $VERSION"


* [ ] Merge the prepare-release branch to `$MAIN_BRANCH`, or the pull request

shell
git switch $MAIN_BRANCH && git merge $PREPARE_RELEASE_BRANCH


* [ ] If new major or minor version, create release branch and push

shell
git switch -c $RELEASE_BRANCH && git push -u origin $RELEASE_BRANCH && git push upstream $RELEASE_BRANCH && git switch $MAIN_BRANCH



Finalize

* [ ] Update `__version__` in [`__init__.py`](./src/brokkr/__init__.py) (increment to next, add `.dev0`)

shell
nano src/brokkr/__init__.py


* [ ] Create a `back to work` commit with the next anticipated version on the branch

shell
git commit -m "Begin development of version $VERSION"


* [ ] Reinstall the development version locally in editable mode

shell
python -b -X dev -m pip install -e .


* [ ] Push new release commits and tags to `$MAIN_BRANCH`

shell
git push upstream $MAIN_BRANCH --follow-tags


* [ ] Create a [GitHub release](https://github.com/project-mjolnir/brokkr/releases) from the tag with the changelog contents

* [ ] Open a [GitHub milestone](https://github.com/project-mjolnir/brokkr/milestones) as needed for the next release


Deploy

* [ ] On the Pi/server, install the released version from PyPI

shell
pip install brokkr


Or, pull the release branch, checkout the tag and editable-install

shell
git fetch --all && git switch $RELEASE_BRANCH && git checkout v$VERSION && pip install -e .


* [ ] Restart the service and verify working

shell
sudo systemctl restart brokkr-hamma-default && sleep 10 && systemctl status brokkr-hamma-default



Cleanup

* [ ] On the Pi/server, remove the clean test virtual environment

shell
rm -rfd test-env


* [ ] Delete the prepare-release branch locally and on the Pi/server

shell
git branch -d $PREPARE_RELEASE_BRANCH


* [ ] Delete the prepare-release branch on the remote

shell
git push -d origin $PREPARE_RELEASE_BRANCH



Brokkr Changelog

0.4.0

Alpha release with the following changes:

Core features:
* Add input and output queues to tie together multiple pipelines
* Add support for TCP and arbitrary network packets as inputs
* Add binary file writing for output
* Add external drive discovery, mounting and selection
* Add netcat command to send commands and receive simple network data

Infrastructure:
* Greatly enhance functionality of FileOutputStep and filename/path gen
* Add CLI option to select pipeline to run with `brokkr status`/`monitor`
* Enable ability to enable/disable specific pipelines with config option
* Add smart repr for large/binary objects in pretty printer

Under the hood:
* Refactor network code for enhanced functionality, robustness and perf.
* Improve error handling and debug logging package-wide
* Improve error/NA/exit sentinels, shutdown and pipeline handling
* Further general refactoring, cleanup and commenting

0.3.0

Major alpha release with the following changes:

Core Features:
* Add multiprocess architecture, management and termination
* Add Pipeline core framework and port current codebase over to it
* Centralize configuration, presets and plugins into a system config package
* Enable use with non-HAMMA systems, and support multiple at once
* Add system and unit config creation, handling and management

Infrastructure:
* Make behavior fully configuration via preferences and factor out HAMMA-specific components
* Improve handling of config file/preset errors with much friendlier messages and behavior
* Enhance install, configuration and setup features
* Improve handling, formatting and customizability of logging
* Overhaul CLI UI, UX, commands and flexibility

Under the Hood:
* Complete rewrite of core config system to OO for modularity, flexibility and simplicity
* Make all inputs, outputs and primary logic OO and class-based for modularity
* Comprehensively refactor for cleaner organization, more reliable operating and easier extension
* Numerous bug fixes and minor improvements
* Improve readme and documentation

0.2.5

Bugfix release with the following changes:

* Fix serious persistent error after disconnect/reconnecting charge controller
* Improve serial port selection alg and ignore built-in ARM serial port
* Improve logging messages selecting and connecting to serial port
* Remove spurious Unicode BOM that somehow snuck into README

0.2.4

Bugfix release with the following change:

* Fix low-level system I/O error connecting to Modbus device not being caught

0.2.3

Bugfix release with the following change:

* Fix pseudo-underflow in temperature data due to incorrect int interpretation

Page 1 of 2

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.