Skip to content

Releases: projectsyn/commodore

v1.12.0

16 Nov 14:34
v1.12.0
50cbcda
Compare
Choose a tag to compare

Summary

We're pleased to announce release v1.12.0 of Commodore. This release adjusts the YAML rendering of postprocessing filter outputs to indent list entries as follows:

list:
  - a 
  - b

This should reduce the amount of noise generated by introducing a postprocessing filter as the formatting now matches the formatting used by Helm and Kapitan.

However, this will generate one noisy diff as we're rolling out Commodore v1.12.0. You can verify that there's no hidden changes in such diffs by using the new Commodore catalog migration option ignore-yaml-formatting by running commodore catalog compile -m ignore-yaml-formatting to show a diff with all non-semantic YAML changes hidden. The migration treats white space changes, indentation changes, changes in string representation and object ordering as non-semantic.

Additionally, the new release also introduces flag --force for commodore catalog compile. Starting with this release, commodore catalog compile without flag --force won't silently discard local changes in the global, tenant, and dependency repo checkouts.

For the global and tenant repo, untracked files, uncommitted changes, and unpushed branches are treated as local changes. For dependency repos, only uncommitted changes are treated as local changes, since we don't delete and recreate the dependency repo checkouts during catalog compilation (in contrast to the global and tenant repo checkouts).

Changes

6 changes since v1.11.0

