Open aarontwf opened 2 years ago
Try putting it in with
directly instead of body
:
steps:
- uses: octokit/request-action@v2.x
with:
route: POST /repos/${{ github.repository }}/labels
name: React ${{ github.event.ref }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
I ran into the same issue for another endpoint. I think the documentation is not very clear on how to pass payload.
For anybody else who comes across this, if you wish to make a request with a JSON body containing nested values it must be done something like this:
steps:
- name: 'Construct Github Environment create / update request'
id: gh_env_req
run: |
_reviewers_json="$(cat <<EOF
[ { "type": "Team", "id": 0 } ]
EOF
)"
echo "::set-output name=reviewers_json::${_reviewers_json}"
- name: Create / Update Github environment
uses: octokit/request-action@v2.1.0
with:
route: 'PUT /repos/{repo_path}/environments/{env_name}'
repo_path: '${{ github.repository }}'
env_name: my-env
reviewers: '${{ steps.gh_env_req.outputs.reviewers_json }}'
If your request is static, you should probably be able to define the json contents of the nested field directly into the with:
block, but for my specific use-case the json is actually constructed with the output of a subsequent api call to get the ID of the reviewer's team, thus necessitating an additional step.
The heredoc syntax and spaces between json tokens are purely for readability and are not required.
@dcarbone 👋🏻 Would you be up for making a PR to improve the documentation? I'm sure other people will run into issues like this.
Sure, i'll work on one in a bit.
Constructing a JSON body in with
can be challenging. But I have found a simpler way to invoke the GitHub API. actions/github-script
looks pretty good.
steps:
- id: get_release_notes
uses: actions/github-script@v7
with:
# see syntax on https://octokit.github.io/rest.js/v20
script: |
const { data } = await github.rest.repos.generateReleaseNotes({
owner: '${{ github.repository_owner }}',
repo: '${{ github.event.repository.name }}',
tag_name: 'v1.0.0',
});
core.setOutput('data', data);
- name: Show release note
run: 'echo "${{ fromJSON(steps.get_release_notes.outputs.data).body }}"'
Hey, just wondering how JSON is supposed to be sent? Tried a few things but getting different errors back.
This is the API request I'm trying https://docs.github.com/en/rest/reference/issues#create-a-label