- Notifications
You must be signed in to change notification settings - Fork469
Description
Describe the bug
I'm consistently receiving 404 errors when calling thegithub.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, })
whereinputs.branch
is set tomain
, 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.