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
File details
Details for the file resin_release_tool-0.3.2.tar.gz
.
File metadata
- Download URL: resin_release_tool-0.3.2.tar.gz
- Upload date:
- Size: 7.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.2 CPython/3.10.10 Linux/5.15.0-1034-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 285879b3c756621ba3e637de499411c702b50245215121f1480a5c193391cbd6 |
|
MD5 | 1a4a2942dbc3c92d2aa362993374e639 |
|
BLAKE2b-256 | 054ad58924868ac920192ee2121ce3297009222c5eeee3d0f0138ffba410b193 |
File details
Details for the file resin_release_tool-0.3.2-py3-none-any.whl
.
File metadata
- Download URL: resin_release_tool-0.3.2-py3-none-any.whl
- Upload date:
- Size: 8.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.2 CPython/3.10.10 Linux/5.15.0-1034-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 06d6a06d9d3a6632c5d6e6dd86adb0846c47ef3dbf41b39f7dd18911b08a27ba |
|
MD5 | 1474d2e1cfb681c18dd99158c0500494 |
|
BLAKE2b-256 | 6a8837fb59a77405c27141549ca1836444ec3b911b09e6570d5707e543017e8b |