🚀 Features

  • Add new command line flag --force for catalog compile (#685)

🐛 Fixes

  • Fix list indentation if using post-process filters (#689)

📄 Documentation

  • Fix mounting of GPG agent to Commodore docker container on Linux (#686)

🔗 Dependency Updates

  • Update dependency typer to v0.7.0 (#679)
  • Update dependency tox to v3.27.1 (#683)
  • Update dependency types-toml to v0.10.8.1 (#681)

v1.11.0

31 Oct 14:58
v1.11.0
919c568
Compare
Choose a tag to compare

Summary

We're pleased to announce Commodore v1.11.0. Apart from dependency updates, this release improves the catalog list command, introduces support for skipping paths in inventory lint, introduces optional filtering of dependencies to sync in component sync and package sync and adds support for Python 3.11.

The catalog list command has new options to sort the output, to filter the output by tenant id, and to print the output in various formats. The new default format is a tabular view intended for humans. To restore the old default behavior, please use -o id. Additionally, the command now also provides output formats JSON and YAML which dump the complete Lieutenant responses for consumption by other tools.

In inventory lint, we add support for skipping paths both as a command line option and through a .commodoreignore file in the root of the directory structure to lint. This can be useful when linting tenant repos which contain YAML manifests which are inputs to component adhoc-configurations, and which shouldn't be linted as Commodore inventory classes. Additionally, inventory lint now treats a top-level key parameters which isn't a dictionary as an error.

Finally, we've added support for filtering the list of depedencies to sync in component sync and package sync through command line option --filter. This option takes a regex and skips any dependencies which don't match the regex. We plan to make this option available in the Commodore component template sync GitHub action for manual runs.

Changes

16 changes since v1.10.0

🚀 Features

  • Implement ignore patterns for inventory lint (#665)
  • Add support for selective dependency syncing (#673)
  • Improve catalog listing UX (#671)
  • Add Python 3.11 as supported version (#670)

🪛 Internal Changes

  • Refactor cli.py into a package (#672)

🐛 Fixes

  • Make non-dictionary key parameters a linting error (#666)

📄 Documentation

  • Improve local mode documentation (#656)

🔗 Dependency Updates

  • Update dependency responses to v0.22.0 (#650)
  • Update dependency PyGithub to v1.56 (#651)
  • Update dependency pylint to v2.15.5 (#661)
  • Update paambaati/codeclimate-action action to v3.2.0 (#658)
  • Update dependency tox to v3.27.0 (#669)
  • Update dependency pytest-benchmark to v4 (#668)
  • Update dependency pytest-xdist to v3 (#667)
  • Update dependency pytest to v7.2.0 (#664)
  • Update docker.io/python Docker tag to v3.11.0 (#663)

v1.10.0

11 Oct 11:24
v1.10.0
65f3c42
Compare
Choose a tag to compare

Summary

We're pleased to announce the release of Commodore v1.10.0. This release provides improved support for rendering kustomizations. Commodore now ships with a bundled helper script which simplifies how users can use kustomize from Commodore components.

Additionally, Commodore provides a new function Kustomization() in commodore.libjsonnet which renders an object which -- when used as a Jsonnet output -- generates a kustomization.yaml which can be processed by kustomize build.

See the best practices documentation for using kustomizations for more details on how to make use of the new features.

Changes

7 changes since v1.9.1

🚀 Features

  • Improve support for kustomize in Commodore (#646)

🔗 Dependency Updates

  • Update dependency importlib-metadata to v5 (#643)
  • Lock file maintenance (#644)
  • Update dependency black to v22.10.0 (#645)
  • Update dependency pyfakefs to v5 (#647)
  • Lock file maintenance (#648)
  • Update dependency pylint to v2.15.4 (#649)

v1.9.1

30 Sep 07:29
v1.9.1
fd8019b
Compare
Choose a tag to compare

Summary

We're pleased to announce the release of Commodore v1.9.1.

This is a patch release which fixes some issues when performing component boilerplate updates and improves the handling of GitHub's secondary rate limits in commodore component sync.

See below for the full list of changes.

Changes

18 changes since v1.9.0

🛠️ Minor Changes

  • Improve handling of secondary rate limits in sync_dependencies() (#637)

🪛 Internal Changes

  • Remove Templater.additional_files which is not needed anymore (#638)
  • Add support for custom ignore patterns in GitRepo.stage_all() (#639)

🐛 Fixes

  • Modify GitRepo.stage_all() to respect .gitignore (#633)
  • Change sync_dependencies() to omit PRs which only update the template commit id (#635)
  • Omit .orig and .rej files when updating dependency boilerplate from a template (#636)

🔗 Dependency Updates

  • Update dependency pylint to v2.15.2 (#623)
  • Update dependency black to v22.8.0 (#619)
  • Update dependency pytest to v7.1.3 (#620)
  • Update dependency python-dotenv to v0.21.0 (#621)
  • Update dependency tox to v3.26.0 (#625)
  • Update dependency pyfakefs to v4.7.0 (#628)
  • Update docker.io/python Docker tag to v3.10.7 (#624)
  • Lock file maintenance (#622)
  • Update dependency pylint to v2.15.3 (#630)
  • Lock file maintenance (#631)
  • Update poetry install URL in Dockerfile (#634)
  • Update dependency pytest-cov to v4 (#640)

v1.9.0

30 Aug 09:22
v1.9.0
5da5e86
Compare
Choose a tag to compare

Summary

We're pleased to announce Commodore v1.9.0. The main new features in this release relate to the component template which we've moved out of the Commodore repository into its own repository at https://github.com/projectsyn/commodore-component-template.

We've refactored the command component new to be based on Cruft, to bring the management of the component and configuration package templates in sync again. Apart from unifying the code to manage component and configuration package templates, this also allows us to introduce new commands component update and component sync which allow users to manage existing Commodore component repositories.

The command component update provides support for updating a component's boilerplate to the latest template version, as well as modifying a component's boilerplate. The command allows users to add or remove many component features. The command allows users to enable or disable golden tests for a component. It also allows users to add test cases to a component, and to remove test cases from a component. Please see the Commodore CLI documentation for the full set of supported options for component update.

The command component sync is primarily intended to be run in a CI pipeline to keep components updated. This command replaces the function of modulesync for keeping component boilerplate updated. We've already set up a GitHub action which executes component sync for the same set of components that were previously managed by modulesync in the component template repository.

Apart from the improved component template handling, this release improves the robustness of handling Git repository author information. We've ensured that Git author information provided in environment variables is used for all Git repositories managed by Commodore. Additionally, we added logic to provide fallback author information for the case where Git can't determine author information at all.

Changes

21 changes since v1.8.0

🚀 Features

  • Add new command component update (#594)
  • Add option to create additional test cases for component new (#599)
  • Add support for adding and removing test cases to component update (#600)
  • Add command component sync (#607)
  • Read cookiecutter args from .cruft.json in Templater (#609)
  • Add fallback logic for component template add_pp and add_lib cookiecutter args (#610)
  • Explicitly handle Cruft errors and merge conflicts in Templater.update() (#611)
  • Add fallback to extract copyright info from modulesync config (#614)
  • Add option to skip committing changes for component update/package update (#616)

🛠️ Minor Changes

  • Update Commodore-in-Docker to support GPG-signing commits on Linux (#589)

🐛 Fixes

  • Fix dependency spec linting for dependencies in subpaths (#592)
  • Correctly pass Git author name and email in catalog compile (#598)
  • Correctly pass Git author name and email to dependency repos (#602)
  • Correctly propagate Git author information when managing worktrees (#603)
  • Handle KeyError when reading Git user from config (#604)
  • Fix GitRepo initialization for dependencies without backing MultiDependency (#605)
  • Fix entrypoint script in case the .ssh folder already exists (#606)

📄 Documentation

  • Add warning regarding "class not found" messages when using packages (#601)

🔗 Dependency Updates

  • Lock file maintenance (#595)
  • Update dependency pylint to v2.15.0 (#612)
  • Lock file maintenance (#613)

v1.8.0

15 Aug 08:59
v1.8.0
c8bd46b
Compare
Choose a tag to compare

Summary

We're pleased to announce Commodore v1.8.0. This release deprecates parameter -r / --repo-directory for component compile. We don't really need the component's Git repository for standalone compilation, so the change tries to find a Git repository containing the component directory, but gracefully degrades if no repository is found. This should improve the ergonomics of component compile, especially for components stored in a repository subdirectory.

Additionally, the release also contains updates to the component template which should reduce the amount of manual patching required when using the template to initialize a component which is stored in a repository subdirectory.

Changes

7 changes since v1.7.1

🛠️ Minor Changes

  • Deprecate parameter --repo-directory for component compile (#582)
  • Hard-code component name in component template Makefile.vars.mk (#588)

🐛 Fixes

  • Add logic in component template Makefile.vars.mk to handle Git worktree checkouts (#586)

📄 Documentation

  • Add a note about required dev packages for building Commodore dependencies (#580)
  • Update suggested Commodore-in-Docker helpers (#581)
  • Fix config package path in package tutorial (#583)

🔗 Dependency Updates

  • Lock file maintenance (#587)

v1.7.1

11 Aug 12:34
v1.7.1
12aa42a
Compare
Choose a tag to compare

Summary

We're pleased to announce Commodore v1.7.1. This release fixes a UI bug in the new package sync command.

Changes

1 changes since v1.7.0

🐛 Fixes

  • Fix console output for package sync (#578)

v1.7.0

10 Aug 13:55
v1.7.0
50b9b2a
Compare
Choose a tag to compare

Summary

We're pleased to announce Commodore v1.7.0. This release introduces a new command package sync, which can be used to update configuration packages from their cookiecutter templates, for example in a GitHub action.

The command is currently very specifically targeted at updating Commodore configuration packages hosted on GitHub. See the command documentation for more details.

Changes

5 changes since v1.6.0

🚀 Features

  • Add new command package sync (#572)

🔗 Dependency Updates

  • Lock file maintenance (#570)
  • Update dependency docker.io/python to v3.10.6 (#571)
  • Lock file maintenance (#573)
  • Remove development dependency autopep8 (#577)

v1.6.0

28 Jul 13:58
v1.6.0
6d18805
Compare
Choose a tag to compare

Summary

We're pleased to announce Commodore v1.6.0.

This release adds support for fetching new OIDC tokens using the "refresh token" provided by the OIDC provider. This reduces the number of times that Commodore opens a page in the browser to fetch a new OIDC token.

Additionally, we've introduced new commands commodore inventory show and commodore inventory packages, which complement commodore inventory components, but allow users to list the full inventory parameters and the contents of parameters.packages respectively.

Changes

3 changes since v1.5.0

🚀 Features

  • Add logic to try refreshing OIDC token in login() (#568)
  • Add CLI commands to extract package versions and show rendered inventory (#567)

🐛 Fixes

  • Remove reclass warnings from commodore inventory show output (#569)

v1.5.0

26 Jul 09:13
v1.5.0
f16c6bc
Compare
Choose a tag to compare

Summary

We're pleased to announce Commodore v1.5.0.

This release adds support for specifying dynamic facts on the command line when compiling a catalog for a cluster which hasn't reported any dynamic facts yet. Dynamic facts provided on the command line will be ignored if the Lieutenant API response for the cluster contains field dynamicFacts

Changes

3 changes since v1.4.2

🚀 Features

  • Add flag for providing fallback dynamic facts for catalog compile (#565)

🔗 Dependency Updates

  • Update dependency pyfakefs to v4.6.3 (#564)
  • Lock file maintenance (#566)