auto-update-otel-sdk.yml 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. name: Auto-update OpenTelemetry SDK
  2. on:
  3. schedule:
  4. # hourly at minute 46
  5. - cron: "46 * * * *"
  6. workflow_dispatch:
  7. jobs:
  8. check-versions:
  9. runs-on: ubuntu-latest
  10. outputs:
  11. current-version: ${{ steps.check-versions.outputs.current-version }}
  12. latest-version: ${{ steps.check-versions.outputs.latest-version }}
  13. already-opened: ${{ steps.check-versions.outputs.already-opened }}
  14. steps:
  15. - uses: actions/checkout@v4
  16. - id: check-versions
  17. name: Check versions
  18. env:
  19. GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  20. run: |
  21. current_version=$(grep -Po "val otelSdkVersion = \"\K[0-9]+.[0-9]+.[0-9]+" \
  22. dependencyManagement/build.gradle.kts)
  23. latest_version=$(gh release view \
  24. --repo open-telemetry/opentelemetry-java \
  25. --json tagName \
  26. --jq .tagName \
  27. | sed 's/^v//')
  28. matches=$(gh pr list \
  29. --author opentelemetrybot \
  30. --state open \
  31. --search "in:title \"Update the OpenTelemetry SDK version to $latest_version\"")
  32. if [ ! -z "$matches" ]
  33. then
  34. already_opened=true
  35. fi
  36. echo "current-version=$current_version" >> $GITHUB_OUTPUT
  37. echo "latest-version=$latest_version" >> $GITHUB_OUTPUT
  38. echo "already-opened=$already_opened" >> $GITHUB_OUTPUT
  39. update-otel-sdk:
  40. runs-on: ubuntu-latest
  41. if: |
  42. needs.check-versions.outputs.current-version != needs.check-versions.outputs.latest-version &&
  43. needs.check-versions.outputs.already-opened != 'true'
  44. needs:
  45. - check-versions
  46. steps:
  47. - uses: actions/checkout@v4
  48. - name: Update version
  49. env:
  50. VERSION: ${{ needs.check-versions.outputs.latest-version }}
  51. run: ./.github/scripts/update-sdk-version.sh $VERSION
  52. - name: Use CLA approved github bot
  53. run: .github/scripts/use-cla-approved-github-bot.sh
  54. - name: Free disk space
  55. run: .github/scripts/gha-free-disk-space.sh
  56. - name: Set up JDK for running Gradle
  57. uses: actions/setup-java@v4
  58. with:
  59. distribution: temurin
  60. java-version: 17.0.6
  61. - name: Update license report
  62. uses: gradle/gradle-build-action@v2
  63. with:
  64. arguments: generateLicenseReport
  65. - name: Undo license report clean
  66. if: failure()
  67. run: git checkout -- licenses
  68. - name: Create pull request against main
  69. if: success() || failure()
  70. env:
  71. VERSION: ${{ needs.check-versions.outputs.latest-version }}
  72. # not using secrets.GITHUB_TOKEN since pull requests from that token do not run workflows
  73. GH_TOKEN: ${{ secrets.OPENTELEMETRYBOT_GITHUB_TOKEN }}
  74. run: |
  75. message="Update the OpenTelemetry SDK version to $VERSION"
  76. body="Update the OpenTelemetry SDK version to \`$VERSION\`."
  77. branch="opentelemetrybot/update-opentelemetry-sdk-to-${VERSION}"
  78. git checkout -b $branch
  79. git commit -a -m "$message"
  80. git push --set-upstream origin $branch
  81. gh pr create --title "$message" \
  82. --body "$body" \
  83. --base main