fix: interpolate ${{ }} expressions in job container volumes - #6141
Open
waterWang wants to merge 1 commit into
Open
fix: interpolate ${{ }} expressions in job container volumes#6141waterWang wants to merge 1 commit into
waterWang wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
When a workflow job uses a container with volumes that contain
${{ }}expressions (e.g.,${{ vars.BUILDDOC_WEBDIR || /var/www/html/poubelle }}), the expressions are not interpolated before validation. This causes the volume to be rejected with an error like:Root Cause
The
GetBindsAndMounts()method processes job container volumes directly from the parsed YAML model without running them through the expression evaluator (rc.ExprEval.Interpolate).In contrast, the service container volumes are correctly interpolated at line 310-312 before being passed to
GetServiceBindsAndMounts(). The job container volumes path was simply missing this interpolation step.Fix
ctx context.Contextparameter toGetBindsAndMounts()rc.ExprEval.Interpolate(ctx, v)call for each volume path before validationctxTesting
ExprEval.Interpolate()method handles${{ }}expressions that can't be evaluated (non-existent vars, syntax errors) by returning the original string unchanged, so existing workflows without expressions continue to work exactly as before