Description
Describe the bug
I'm consistently receiving 404 errors when calling the github.rest.git.getTree
API. From my testing it appears the URL parameter ?tree=
is causing the issue, as if the API does not support this.
To Reproduce
my GithHub action is configured as:
- name: Commit Changes
id: commit-changes
uses: actions/github-script@v7
env:
BRANCH: ${{ inputs.branch }}
with:
retries: 3
github-token: ${{ steps.app-token.outputs.token }}
script: |
const tree = await github.rest.git.getTree({
owner: context.repo.owner,
repo: context.repo.repo,
tree: process.env.BRANCH,
})
where inputs.branch
is set to main
, and the 404 response is:
RequestError [HttpError]: Not Found
at /home/runner/work/_actions/actions/github-script/v7/dist/index.js:9537:21
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async requestWithGraphqlErrorHandling (/home/runner/work/_actions/actions/github-script/v7/dist/index.js:9276:20)
at async Job.doExecute (/home/runner/work/_actions/actions/github-script/v7/dist/index.js:10275:18) {
status: 404,
response: {
url: 'https://api.github.com/repos/<my_org>/<my_repo>/git/trees/?tree=main',
status: 404,
headers: {
....
},
data: {
message: 'Not Found',
documentation_url: 'https://docs.github.com/rest/git/trees#get-a-tree',
status: '404'
}
When I test locally with Curl, this is what I see:
export TREE="https://api.github.com/repos/$OWNER/$REPO/git/trees/main"
curl -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer $TOKEN" \
-H "X-GitHub-Api-Version: 2022-11-28" \
"$TREE"
and the output is:
{
"sha": "ff70bc62cd0fb0a01bd14a2b332b6b106b32ae38",
"url": "https://api.github.com/repos/<my_org>/<my_repo>/git/trees/ff70bc62cd0fb0a01bd14a2b332b6b106b32ae38",
"tree": [
{
"path": ".github",
"mode": "040000",
"type": "tree",
"sha": "795e917b75291b5c0fa3fa219401bce1801420b5",
"url": "https://api.github.com/repos/<my_org>/<my_repo>/git/trees/795e917b75291b5c0fa3fa219401bce1801420b5"
},
...
When I run the same test, but include the ?tree=
parameter, I get the same 404 error:
export TREE="https://api.github.com/repos/$OWNER/$REPO/git/trees/?tree=main"
curl -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer $TOKEN" \
-H "X-GitHub-Api-Version: 2022-11-28" \
"$TREE
and the output is:
{
"message": "Not Found",
"documentation_url": "https://docs.github.com/rest/git/trees#get-a-tree",
"status": "404"
}
Expected behavior
I expect a tree object to be returned.
Screenshots
RequestError [HttpError]: Not Found
at /home/runner/work/_actions/actions/github-script/v7/dist/index.js:9537:21
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async requestWithGraphqlErrorHandling (/home/runner/work/_actions/actions/github-script/v7/dist/index.js:9276:20)
at async Job.doExecute (/home/runner/work/_actions/actions/github-script/v7/dist/index.js:10275:18) {
status: 404,
response: {
url: 'https://api.github.com/repos/<my_org>/<my_repo>/git/trees/?tree=main',
status: 404,
headers: {
....
},
data: {
message: 'Not Found',
documentation_url: 'https://docs.github.com/rest/git/trees#get-a-tree',
status: '404'
}
Desktop (please complete the following information):
N/A
Smartphone (please complete the following information):
N/A
Additional context
Unless I'm misunderstanding how to use this API, it appears to be a bug.