Introduce the CommandExecutor interface to abstract command execution,
allowing for easier mocking in tests. Implement DefaultCommandExecutor
to use the os/exec package for executing commands. Update the
GenerateCosmoRouterConfig function to utilize the new
GenerateCosmoRouterConfigWithExecutor function that accepts a command
executor parameter. Add a MockCommandExecutor for simulating command
execution in unit tests with realistic behavior based on input YAML
files. This enhances test coverage and simplifies error handling.
Update version check to validate it is a non-empty string. Improve
assertions for the subscription configuration by ensuring the presence
of required fields and correct types. Adapt checks for routing URLs
and decentralize subscription validation for more robust testing.
These changes ensure better verification of configuration
integrity and correctness in test scenarios.
Implements the `latestSchema` query to fetch the latest schema
updates for an organization. This change enhances the GraphQL API by
allowing clients to retrieve the most recent schema version and its
associated subgraphs. The resolver performs necessary access checks,
logs relevant information, and generates the Cosmo router configuration
from fetched subgraph SDLs, returning structured schema update details.
Adds unit tests for the WebSocket initialization function to validate
behavior with valid, invalid, and absent API keys. Introduces a mock
cache implementation to simulate organization retrieval based on
hashed API keys. Ensures proper context value setting upon
initialization, enhancing test coverage and reliability for API key
handling in WebSocket connections.
Refactor API key processing to improve clarity and reduce code
duplication. Introduce detailed logging for schema updates and
initializations, capturing relevant context information. Use
background context for async operations to avoid blocking.
Implement organization lookup logic in the WebSocket init
function for consistent API key handling across connections.
Creates a new `GenerateCosmoRouterConfig` function to build and
serialize a Cosmo Router configuration from subgraphs. Implements
PubSub mechanism for managing schema updates, allowing
subscription to updates. Adds Subscription resolver and updates
existing structures to accommodate new functionalities. This
enhances the system's capabilities for dynamic updates and
configuration management.
This commit introduces a new configuration file for git-cliff to
automate changelog generation. It defines templates for the header,
body, and footer of the changelog, ensuring that all notable changes
are documented effectively. The configuration enables parsing of
conventional commit messages, allowing for better organization of
changes by type. This enhancement streamlines the release process and
improves project maintainability.
Remove the conflicts entry for the unbound-schemas formula in the
homebrew-taps configuration to simplify the integration process. This
change enhances compatibility and streamlines the build setup.
Inject the build version into the binary using the CI_COMMIT
argument for better traceability of deployments. Update the
Dockerfile to pass the commit hash to the build process,
ensuring that each build contains version information tied
to the specific commit.
Add the OTEL_EXPORTER_OTLP_ENDPOINT environment variable to
the deployment configuration. This change enables the application
to send telemetry data to the specified OpenTelemetry collector
endpoint for better monitoring and observability.
Remove Sentry dependencies and configuration. Introduce monitoring
setup for OpenTelemetry. Update logging to include log format
options, and replace Sentry error handling middleware with
monitoring handlers for GraphQL playground. Adjust environment
variable handling to enhance configuration clarity and flexibility.
Adds the binary name "schemactl" to the Goreleaser
configuration file to ensure proper build and release
process for the Homebrew tap. This improves clarity
and correctness in the configuration.
Update apiVersion in the secrets.yaml file from v1beta1 to v1 to
ensure compatibility with the latest external-secrets API. This
change maintains the stability and functionality of secrets
management in Kubernetes deployments.
Adds a new template file 'Defaults.gitlab-ci.yml' to the CI
configuration and adjusts the include path for clarity. This
ensures better organization and standardization in the CI/CD
processes associated with the project.
Create a PodDisruptionBudget to ensure minimum availability of the
schemas service during voluntary disruptions. This enhances the
service's resilience and ensures high availability.
Add a context with timeout to handle graceful shutdown of the HTTP
server. Update error handling during the server's close to include
context-aware shutdown. Ensure that the server properly logs only
non-closed errors when listening.
Removes the CPU and memory limits for the schemas container in the
Kubernetes deployment configuration. This change is made to allow
for greater flexibility in resource allocation based on runtime
demands, ensuring better performance in varying load conditions.
This change removes the namespace field from the ExternalSecret
definition in the secrets.yaml file, allowing for more flexible
deployment within different namespaces without the need for
modification.
Add a new extract for RabbitMQ in the secrets and include
AMQP_URL in local secrets. Update the merge policy and
engine version in the deployment template. Remove unused
RabbitMQ secret reference from the deployment. These changes
improve configuration management and ensure consistency
between environments.
Introduce types for managing fielded, enum, union, and scalar shared types.
Implement functionality for comparing values and creating field sets.
Enhance schema extensions by integrating new visitors for enum types.
Adds a new package group for Eventsourced to the Renovate configuration.
This change improves dependency management by organizing related
packages under a specific group for better update tracking.
Change the base image in the Dockerfile to use the amd64
architecture. This ensures compatibility with the target
environment and resolves issues related to image
compatibility during the build process.
Updates the following dependencies to their latest stable versions:
- golang.org/x/crypto to v0.33.0
- golang.org/x/mod to v0.23.0
- golang.org/x/net to v0.35.0
- golang.org/x/sync to v0.11.0
- golang.org/x/sys to v0.30.0
- golang.org/x/text to v0.22.0
- golang.org/x/tools to v0.30.0
These changes ensure compatibility with the latest features and fixes, enhancing overall project stability and performance.
Updates the Go version in go.mod to 1.23.6 and removes the toolchain
line to simplify the module configuration. This ensures compatibility
with the latest Go features and improvements.
Adds a resource group to the production deployment configuration in
the GitLab CI/CD pipeline. This change ensures that the deployment
process is correctly associated with the specified resource group,
enhancing the deployment's reliability and clarity.
Changes the golang image used in the build and check stages from
a generic image to the amd64 variant. This ensures better
compatibility with the tools and libraries being used in the
pipeline.
Update Kubernetes YAML files to replace the app label with the
standard app.kubernetes.io/name label for better consistency
and adherence to best practices in Kubernetes resource labeling.
Sets a timeout of 5 minutes for golangci-lint runs to ensure that
linting completes in a timely manner and prevents long-running
processes from blocking the CI pipeline.
Reduces the CPU request from "100m" to "10m" in the deploy.yaml file to
optimize resource usage and improve deployment efficiency in the
Kubernetes environment. This change helps to allocate resources more
effectively while maintaining application performance.
Removes the unnecessary docker service from the buildtools image
configuration to simplify the CI pipeline setup and reduce resource
usage. This change streamlines the CI process without impacting
functionality.
Removes unused Docker-related variables from the CI configuration to
simplify the setup. This streamlines the CI process by eliminating
settings that are no longer needed, enhancing clarity and maintenance.
Removes the `run-pre-commit` job from the CI configuration to streamline
the pipeline and reduce unnecessary complexity. Adds inclusion of a new
pre-commit template specifically for Go projects to ensure proper linting
and formatting checks are performed in the CI process.
Adds a package rule to disable updates for the
'unboundsoftware/schemas' package in Kubernetes.
Modifies the image reference in the deployment
configuration to remove the specific SHA256 hash
and use a dynamic commit tag instead. This
improves maintainability and aligns with the
latest deployment practices.