Skip to main content

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 in pyproject.toml

Release step

  • After merging these changes, tag the commit on master using git tag <version>. This must match the new version in the pyprojct.toml
  • push the new tag to Github git push origin <version> this should trigger the publish-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

resin_release_tool-0.3.2.tar.gz (7.2 kB view details)

Uploaded Source

Built Distribution

resin_release_tool-0.3.2-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

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

Hashes for resin_release_tool-0.3.2.tar.gz
Algorithm Hash digest
SHA256 285879b3c756621ba3e637de499411c702b50245215121f1480a5c193391cbd6
MD5 1a4a2942dbc3c92d2aa362993374e639
BLAKE2b-256 054ad58924868ac920192ee2121ce3297009222c5eeee3d0f0138ffba410b193

See more details on using hashes here.

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

Hashes for resin_release_tool-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 06d6a06d9d3a6632c5d6e6dd86adb0846c47ef3dbf41b39f7dd18911b08a27ba
MD5 1474d2e1cfb681c18dd99158c0500494
BLAKE2b-256 6a8837fb59a77405c27141549ca1836444ec3b911b09e6570d5707e543017e8b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page