Auto-update OpenTelemetry SDK #81
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Auto-update OpenTelemetry SDK | |
| on: | |
| schedule: | |
| # daily at hour 5 minute 46 | |
| - cron: "46 5 * * *" | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| jobs: | |
| check-versions: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| current-version: ${{ steps.check-versions.outputs.current-version }} | |
| latest-version: ${{ steps.check-versions.outputs.latest-version }} | |
| already-opened: ${{ steps.check-versions.outputs.already-opened }} | |
| steps: | |
| - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| - id: check-versions | |
| name: Check versions | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| current_version=$(grep -Po 'opentelemetrySdk\s*:\s*"\K[0-9]+.[0-9]+.[0-9]+(?=")' build.gradle) | |
| latest_version=$(gh release view \ | |
| --repo open-telemetry/opentelemetry-java \ | |
| --json tagName \ | |
| --jq .tagName \ | |
| | sed 's/^v//') | |
| matches=$(gh pr list \ | |
| --author app/otelbot-zephyrdark \ | |
| --state open \ | |
| --search "in:title \"Update the OpenTelemetry SDK version to $latest_version\"") | |
| if [ ! -z "$matches" ] | |
| then | |
| already_opened=true | |
| fi | |
| echo "current-version=$current_version" >> $GITHUB_OUTPUT | |
| echo "latest-version=$latest_version" >> $GITHUB_OUTPUT | |
| echo "already-opened=$already_opened" >> $GITHUB_OUTPUT | |
| update-otel-sdk: | |
| permissions: | |
| contents: write # for git push to PR branch | |
| runs-on: ubuntu-latest | |
| if: | | |
| needs.check-versions.outputs.current-version != needs.check-versions.outputs.latest-version && | |
| needs.check-versions.outputs.already-opened != 'true' | |
| needs: | |
| - check-versions | |
| steps: | |
| - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| - name: Update version | |
| env: | |
| VERSION: ${{ needs.check-versions.outputs.latest-version }} | |
| run: ./.github/scripts/update-sdk-version.sh $VERSION | |
| - name: Free disk space | |
| run: .github/scripts/gha-free-disk-space.sh | |
| - name: Set up JDK for running Gradle | |
| uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1 | |
| with: | |
| distribution: temurin | |
| java-version-file: .java-version | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1 | |
| - name: Use otelbot | |
| run: .github/scripts/use-otelbot.sh ${{ vars.OTELBOT_GIT_USERNAME }} ${{ vars.OTELBOT_GIT_USEREMAIL }} | |
| - uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6 | |
| id: otelbot-token | |
| with: | |
| app-id: ${{ vars.OTELBOT_APP_ID }} | |
| private-key: ${{ secrets.OTELBOT_PRIVATE_KEY }} | |
| - name: Create pull request against main | |
| if: success() || failure() | |
| env: | |
| VERSION: ${{ needs.check-versions.outputs.latest-version }} | |
| # not using secrets.GITHUB_TOKEN since pull requests from that token do not run workflows | |
| GH_TOKEN: ${{ steps.otelbot-token.outputs.token }} | |
| run: | | |
| message="Update the OpenTelemetry SDK version to $VERSION" | |
| body="Update the OpenTelemetry SDK version to \`$VERSION\`." | |
| branch="otelbot-zephyrdark/update-opentelemetry-sdk-to-${VERSION}" | |
| git checkout -b $branch | |
| git add -u | |
| git add licenses | |
| git commit -m "$message" | |
| git push --set-upstream origin $branch | |
| gh pr create --title "$message" \ | |
| --body "$body" \ | |
| --base main |