From 6d5b45fe67ce08befbad3802f4c7fb7bc50b8c62 Mon Sep 17 00:00:00 2001 From: Alex Boten Date: Tue, 12 Dec 2023 01:58:19 -0800 Subject: [PATCH] [chore] add github action to generate semconv pr (#9064) This is similar to the workflow used by the jmx gatherer PR in the collector contrib repo. --------- Signed-off-by: Alex Boten --- .../generate-semantic-conventions-pr.yaml | 107 ++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 .github/workflows/generate-semantic-conventions-pr.yaml diff --git a/.github/workflows/generate-semantic-conventions-pr.yaml b/.github/workflows/generate-semantic-conventions-pr.yaml new file mode 100644 index 00000000000..7543a044d4d --- /dev/null +++ b/.github/workflows/generate-semantic-conventions-pr.yaml @@ -0,0 +1,107 @@ +name: Generate Semantic Conventions PR + +on: + schedule: + # Daily at 01:30 (UTC) + - cron: '30 1 * * *' + workflow_dispatch: + +jobs: + check-versions: + runs-on: ubuntu-latest + outputs: + latest-version: ${{ steps.check-versions.outputs.latest-version }} + already-added: ${{ steps.check-versions.outputs.already-added }} + already-opened: ${{ steps.check-versions.outputs.already-opened }} + steps: + - uses: actions/checkout@v4 + + - id: check-versions + name: Check versions + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + # version in this repo are prefixed with v + latest_version=v$(gh release view \ + --repo open-telemetry/semantic-conventions \ + --json tagName \ + --jq .tagName \ + | sed 's/^v//') + + rc=$(find semconv -name $latest_version | grep .) + if $rc == 0; then + already_added=true + fi + + matches=$(gh pr list \ + --author opentelemetrybot \ + --state open \ + --search "in:title \"Add semantic conventions version $latest_version\"") + if [ ! -z "$matches" ] + then + already_opened=true + fi + + echo "latest-version=$latest_version" >> $GITHUB_OUTPUT + echo "already-added=$already_added" >> $GITHUB_OUTPUT + echo "already-opened=$already_opened" >> $GITHUB_OUTPUT + + update-semantic-conventions: + runs-on: ubuntu-latest + if: | + needs.check-versions.outputs.already-added != 'true' && + needs.check-versions.outputs.already-opened != 'true' + needs: + - check-versions + steps: + - uses: actions/checkout@v4 + - name: Checkout semantic-convention + uses: actions/checkout@v4 + with: + repository: open-telemetry/semantic-convention + path: tmp-semantic-conventions + + - name: Update version + env: + VERSION: ${{ needs.check-versions.outputs.latest-version }} + run: | + make gensemconv SPECPATH=./tmp-semantic-conventions SPECTAG=$VERSION + git diff + + - name: Use CLA approved github bot + run: | + git config user.name opentelemetrybot + git config user.email 107717825+opentelemetrybot@users.noreply.github.com + + - name: Create pull request against main + 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: ${{ secrets.OPENTELEMETRYBOT_GITHUB_TOKEN }} + run: | + message="Add semantic conventions version $VERSION" + body="Add semantic conventions version \`$VERSION\`." + branch="opentelemetrybot/add-semantic-conventions-${VERSION}" + + git checkout -b $branch + git add semconv/ + git commit -m "$message" + git push --set-upstream origin $branch + url=$(gh pr create --title "$message" \ + --body "$body" \ + --base main) + + pull_request_number=${url//*\//} + + # see the template for change log entry file at blob/main/.chloggen/TEMPLATE.yaml + cat > .chloggen/semconv-$VERSION.yaml << EOF + change_type: enhancement + component: semconv + note: Add semantic conventions version $VERSION + issues: [ $pull_request_number ] + EOF + + git add .chloggen/semconv-$VERSION.yaml + + git commit -m "Add change log entry" + git push