Releases: gatewayd-io/gatewayd
v0.10.0
v0.9.10
This release marks the culmination of the v0.9.x milestone, packed with significant new features, fixes, and enhancements that have made GatewayD more robust, stable, and scalable. Key highlights include the introduction of the policy engine, aka. the Act system, in v0.9.0, the plugin scaffold feature in v0.9.5, and the load balancing feature in v0.9.7, among many others.
Over the course of this milestone, we merged 89 squashed commits into the main
branch, resolved 30 issues, reviewed numerous PRs and published 11 releases — thanks to the perseverance and contributions of our amazing community. None of this would have been possible without their dedication.
Looking ahead, there's even more in store, and we invite you to get involved. Whether you're a user or a tester, your participation is crucial. If you're ready to contribute, @mostafa is here to support you every step of the way.
Full Changelog: v0.9.9...v0.9.10
v0.9.9
What's Changed
- Add metric labels by @mostafa in #612
- Add test for
plugin scaffold
command by @mostafa in #613 - Refactor
interface{}
toany
by @mostafa in #614 - Refactor
proxy.shouldTerminate
function and move the functionality toAct.Registry
by @mostafa in #615 - Use the result of notification hooks by @mostafa in #616
- Update deps by @mostafa in #621
Full Changelog: v0.9.8...v0.9.9
v0.9.8
This release introduces several key enhancements and fixes. A significant improvement is the integration of PostgreSQL test containers for seamless integration testing, replacing hardcoded addresses with dynamic test container addresses. This ensures a consistent test environment across various packages such as api
, cmd
, and network
, and centralizes the setup in a reusable function. Additionally, dependency updates were made, including the latest GatewayD SDK, and the gomoddirectives
linter was disabled to streamline development. The plugin configuration was updated to utilize the cache plugin version 0.4.0. A major bug has been fixed that improved handling of PostgreSQL's COPY
command, as explained here, plus other bugfixes and improvements.
This wouldn't be possible without @sinadarbouy's contributions. 🙏
What's Changed
- Add PostgreSQL Test Containers for Integration Testing by @sinadarbouy in #602
- Update deps by @mostafa in #609
- Fix bug in handling postgres
COPY
command and a few others by @mostafa in #610
Full Changelog: v0.9.7...v0.9.8
v0.9.7
This release contain a major change, where each tenant can now connect to multiple databases, contrary to the previous one-tenant-one-database approach, and use server load balancing strategies to distribute the load among these databases. Random, round robin and weighted RR strategies with consistent hashing are supported, thanks to @sinadarbouy and @eabasir for their contributions.
What's Changed
- Changed the log level for plugin startup failures from debug to error by @sinadarbouy in #560
- Update deps by @mostafa in #561
- Remove the enforced value of the ARCH in docker-compose by @eabasir in #562
- Feature/integrate docker scout with git hub actions by @sinadarbouy in #564
- Bugfix/workflow vulnerability comparison by @sinadarbouy in #569
- add Tempo, Prometheus and Grafana to docker-compose by @eabasir in #571
- Update deps by @mostafa in #576
- Feature: enable multi pool client connections by @sinadarbouy in #577
- Fix casting of client connections upon enumeration by @mostafa in #584
- Update golangci lint and clean up code by @mostafa in #586
- Fix parameters camelCase support in loadEnvVars for environment variable parsing by @sinadarbouy in #588
- Fix/env vars expect lower case letters by @sinadarbouy in #587
- Add Multi-Proxy Support to Docker-Compose by @sinadarbouy in #589
- Add Random Load Balancing Strategy by @sinadarbouy in #590
- Add Weighted Round Robin Algorithm to Load Balancer by @sinadarbouy in #591
- Add Consistent Hashing Load Balancing Strategy by @sinadarbouy in #592
- Fix Consistent Hashing to Use Remote Address Instead of Local Address by @sinadarbouy in #599
- Update deps by @mostafa in #600
New Contributors
Full Changelog: v0.9.6...v0.9.7
v0.9.6
In this release of GatewayD, several updates and fixes have been made. Support for queueing asynchronous actions in the background was added (thanks to @Hamsajj 🙏). This feature allows the output of policy evaluation by Act to be published to a Pub/Sub queue on Redis and plugin and external consumers can consume and run arbitrary actions based on that.
Provenance attestation and SBOM features were added, along with an Alpine update. Setup issues were resolved. The REDIS_URL
environment variable can be used to setup the cache plugin. The policy input has been enriched to include plugin parameters and its result for better policy evaluation. Dependencies were updated, including a bump of grpc-gateway
to version 2.20.0. The Dockerfile linting was added to the CI workflow.
Additionally, an issue with IP address binding that prevented external access to the containers from the host machine was fixed (thanks to @sinadarbouy 🙏).
What's Changed
- Add provenancce attestation and SBOM and update Alpine by @mostafa in #534
- Add badge by @mostafa in #535
- Fix setup issues by @mostafa in #538
- Use
REDIS_URL
to set up the cache plugin by @mostafa in #539 - Enrich policy input by @mostafa in #540
- Bump github.com/grpc-ecosystem/grpc-gateway/v2 from 2.19.1 to 2.20.0 by @dependabot in #536
- Lint dockerfile by @mostafa in #543
- Update deps by @mostafa in #550
- feat(464): add support for queueing async actions in background by @Hamsajj in #544
- Fix IP Address Binding Issue to Allow External Access from Host Machine by @sinadarbouy in #552
New Contributors
- @sinadarbouy made their first contribution in #552
Full Changelog: v0.9.5...v0.9.6
v0.9.5
This release contains a lot of improvements to the overall reliability and stability of GatewayD and a very nice feature contributed by @zeina1i (thank you 🙏). This release also has two first-time contributors: @ChrisD-Git and @smnmna99, which we are really grateful for (thank you🙏).
-
Plugin scaffolding feature: Previously the plugin template for Go was the go-to method for developing new plugins for GatewayD. @zeina1i integrated the template into the GatewayD CLI, so that you can create a new plugin scaffold and be able to test it in one place using the following command.
$ gatewayd plugin scaffold -h Scaffold a plugin and store the files into a directory Usage: gatewayd plugin scaffold [flags] Flags: -h, --help help for scaffold -i, --input-file string Plugin scaffold input file (default "input.yaml") -o, --output-dir string Output directory for the scaffold (default "./plugins")
An example input file is as follows. Note that the repository name defines the plugin name.
remote_url: https://github.com/gatewayd/test-gatewayd-plugin version: 0.1.0 description: This is test plugin license: MIT authors: - Author 1 <[email protected]>
For more information, please refer to the updated Plugin Developers' Guide in the docs.
-
New security policy: @ChrisD-Git contributed the security policy and guidelines, which should be followed when reporting vulnerabilities.
-
@smnmna99 added OpenTelemetry tracing to the API, which means that almost everything in GatewayD can now be traced using OTLP gRPC.
What's Changed
- Add more tests by @mostafa in #513
- Add more tests by @mostafa in #515
- Update SDK and deps by @mostafa in #520
- Implement plugin scaffold by @zeina1i in #518
- Bump github.com/docker/docker from 23.0.1+incompatible to 24.0.9+incompatible by @dependabot in #521
- Bump github.com/go-git/go-git/v5 from 5.5.2 to 5.11.0 by @dependabot in #522
- Bump github.com/docker/distribution from 2.8.1+incompatible to 2.8.2+incompatible by @dependabot in #523
- Create SECURITY.md by @ChrisD-Git in #524
- Update deps by @mostafa in #527
- Add tracing to the API by @smnmna99 in #517
- Add
gatewayd plugin scaffold
CLI docs by @mostafa in #528 - Update deps by @mostafa in #532
New Contributors
- @ChrisD-Git made their first contribution in #524
- @smnmna99 made their first contribution in #517
Full Changelog: v0.9.4...v0.9.5
v0.9.4
This is a maintenance release and it contains a lot of fixes and improvements to linting, dependency updates, build process and fixes for issues found during code inspection. The last piece of the puzzle is contributed by @likecodingloveproblems (thank you! 🙏) in #503, where he went through all the code and updated the signature of all the constructor function to receive structs, instead of individual parameters. This helps ensure code quality is on par with the latest best practices in Go ecosystem.
What's Changed
- Lint with shellcheck by @mostafa in #500
- Update dependencies and fix issues by @mostafa in #505
- Improve Makefile by combining all build targets for different platforms into a single target by @mostafa in #507
- Fix issues found during code inspection by @mostafa in #508
- Passing struct to new functions by @likecodingloveproblems in #503
New Contributors
- @likecodingloveproblems made their first contribution in #503
Full Changelog: v0.9.3...v0.9.4
v0.9.3
This release introduces several updates and improvements, marking a collaborative effort among multiple contributors. Key changes in this release include:
- Action timeout: @Hamsajj introduced a timeout for running actions, which helps in preventing actions from hanging indefinitely. This improvement contributes to the reliability of GatewayD by ensuring that actions complete in a timely manner or terminate if they exceed the specified timeout period. There are two timeouts: Act registry timeout and action timeout. Individual actions can override the registry timeout.
- Graceful shutdown for gRPC and HTTP servers: implemented by @zeina1i, this feature introduces a graceful shutdown process for both gRPC and HTTP servers, ensuring that servers terminate their processes smoothly without abrupt interruptions, thereby preventing potential data loss or corruption and also smooth cleaning up of the resources.
- Markdown generation for
gatewayd
command: this enhancement allows for automatic generation of markdown docs from command help texts. - HTTP server bugfixes: this update fixes errors within the HTTP server, enhancing stability and reliability for end-users.
- Dependency updates: the dependency updates ensure GatewayD stays compatible with other packages and secure from vulnerabilities found in older versions of dependencies.
The release is a good example of the collaborative effort of the community, thanks to @Hamsajj and @zeina1i for their contributions.
What's Changed
- Generate markdown from commands' help by @mostafa in #489
- Add graceful shutdown for grpc server and http server by @zeina1i in #490
- Update deps by @mostafa in #495
- Update SDK by @mostafa in #497
- Add timeout for running actions by @Hamsajj in #496
- Fix HTTP Server errors by @mostafa in #498
New Contributors
Full Changelog: v0.9.2...v0.9.3
v0.9.2
This release includes:
- Improvements to the
gatewayd plugin install
command, now featuring a new option,--skip-path-slip-verification
. This allows bypassing Tar and Zip Slip verification, facilitating the extraction and installation of plugins into absolute paths in isolated environments such as Docker. - A significant update to the Docker compose file, with the addition of a new service called
install_plugins
that utilizes an Alpine image. This service executes thesetup.sh
script to download and install GatewayD and its plugins. Additionally, a Redis image has been used to ensure the cache plugin functions correctly. The GatewayD ports have been made accessible to the host system. - Fixing a bug where GatewayD would not shut down gracefully and the plugin registry failed to close properly when GatewayD fails to establish a new connection to PostgreSQL on boot. The client retry mechanism exits the GatewayD process abruptly without proper cleanup, leaving plugins orphaned.
- GatewayD is now a sponsored OSS project by Docker, Inc. The Docker image for GatewayD has transitioned to using Docker Hub for distribution. The GHCR image will still be published as a backup.
What's Changed
- Use Docker Hub image by @mostafa in ae6e067
- Make sure to stop the plugin registry gracefully if the database is not available by @mostafa in #483
- Fix plugin install errors by @mostafa in #484
- Revamp docker compose by @mostafa in #485
Full Changelog: v0.9.1...v0.9.2