Skip to content

feat(otel): normalize host-style provider aliases to canonical names #19863

feat(otel): normalize host-style provider aliases to canonical names

feat(otel): normalize host-style provider aliases to canonical names #19863

Workflow file for this run

name: 🏷️ Auto Assign PR
on:
workflow_call:
pull_request:
types: [opened, reopened, synchronize, ready_for_review]
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
assign_pr_creator_or_pusher:
name: Assign PR Creator or Pusher
runs-on: ubuntu-latest
timeout-minutes: 1
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
permissions:
pull-requests: write
steps:
- name: Determine user to assign
id: get_assignee_user
env:
EVENT_ACTION: ${{ github.event.action }}
SENDER_LOGIN: ${{ github.event.sender.login }}
PR_AUTHOR_LOGIN: ${{ github.event.pull_request.user.login }}
run: |
ASSIGN_USER=""
EVENT_ACTOR=""
if [[ "${EVENT_ACTION}" == "synchronize" ]]; then
EVENT_ACTOR="${SENDER_LOGIN}"
else
EVENT_ACTOR="${PR_AUTHOR_LOGIN}"
fi
KNOWN_BOTS=("dependabot[bot]" "github-actions[bot]" "github-copilot[bot]" "copilot-bot[bot]")
IS_KNOWN_BOT=false
for BOT in "${KNOWN_BOTS[@]}"; do
if [[ "$EVENT_ACTOR" == "$BOT" ]]; then
IS_KNOWN_BOT=true
break
fi
done
if $IS_KNOWN_BOT || [[ "$EVENT_ACTOR" =~ \[bot\]$ ]]; then
echo "Skipping bot user: $EVENT_ACTOR"
ASSIGN_USER=""
else
ASSIGN_USER="$EVENT_ACTOR"
echo "Determined user: $ASSIGN_USER"
fi
echo "assigned_user=$ASSIGN_USER" >> "$GITHUB_OUTPUT"
- name: Assign PR to determined user
if: steps.get_assignee_user.outputs.assigned_user != ''
run: |
PR_NUMBER="${{ github.event.pull_request.number }}"
ASSIGN_USER_LOGIN="${{ steps.get_assignee_user.outputs.assigned_user }}"
echo "Attempting to assign PR #$PR_NUMBER to $ASSIGN_USER_LOGIN"
# Notes:
# - If the user is already assigned, `gh pr edit` succeeds without error.
# - External-collaborator PRs may fail outright (token lacks write on that user) — we
# log and continue rather than failing the workflow.
# - GitHub can also silently ignore assignees without push access while still exiting 0,
# so we re-read the PR's assignees after the edit and confirm the user actually landed
# before logging success.
if gh pr edit "$PR_NUMBER" --add-assignee "$ASSIGN_USER_LOGIN" --repo "${{ github.repository }}"; then
CURRENT_ASSIGNEES="$(gh pr view "$PR_NUMBER" --repo "${{ github.repository }}" --json assignees --jq '.assignees[].login' 2>/dev/null || true)"
if grep -Fxq "$ASSIGN_USER_LOGIN" <<<"$CURRENT_ASSIGNEES"; then
echo "Successfully assigned PR #$PR_NUMBER to $ASSIGN_USER_LOGIN"
else
echo "⚠ gh pr edit returned success but $ASSIGN_USER_LOGIN is not in the assignees list (likely silently ignored by GitHub — no push access)"
fi
else
echo "❌ Failed to assign PR #$PR_NUMBER to $ASSIGN_USER_LOGIN, likely an external collaborator"
fi