auto-update-otel-sdk.yml 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4
  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. permissions:
  41. contents: write # for Git to git push
  42. runs-on: ubuntu-latest
  43. if: |
  44. needs.check-versions.outputs.current-version != needs.check-versions.outputs.latest-version &&
  45. needs.check-versions.outputs.already-opened != 'true'
  46. needs:
  47. - check-versions
  48. steps:
  49. - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4
  50. - name: Update version
  51. env:
  52. VERSION: ${{ needs.check-versions.outputs.latest-version }}
  53. run: ./.github/scripts/update-sdk-version.sh $VERSION
  54. - name: Use CLA approved github bot
  55. run: .github/scripts/use-cla-approved-github-bot.sh
  56. - name: Free disk space
  57. run: .github/scripts/gha-free-disk-space.sh
  58. - name: Set up JDK for running Gradle
  59. uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
  60. with:
  61. distribution: temurin
  62. java-version: 21
  63. - name: Setup Gradle
  64. uses: gradle/actions/setup-gradle@db19848a5fa7950289d3668fb053140cf3028d43 # v3.3.2
  65. - name: Update license report
  66. run: ./gradlew generateLicenseReport
  67. - name: Undo license report clean
  68. if: failure()
  69. run: git checkout -- licenses
  70. - name: Create pull request against main
  71. if: success() || failure()
  72. env:
  73. VERSION: ${{ needs.check-versions.outputs.latest-version }}
  74. # not using secrets.GITHUB_TOKEN since pull requests from that token do not run workflows
  75. GH_TOKEN: ${{ secrets.OPENTELEMETRYBOT_GITHUB_TOKEN }}
  76. run: |
  77. message="Update the OpenTelemetry SDK version to $VERSION"
  78. body="Update the OpenTelemetry SDK version to \`$VERSION\`."
  79. branch="opentelemetrybot/update-opentelemetry-sdk-to-${VERSION}"
  80. git checkout -b $branch
  81. git add -u
  82. git add licenses
  83. git commit -m "$message"
  84. git push --set-upstream origin $branch
  85. gh pr create --title "$message" \
  86. --body "$body" \
  87. --base main