auto-update-otel-sdk.yml 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
  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@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
  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: 17.0.6
  63. - name: Update license report
  64. uses: gradle/actions/setup-gradle@d0f2f0387e6ef0dce1fca38d0482617633e9d63a # v3.3.0
  65. with:
  66. arguments: 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