leverage icon indicating copy to clipboard operation
leverage copied to clipboard

Feature | Allow for automatic management of version and dependencies (docker-leverage-toolbox)

Open exequielrafaela opened this issue 2 years ago • 4 comments

Describe the Feature

  • ✅ As a user of the leverage command line interface, I would like to request a feature that would allow for automatic management of version and dependencies.

  • ✅ This feature would greatly improve the reliability and ease of use of the command line interface. It would also help to ensure that users are always using the most up-to-date and stable versions of the compatible toolbox, which would ultimately lead to fewer issues and support requests.

Expected Behavior

  • The leverage CLI (Command Line Interface) should have a range restricting and controlling which versions of the toolbox can be used based on a clear compatibility matrix backed by automated tests. Let's say, it would be like centralizing the responsibility and logic of the compatibility matrix in one point, the CLI.

  • Any leverage cli command will be able to run even if the build.env file does not contains a definition for the https://github.com/binbashar/le-docker-leverage-toolbox

  • ⚔️ ~~TERRAFORM_IMAGE_TAG=1.2.7-0.0.5~~

Use Case

An example use case for this feature would be a user who is working on a project that requires version 1.9.2 of the leverage cli and TERRAFORM_IMAGE_TAG=1.3.5-0.1.0 of the toolbox. However, the user has installed cli 1.9.2 but has an older toolbox docker image version TERRAFORM_IMAGE_TAG=1.2.7-0.0.1 . Without an automated compatibility internal check, the user would need to manually check and ensure compatibility between the different versions in the doc. This process can be time-consuming and error-prone.

With the proposed feature, the user would simply be able to install the latest cli version and the compatibility check will be automatic, which would clearly state that version x.y.z of the toolbox is incompatible with version a.b.c of the cli. This would save the user valuable time and prevent potential errors or compatibility issues. Additionally, the user would be able to use the command line interface to automatically manage the versions and dependencies, ensuring that the correct versions are used for the project.

Describe Ideal Solution

Please review this definition with

  • 1ry contact @diego-ojeda-binbash (Leverage Software Architect)
  • 2ry contact @juanmatias @angelofenoglio (Main Developers and contributors)

Additional Context

  • I've seen we have a clearer compatibility matrix, easily accessible and visible to the user. Which has already make it easier to understand which versions of the leverage docker toolbox are compatible with one another, and is already improving the overall user experience.
  • Related issues
    • leverage cli | https://github.com/binbashar/leverage/issues/137
    • Ref Arch v1 | https://github.com/binbashar/le-tf-infra-aws/issues/446
    • leverage doc | https://github.com/binbashar/le-ref-architecture-doc/issues/143

exequielrafaela avatar Jan 17 '23 18:01 exequielrafaela

Keep in mind the following cases and items:

  • Needed binary existence should be checked (e.g. does kubectl exist?)
  • Do we need to support only a few versions? (and set EOL for older versions)
  • Is it possible to manage the compatibility manager at CLI level? (notifying the user when no compatible version is being used)
  • Is it possible to manage a specific version (set of versions) for a given CLI version?

juanmatias avatar Apr 10 '23 18:04 juanmatias

@diego-ojeda-binbash consider including the compatibility information in every release. We'll start with this practice in the next one. Appart from that we must update the doc here => https://leverage.binbash.co/work-with-us/releases/versions-compatibility-matrix/ to starting referencing to the release notes (https://github.com/binbashar/leverage/releases/tag/untagged-c0fd0d46dfd8353efc6c). We'll add a section Version Compatibility (Leverage CLI / Leverage Toolbox / Leverage Ref Arch)

exequielrafaela avatar Jan 30 '24 15:01 exequielrafaela

  1. Changes to the doc are here: https://github.com/binbashar/le-ref-architecture-doc/pull/206
  2. Changes to relese notes are here: a. CLI: https://github.com/binbashar/leverage/releases/tag/untagged-4c1a8297cbb05976d2a4 b. Toolbox Image: https://github.com/binbashar/le-docker-leverage-toolbox/releases/tag/1.5.0-0.1.13

And just for reference this how the release looks (still a draft at the moment of writing this): Screen Shot 2024-01-30 at 18 10 56

diego-ojeda-binbash avatar Jan 30 '24 21:01 diego-ojeda-binbash

Manual updates get overwritten by the Release Drafter action. Instead we are modifying the Release Drafter template to add a footer with a reminder so that publishers of the release drafts can have a chance to manually add the Version Compatibility section.

diego-ojeda-binbash avatar Feb 19 '24 21:02 diego-ojeda-binbash