diff --git a/.github/actions/metadata/action.yml b/.github/actions/metadata/action.yml index f88c7a305a..720636042c 100644 --- a/.github/actions/metadata/action.yml +++ b/.github/actions/metadata/action.yml @@ -108,15 +108,33 @@ runs: labels=$(gh api "/repos/${{ github.repository }}/issues/${{ github.event.number }}/labels" | jq -erc '. | map(.name)') else + # We can assume we're being triggered for a 'push' (a merge) is_draft='false' - # Look up the labels for the pull request that is associated with the last commit. If - # there are none set it as a JSON encoded empty array. - if pr_number=$(gh api "/repos/${{ github.repository }}/commits/${{ github.ref }}/pulls" | jq -erc '.[0].number'); then - if ! labels=$(gh api "/repos/${{ github.repository }}/issues/${pr_number}/labels" | jq -erc '. | map(.name)'); then - labels='[]' - fi - else + # Look up the pull request labels for the PR that is associated with + # the commit. If there are none set it as a JSON encoded empty array. + repo=$(printf ${{ github.repository }} | cut -d "/" -f2) + if ! labels=$(gh api graphql -F repo="$repo" -F sha="${{ steps.vault-metadata.outputs.vault-revision }}" -f query=' + query($repo: String!, $sha: String!){ + repository(name: $repo, owner: "hashicorp") { + commit: object(expression: $sha) { + ... on Commit { + associatedPullRequests(first:1){ + edges{ + node{ + labels(first: 10) { + nodes { + name + } + } + } + } + } + } + } + } + }' | jq -erc '.data.repository.commit.associatedPullRequests.edges[0].node.labels.nodes | map(.name)'); + then labels='[]' fi fi