Releases: projectsyn/commodore
v1.12.0
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
forcatalog 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
v1.11.0
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
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
v1.9.1
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
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
andadd_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
v1.8.0
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
v1.7.0
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
v1.6.0
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
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)