Squash Orchestrator 6.0.0 Release Note
Introduction
Squash Orchestrator is a set of micro-services to perform automated test execution workflows described in a specific format.
This release note describes the changes of Squash Orchestrator version 6.0.0 compared to 5.1.0.
Squash Orchestrator 6.0.0 was released on May 5, 2025.
New features
-
Issue orchestrator #488 Allow to define the desired concurrency level for a given workflow or group of workflows
Issue orchestrator #698 Emit Notifications on concurrency group changes
Issue orchestrator #695 Improve error message if two tasks from the same workflow attempt to enter the same group concurrently
It is now possible to define, for a workflow or a job, a concurrency group. This parameter is used to disable the concurrency between different workflows or jobs, based on the value set in the parameter. More information can be found here. -
Issue orchestrator #644 Retention period for unreachable agents
The orchestrator will now automatically remove unreachable agents after a certain time. This is done through the configurable parameterunreachable_deregistration_timeout_minutes
, set by default to60
. It is now also possible to set the default value for the liveness probe, through theliveness_limit_seconds
parameter. More information can be found here. -
Issue orchestrator #455 A workflow affected to a deleted agent should be killed
Deleting an agent will now stop the assigned workflow. -
Issue orchestrator #471 Add a PENDING status for workflows
Workflows can now have aPENDING
status. It is used to define a workflow that has not done anything yet, for example if it is still waiting for an execution environment (and no job already started). -
Issue orchestrator #668 Make the attachments retention period configurable
A new context parameterretention_period_minutes
is now available in the localstore to configure the attachment retention. A new environment variableRETENTION_PERIOD_MINUTES
can also be used to control the value for both the localstore and the observer. -
Issue python-toolkit #205 Provide a default /health endpoint
Issue orchestrator #346 Add a health check endpoint
A newGET /health
endpoint has been added to all the services. This endpoint can be used to ping a service to check if it's alive and accessible. The request will return anOK
, with a204
status code. It is by default authenticated and it can be set as insecure if needed, through theenable_insecure_healthcheck_endpoint
context parameter. -
Issue orchestrator #667 The receptionist service should support inputs
Issue python-toolkit #203 Allow validate_inputs to work with non-normalized declarations
It is now possible to add inputs when running a workflow, the feature is no longer restricted to a reusable workflow. -
Issue python-toolkit #199 Allow for 'choice' inputs
A new type of inputchoice
is now available, it is used to define a list of accepted values. Some examples can be found here. -
Issue python-toolkit #196 Startup.sh should use JAVA_TRUSTSTORE, not assume default cacerts.
In some cases, the default Java truststore could cause some permission issues, preventing the addition of a new certificate. It has now been moved to another location (in/app/security/cacerts
) and a new environment variable JAVA_TRUSTSTORE is now available if necessary. -
Issue orchestrator #678 Channel handlers should be more selective in the offer they make
The orchestrator has been optimized to assign a workflow to the execution environment with the least tags, so that the more specialized environments are used in priority instead of the more generic ones. -
Issue python-toolkit #207 Validate service descriptors
Services (for example custom providers) could be launched even if the descriptor was incorrect. This could cause some errors during their utilization. The descriptor is now checked on startup. -
Issue python-toolkit #193 Improve get_context_parameter
Theavailability_check_delay
context parameter of the sshchannel and the agentchannel has been renamed asavailability_check_delay_seconds
. The previous name is still available to keep the backward compatibility. -
Issue orchestrator #656 Improve channel allocator
The channel allocator has been improved to reduce the time necessary to assign a job to an execution environment. -
Issue orchestrator #546 Expression errors in variables should cancel a workflow
Expression errors in thevariables
section used to stop the workflow with afailure
status. It is now cancelled instead to be more consistent with the other errors. -
Issue orchestrator #665 Improve /GET datasources endpoint workflow statuses handling
A call to the qualitygate on a workflow completed but with some workers still running will now show the results. -
Issue python-toolkit #204 Add step ids to GeneratorResult events
Depending on the implementation, generator plugins could create steps without ids, causing some issues with the datasource generation. Generators will now automatically add a step id if needed. -
Issue python-toolkit #201 Extract category helpers
Issue orchestrator #666 Add metadata.id field to Channel items in channel handlers notifications
Some technical improvements and pre-emptive work for future features.
Bug fixes
-
Issue orchestrator #694 Insight collector does not include scope parameter in paginated requests
In previous versions, reports generated by the insight collector could contain more tests than expected due to thescope
parameter not being taken into account in paginated requests. -
Issue python-toolkit #192 Temporary attachments for OPENTF_VARIABLES are not cleaned after use
Some temporary files were not cleaned up in the orchestrator (in/tmp
), they are now correctly removed after an execution. -
Issue orchestrator #679 Workflows cancelled before first job start block insight collector
The insight collector could be stuck when a workflow was cancelled before the first job even started, blocking also subsequent workflows. This has now been fixed. -
Issue orchestrator #696 Providing inputs to a reusable workflow not expecting them pass silently
No error was reported when undefined inputs were sent in a reusable workflow, the workflow will now stop with an explicit error.