Add compile-time validation for runtime-import expressions #10312
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.
Runtime-import files were only validated at runtime, allowing workflows with invalid expressions to pass compilation and fail later during execution.
Changes
Expression validation (
pkg/workflow/expression_validation.go):extractRuntimeImportPaths()- Extracts file paths from{{#runtime-import filepath}}syntax, filtering out URLsvalidateRuntimeImportFiles()- Reads imported files and validates expressions against the allowed list at compile timeCompiler integration (
pkg/workflow/compiler.go):Test coverage (
pkg/workflow/runtime_import_validation_test.go):Example
With a shared file containing unsafe expressions:
<!-- .github/shared/instructions.md --> Token: ${{ secrets.GITHUB_TOKEN }} Runner: ${{ runner.os }}Compilation now fails early:
Previously this would compile successfully and fail at runtime.
Note: This PR only supports the
{{#runtime-import}}macro syntax. The@./pathinline syntax was removed from the main branch and is not supported.Original prompt
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.