diff --git a/.github/workflows/survey-on-merged-pr.yml b/.github/workflows/survey-on-merged-pr.yml new file mode 100644 index 000000000000..a7295670a140 --- /dev/null +++ b/.github/workflows/survey-on-merged-pr.yml @@ -0,0 +1,49 @@ +name: Survey on Merged PR by Non-Member + +on: + pull_request_target: + types: [closed] + +permissions: + contents: read + +env: + PR_NUM: ${{ github.event.pull_request.number }} + SURVEY_URL: https://docs.google.com/forms/d/e/1FAIpQLSf2FfCsW-DimeWzdQgfl0KDzT2UEAqu69_f7F2BVPSxVae1cQ/viewform?entry.1540511742=open-telemetry/opentelemetry-java-instrumentation + +jobs: + comment-on-pr: + name: Add survey to PR if author is not a member + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + if: github.event.pull_request.merged == true + steps: + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/create-github-app-token@v1 + id: otelbot-token + with: + app-id: ${{ vars.OTELBOT_APP_ID }} + private-key: ${{ secrets.OTELBOT_RIVATE_KEY }} + - name: Check if user is a member of the org + id: check-membership + run: | + USERNAME=$(jq -r '.pull_request.user.login' "$GITHUB_EVENT_PATH") + ORG="${{ github.repository_owner }}" + STATUS=$(gh api "orgs/$ORG/members/$USERNAME" --silent && echo "true" || echo "false") + if [[ "$STATUS" == "true" ]]; then + echo "MEMBER_FOUND=true" >> $GITHUB_ENV + else + echo "MEMBER_FOUND=false" >> $GITHUB_ENV + fi + env: + GH_TOKEN: ${{ steps.otelbot-token.outputs.token }} + + - name: Add comment to PR if author is not a member + if: env.MEMBER_FOUND == 'false' + run: | + USERNAME=$(jq -r '.pull_request.user.login' "$GITHUB_EVENT_PATH") + gh pr comment ${PR_NUM} --repo open-telemetry/opentelemetry-java-instrumentation --body "Thank you for your contribution @${USERNAME}! 🎉 We would like to hear from you about your experience contributing to OpenTelemetry by taking a few minutes to fill out this [survey](${SURVEY_URL})." + env: + GH_TOKEN: ${{ steps.otelbot-token.outputs.token }} \ No newline at end of file