`hashFiles()` cannot be correctly used with `github.action_path` in composite actions
Describe the bug
hashFiles() does not permit . and .. segments in its arguments. However, when using a composite action from the same repository, github.action_path contains a trailing /./, as the argument to uses has to begin with . to be recognized as a path.
To Reproduce Steps to reproduce the behavior:
- In a blank repo, create a composite action at
.github/actions/foothat invokeshashFiles(format('{0}/bar.txt', github.action_path)). - Use that action in a workflow via
uses: ./.github/actions/fooand trigger the workflow. - See error
Expected behavior
It should be possible to use hashFiles() with github.action_path in a composite action. It shouldn't be necessary to have a separate Bash step that only exists to trim the last two characters off the end of the path.
Runner Version and Platform
Version of your runner? 2.322.0
OS of the machine running the runner? Ubuntu 24.0.2 LTS
What's not working?
##[debug]AssertionError [ERR_ASSERTION]: Invalid pattern '/home/runner/work/<repo>/./.github/actions/foo/bar.txt'. Relative pathing '.' and '..' is not allowed.
##[debug] at Pattern.fixupPattern (/home/runner/runners/2.322.0/bin/hashFiles/index.js:2188:25)
##[debug] at new Pattern (/home/runner/runners/2.322.0/bin/hashFiles/index.js:2102:27)
##[debug] at DefaultGlobber.<anonymous> (/home/runner/runners/2.322.0/bin/hashFiles/index.js:1423:42)
##[debug] at Generator.next (<anonymous>)
##[debug] at /home/runner/runners/2.322.0/bin/hashFiles/index.js:1269:71
##[debug] at new Promise (<anonymous>)
##[debug] at __webpack_modules__.8298.__awaiter (/home/runner/runners/2.322.0/bin/hashFiles/index.js:1265:12)
##[debug] at DefaultGlobber.create (/home/runner/runners/2.322.0/bin/hashFiles/index.js:1409:16)
##[debug] at Object.<anonymous> (/home/runner/runners/2.322.0/bin/hashFiles/index.js:1150:56)
##[debug] at Generator.next (<anonymous>) {
##[debug] generatedMessage: false,
##[debug] code: 'ERR_ASSERTION',
##[debug] actual: false,
##[debug] expected: true,
##[debug] operator: '=='
##[debug]}
##[debug]STDOUT/STDERR stream read finished.
##[debug]STDOUT/STDERR stream read finished.
Job Log Output
If applicable, include the relevant part of the job / step log output here. All sensitive information should already be masked out, but please double-check before pasting here.
N/A
Runner and Worker's Diagnostic Logs
If applicable, add relevant diagnostic log information. Logs are located in the runner's _diag folder. The runner logs are prefixed with Runner_ and the worker logs are prefixed with Worker_. Each job run correlates to a worker log. All sensitive information should already be masked out, but please double-check before pasting here.
N/A