Release tool to have canary in resin.io
Project description
resin-release-tool
This tool is to set releases to release groups and canaries in balenaCloud
Installation
pip install resin-release-tool
Build / Run locally
You need poetry to build the project https://python-poetry.org/
poetry install
poetry build
poetry run resin-release-tool
etc..
Example usage
One canary group
Mark relevant devices with device tags with name "release_group" and value "canary" on balenaCloud.
To deploy a canary commit to them, run:
resin-release-tool --app $APP_ID release -c $CANARY_COMMIT -g canary
To deploy said commit to rest of devices, run:
resin-release-tool --app $APP_ID release -c $NEW_RELEASE_COMMIT -a
resin-release-tool --app $APP_ID unpin canary
(Note: Running the unpin command is not necessary if canary is already on NEW_RELEASE_COMMIT
, however, without it, it won't track the latest app-wide release.)
Staggered release with multiple groups
Mark relevant devices with device tags with name "release_group" and value "release_group_1/2/3" on balenaCloud.
To deploy a commit to all devices in a staggered way:
(Add appropriate wait or checks between commands as appropriate for your usecase.)
resin-release-tool --app $APP_ID release -c $NEW_RELEASE_COMMIT -g release_group_1
resin-release-tool --app $APP_ID release -c $NEW_RELEASE_COMMIT -g release_group_2
resin-release-tool --app $APP_ID release -c $NEW_RELEASE_COMMIT -g release_group_3
resin-release-tool --app $APP_ID release -c $NEW_RELEASE_COMMIT -a
resin-release-tool --app $APP_ID unpin release_group_1 release_group_2 release_group_3
Usage
Usage: resin-release-tool [OPTIONS] COMMAND [ARGS]...
You can set app and token as environment variables, using RESIN_APP and
RESIN_TOKEN
Options:
--token TOKEN balenaCloud auth token [required]
--app APP_ID balenaCloud app ID [required]
--help Show this message and exit.
Commands:
disable_rolling Disables rolling releases in the application
enable_rolling Enables rolling releases in the application
info Information of the application
release Sets release commits for a given release or app
releases Show successful releases of the application
show_devices_status Show the status of the devices in the app
show_group_versions Show the release versions of the devices in release groups
unpin Unpins the version of one or more releases
Development
- The config file used by the balena_sdk is located at
$HOME/.balena/balena.cfg
To format the code run:
black <path to files >
Tests can be run with
poetry run pytests
To debug/run commands in pycharm configure resin_release_tool/cli.py
as the script path and the command you want to run as parameter (credentials can be added as envs)
Publishing a new version
Pre-release steps
- upddate the changelog and run
make release <version> # e.g. v0.3.1
to update the version inpyproject.toml
Release step
- After merging these changes, tag the commit on master using
git tag <version>
. This must match the new version in thepyprojct.toml
- push the new tag to Github
git push origin <version>
this should trigger thepublish-to-pypi
workflow
New versions are uploaded to https://pypi.org/project/resin-release-tool/
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for resin_release_tool-0.3.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 06d6a06d9d3a6632c5d6e6dd86adb0846c47ef3dbf41b39f7dd18911b08a27ba |
|
MD5 | 1474d2e1cfb681c18dd99158c0500494 |
|
BLAKE2b-256 | 6a8837fb59a77405c27141549ca1836444ec3b911b09e6570d5707e543017e8b |