performance.yaml 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. name: "Check PR performance on PR Merge"
  2. on:
  3. pull_request:
  4. branches: [main, release]
  5. types:
  6. - closed
  7. jobs:
  8. check_performance:
  9. runs-on: ubuntu-latest
  10. steps:
  11. - name: Checkout code
  12. uses: actions/checkout@v4
  13. with:
  14. fetch-depth: '2'
  15. - name: Check PR performance
  16. if: ${{ github.event.pull_request.merged == true }}
  17. env:
  18. BASE_BRANCH: ${{ github.event.pull_request.base.ref }}
  19. run: |
  20. git checkout $BASE_BRANCH
  21. echo "Current Commit: $(git rev-parse HEAD)"
  22. echo "Before Commit: $(git rev-parse HEAD^)"
  23. PR_NUMBER=${{ github.event.pull_request.number }}
  24. PR_MERGE_BY_USER=${{github.event.pull_request.user.login}}
  25. echo "PR_Number is $PR_NUMBER"
  26. echo "User is $PR_MERGE_BY_USER"
  27. id=$(curl --location "https://api.semi.design/analyze/createTask" --header "X-TT-ENV: canary" --header "Content-Type: application/json" --header "X-SEMI-Request: ${{ secrets.SEMI_REQUEST }}" --data "{\"prNumber\":\"$PR_NUMBER\",\"user\":\"$PR_MERGE_BY_USER\",\"v2\":\"$(git rev-parse HEAD)\",\"v1\":\"$(git rev-parse HEAD^)\",\"component\":\"\"}")
  28. echo "Task id is $id"
  29. for i in {1..30}; do
  30. sleep 300
  31. json_data=$(curl --location 'https://api.semi.design/analyze/checkAllTask' --header 'X-TT-ENV: canary' --header "X-SEMI-Request: ${{ secrets.SEMI_REQUEST }}")
  32. parsed_data=$(python -c "
  33. import json;
  34. data = json.loads('''$json_data''',strict=False);
  35. for item in data:
  36. if item['id'] == $id :
  37. if item['status'] == 'done':
  38. print('Done: result is '+ ('empty' if item['result']=='' else item['result']))
  39. else:
  40. print('')
  41. exit(0)
  42. print("")
  43. ")
  44. if [ -n "$parsed_data" ]; then
  45. echo "$parsed_data"
  46. curl --location --request DELETE "https://api.semi.design/analyze/removeTask?id=$id" --header 'X-TT-ENV: canary' --header "X-SEMI-Request: ${{ secrets.SEMI_REQUEST }}"
  47. break
  48. else
  49. echo "task result is empty at tried number #$i"
  50. fi
  51. done