github-script icon indicating copy to clipboard operation
github-script copied to clipboard

Using the API to download diff from private project

Open asudhak opened this issue 3 years ago • 2 comments

The README has a good example to obtain the diff of a given pull request using const diff_url = context.payload.pull_request.diff_url

However, there's a note that says "(Note that this particular example only works for a public URL, where the diff URL is publicly accessible. Getting the diff for a private URL requires using the API.)"

What does using the API mean ? How do I add credentials to the github oktokit client to allow it to fetch the diff URL from my private repo ? The diff_url I'm trying to access is part of the same project in which the workflow runs.

asudhak avatar Aug 17 '22 20:08 asudhak

This is likely related to https://github.com/actions/github-script/issues/272.

Using the octokit exposed via the github argument, you should be able to retreive the diff, however it does not work because of the above issue. For example, this should work but it does not with actions/github-script:

# This does not work because headers are stripped
name: Get PR diff
on: pull_request
jobs:
  diff:
    name: Diff
    runs-on: ubuntu-latest
    steps:
      - name: Diff
        uses: actions/[email protected]
        with:
          script: |
            const pull_url = context.payload.pull_request.url
            const result = await github.rest.pulls.get({
              ...context.repo,
              pull_number: context.payload.pull_request.number,
              mediaType: {
                format: "diff",
              },
            });
            console.log(result)

philip-gai avatar Aug 18 '22 05:08 philip-gai

https://github.com/DataDog/integrations-core/blob/c4070ffa9cfaad57420f8e3c92a4877f62cfd5c5/.github/workflows/pr-quick-check.yml#L35-L45

ofek avatar Aug 24 '23 05:08 ofek