Releases: getgort/gort
v0.8.0
This is the official release for v0.8.0!
This release focuses on authentication and authorization, and includes a fully-functional RBAC implementation for bundle commands. We consider this to be the "killer feature" for Gort, and we're very excited for its completion.
With this release, Gort is now considered to be minimally feature complete. This does NOT mean that it's feature complete! In fact, it's still missing some very important features (dynamic command configuration and templates are particularly glaring). These will be implemented over the next few months.
RBAC for command execution
- Roles and permissions. Roles group one or more permissions, and can be granted to groups. Groups are groups of users. Includes the addition of the
gort role
CLI subcommands. - Command rules and permissions. Permissions and execution rules are fully implemented. This is a major feature. See the Gort Guide for more details.
- Default Gort Bundle. When first bootstrapped, a Gort deployment receives a default
gort
bundle for basic administration. It includes several rules that restrict execution to the administrator (and anybody who may get the appropriate permissions in the future). - Addition of RBAC to REST API. The REST API now performs user authentication and authorization by comparing the given function against the rules defined in the default Gort bundle. So, if you can execute the default Gort command, you can execute the same function via the API.
Command changes
- Removed the entire concept of default bundles, since they added quite a bit of complexity for very little value (#41)
- Added "long descriptions" to bundle commands, and made
!help COMMAND
output it (#70) - Standardized output format for various
list
subcommands (#88) - The
bootstrap
subcommand no longer accepts an email, password, or username. Theadmin
account is expected to be used to create a daily use account, and its routine use should be discouraged (#78) - Added a
hidden
subcommand togort
, under which commands intended to be used primarily via the Gort bundle (but not harmful if they're discovered and used via the CLI) can live (ex.,!gort:help
is served bygort hidden command
)
Controller configuration changes
- Updated configuration to use durations for time-based configurations (for example,
command_timeout_seconds: 60
becomescommand_timeout: 60s
). This allows users to use duration strings to set arbitrary durations (1d
,1h30m
,5m
, etc.) - Updated Postgres settings to allow certain basic connection settings that were neglected before.
- Added a
docker.network
field, which if set will automatically add all spawned workers to the specified Docker network. This lets thegort
command bundle communicate with the API, for example.
Miscellaneous changes
- Certain env vars are now injected into worker containers as per the existing documentation.
- Bundle commands
executable
field is now a list instead of a simple string. This allows bundle commands to be served by binary subcommands (for example,!gort:user
has an executable of[ "/bin/gort", "user" ]
. - Lots and lots of tweaks and bug fixes.
v0.8.0-beta.1
This is likely to be our final beta release for v0.8.0!
It includes:
- A
permission info
subcommand (#81). - Improved formatting for
user list
(#79 and #80) - The
bootstrap
command no longer accepts an email, password, or username. Theadmin
account is expected to be used to create a daily use account, and its routine use should be discouraged (#78)
...and that's it!
As usual, suggestions, bug fixes, and other contributions are welcome.
v0.8.0-beta.0
With this release, we're finally declaring Gort to be minimally viable. You can deploy the Gort controller, create and install command bundles, manage users, and trigger commands via Slack.
This does NOT mean that it's feature complete! In fact, it's still missing some very important features (dynamic command configuration and templates are particularly glaring). These will be implemented over the next few months.
Just a few updates in this release:
- Added some missing functionality for managing profiles (#71)
- Fixed a bug in which alternative profiles wouldn't work on the command line (#75)
- Removed the entire concept of default bundles, since they added quite a bit of complexity for very little value (#41)
- Added "long descriptions" to bundle commands, and made
!help COMMAND
output it (#70)
v0.8.0-alpha.2
We're moving ever-closer to a beta release for the Gort MVP!
Changes in the release were focused around filling gaps in the CLI command functionality:
- A new
!help
command (provided by thehidden command
subcommand) to retrieve information about specific bundle commands. (#60) - A new
permission list
subcommand (#67) - A new
bundle versions
subcommand (#61) - A new
role info
subcommand (#55)
Also, many thanks to @theothertomelliott for ensuring that the Gort Guide's quickstart instructions actually work!
v0.8.0-alpha.1
This revision includes a ton of bug fixes, and even some new functionality in places where we found it necessary.
Miscellaneous changes
- Certain env vars are now injected into worker containers as per the existing documentation.
- Bundle commands
executable
field is now a list instead of a simple string. This allows bundle commands to be served by binary subcommands (for example,!gort:user
has an executable of[ "/bin/gort", "user" ]
. - Fixed a bug in which commands would only send part of their output to Slack.
- Found and fixed a rare data race in
dataaccess.initializeDataAccess()
discovered by the race tester. Thanks, race tester!
Command changes
- All commands were reviewed for consistency. Most were updated at least for help text; some names were changed.
- Added of a
gort role list
subcommand. - Added a
hidden
subcommand togort
, under which commands intended to be used primarily via the Gort bundle (but not harmful if they're discovered and used via the CLI) can live (ex.,!gort:help
is served bygort hidden command
)
Controller configuration changes
- Updated configuration to use durations for time-based configurations (for example,
command_timeout_seconds: 60
becomescommand_timeout: 60s
). This allows users to use duration strings to set arbitrary durations (1d
,1h30m
,5m
, etc.) - Fixed a bug in which certain database configs were being ignored
- Updated Postgres settings to allow certain basic connection settings that were neglected before.
- Added a
docker.network
field, which if set will automatically add all spawned workers to the specified Docker network. This lets thegort
command bundle communicate with the API, for example.
There are still quite a few gaps that we've identified that need to be fixed before beta, but we're now one step closer.
v0.8.0-alpha.0 -- MVP alpha release!
This (pre-)release focuses on authentication and authorization, and includes a fully-functional RBAC implementation for bundle commands. We consider this to be the "killer feature" for Gort, and we're very excited for its completion.
With this release, Gort is now considered to be minimally feature complete. There will be bugs, of course. There will be rough spots. Lots of them. But as of this (pre-)release you could theoretically set up and execute a complete ChatOps solution with RBAC.
Changes include:
- Roles and permissions. Roles group one or more permissions, and can be granted to groups. Groups are groups of users. Includes the addition of the
gort role
CLI subcommands. - Command rules and permissions. Permissions and execution rules are fully implemented. This is a major feature. See the Gort Guide for more details.
- Default Gort Bundle. When first bootstrapped, a Gort deployment receives a default
gort
bundle for basic administration. It includes several rules that restrict execution to the administrator (and anybody who may get the appropriate permissions in the future). - Addition of RBAC to REST API. The REST API now performs user authentication and authorization by comparing the given function against the rules defined in the default Gort bundle. So, if you can execute the default Gort command, you can execute the same function via the API.
v0.7.0-dev.0
The set of changes in this release are relatively small, and are as follows:
- The former
gortctl
commands have now been integrated intogort
. - If the
database
section is missing from the configuration file, Gort will automatically use an in-memory data store. This is intended entirely for trialing and development! - Several significant under-the-cover improvements to the core adapter logic.
- Fixed race conditions in
config/config.go
anddataaccess/dal-singleton.go
. - As always, more (and better) tests.
v0.6.0-dev.0 -- Focus on Observability!
Milestone 6 of Gort focuses on basic observability, and introduces some good functionality in that domain:
-
A
/healthz
endpoint that actually does a (still not particularly fancy) check of the data layer (no relay check yet), returning a status 200 if healthy, and a503 Service Unavailable
otherwise. -
A
/metrics
endpoint for exposing some rudimentary metrics to Prometheus. -
Traces are constructed for all REST and chat-initiated events, and can be sent to Jaeger if the deployment is so configured (more providers to come).
-
All command attempts (successful and otherwise), along with a unique id (including the executing user, the command executed, the bundle triggered, the resulting status code, etc) are written to the
commands
table in the database. The request ID is also propagated to log events and traces for cross-inspection.
v0.5.6-dev.0
v0.5.6-dev.0 Add foundations of tracing; keep user values on context …
v0.4.6-dev.7
Getgort