This is an automated email from the ASF dual-hosted git repository. derrickaw pushed a commit to branch 20261012_adsVersionUpgrade in repository https://gitbox.apache.org/repos/asf/beam.git
commit 62ff7b16d23b77a5eaec0a00bd8ccabaf0e42c93 Author: Derrick Williams <[email protected]> AuthorDate: Mon Oct 12 14:11:17 2026 +0000 add googleads version upgrade workflow --- .github/workflows/update-googleads-version.yml | 146 +++++++++++++++++++++++++ 1 file changed, 146 insertions(+) diff --git a/.github/workflows/update-googleads-version.yml b/.github/workflows/update-googleads-version.yml new file mode 100644 index 00000000000..87690991725 --- /dev/null +++ b/.github/workflows/update-googleads-version.yml @@ -0,0 +1,146 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: Upgrade Google Ads Version + +on: + schedule: + - cron: "0 0 1 * *" # Monthly on the 1st at 00:00 UTC + workflow_dispatch: + +permissions: + contents: write + pull-requests: write + checks: read + issues: read + statuses: read + +concurrency: + group: '${{ github.workflow }} @ ${{ github.ref }}' + cancel-in-progress: true + +jobs: + upgrade_google_ads: + runs-on: [self-hosted, ubuntu-24.04, main] + name: Upgrade Google Ads + steps: + - name: Checkout code + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + with: + persist-credentials: false + + - name: Set up JDK 21 + uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5.4.0 + with: + distribution: 'temurin' + java-version: '21' + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6.3.0 + with: + validate-wrappers: false + + - name: Check if new Google Ads version is available + id: check_ads + run: | + BUILD_GRADLE="sdks/java/io/google-ads/build.gradle" + CURRENT_VER=$(sed -n 's/.*com\.google\.api-ads:google-ads:\([0-9.]*\).*/\1/p' "$BUILD_GRADLE") + CURRENT_API=$(sed -n 's/.*com\.google\.api-ads:google-ads-stubs-v\([0-9]*\):.*/\1/p' "$BUILD_GRADLE") + + METADATA_URL="https://repo1.maven.org/maven2/com/google/api-ads/google-ads/maven-metadata.xml" + LATEST_VER=$(curl -fsSL "$METADATA_URL" | sed -n 's/.*<release>\([0-9.]*\)<\/release>.*/\1/p') + + POM_URL="https://repo1.maven.org/maven2/com/google/api-ads/google-ads-codegen/${LATEST_VER}/google-ads-codegen-${LATEST_VER}.pom" + LATEST_API=$(curl -fsSL "$POM_URL" | sed -n 's/.*<artifactId>google-ads-stubs-v\([0-9]*\)<\/artifactId>.*/\1/p' | sort -n | tail -n 1) + + if [[ -z "$CURRENT_VER" || -z "$CURRENT_API" || -z "$LATEST_VER" || -z "$LATEST_API" ]]; then + echo "Failed to resolve versions (current=${CURRENT_VER}/v${CURRENT_API}, latest=${LATEST_VER}/v${LATEST_API})" + exit 1 + fi + + echo "Current: ${CURRENT_VER} (v${CURRENT_API}), Latest: ${LATEST_VER} (v${LATEST_API})" + { + echo "current_version=${CURRENT_VER}" + echo "current_api=${CURRENT_API}" + echo "latest_version=${LATEST_VER}" + echo "latest_api=${LATEST_API}" + if [[ "$CURRENT_VER" != "$LATEST_VER" || "$CURRENT_API" != "$LATEST_API" ]]; then + echo "should_upgrade=true" + else + echo "should_upgrade=false" + fi + } >> "$GITHUB_OUTPUT" + + - name: Upgrade Google Ads and verify build + if: steps.check_ads.outputs.should_upgrade == 'true' + env: + CURRENT_VER: ${{ steps.check_ads.outputs.current_version }} + CURRENT_API: ${{ steps.check_ads.outputs.current_api }} + LATEST_VER: ${{ steps.check_ads.outputs.latest_version }} + LATEST_API: ${{ steps.check_ads.outputs.latest_api }} + run: | + sed -i "s/google-ads:${CURRENT_VER}/google-ads:${LATEST_VER}/g" sdks/java/io/google-ads/build.gradle + sed -i "s/google-ads-stubs-v${CURRENT_API}:${CURRENT_VER}/google-ads-stubs-v${LATEST_API}:${LATEST_VER}/g" sdks/java/io/google-ads/build.gradle + + if [[ "$CURRENT_API" != "$LATEST_API" ]]; then + PKG_DIR="sdks/java/io/google-ads/src/main/java/org/apache/beam/sdk/io/googleads" + git mv "${PKG_DIR}/GoogleAdsV${CURRENT_API}.java" "${PKG_DIR}/GoogleAdsV${LATEST_API}.java" + find sdks/java/io/google-ads/src -name "*.java" -exec sed -i \ + -e "s/GoogleAdsV${CURRENT_API}/GoogleAdsV${LATEST_API}/g" \ + -e "s/com\.google\.ads\.googleads\.v${CURRENT_API}\./com.google.ads.googleads.v${LATEST_API}./g" \ + -e "s/getVersion${CURRENT_API}()/getVersion${LATEST_API}()/g" \ + -e "s/GOOGLE_ADS_SERVICE_STUB_V${CURRENT_API}/GOOGLE_ADS_SERVICE_STUB_V${LATEST_API}/g" \ + -e "s/Google Ads API v${CURRENT_API}/Google Ads API v${LATEST_API}/g" {} + + fi + + ./gradlew :sdks:java:io:google-ads:spotlessApply :sdks:java:io:google-ads:build + + - name: Install gh cli + if: steps.check_ads.outputs.should_upgrade == 'true' + uses: ./.github/actions/setup-gh-cli-linux + + - name: Set git config + if: steps.check_ads.outputs.should_upgrade == 'true' + run: | + git config user.name "$GITHUB_ACTOR" + git config user.email "actions@${RUNNER_NAME}.local" + + - name: Commit Changes and create PR + if: steps.check_ads.outputs.should_upgrade == 'true' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + CURRENT_VER: ${{ steps.check_ads.outputs.current_version }} + CURRENT_API: ${{ steps.check_ads.outputs.current_api }} + LATEST_VER: ${{ steps.check_ads.outputs.latest_version }} + LATEST_API: ${{ steps.check_ads.outputs.latest_api }} + run: | + branchName="upgrade_google_ads_${LATEST_VER//./_}_v${LATEST_API}" + git checkout -b "$branchName" + git add sdks/java/io/google-ads/build.gradle sdks/java/io/google-ads/src + if ! git diff --cached --quiet; then + echo "Changes are ready to commit" + git commit -m "Upgrade Google Ads to ${LATEST_VER} (API v${LATEST_API})" --quiet + gh auth setup-git + git push origin "$branchName" --quiet + + PR_BODY="This PR was created by automation. It upgrades \`com.google.api-ads:google-ads\` from **${CURRENT_VER}** (API **v${CURRENT_API}**) to **${LATEST_VER}** (API **v${LATEST_API}**). + + Please review the changes and merge if all tests pass." + + GITHUB_PR_URL=$(gh pr create --title "Upgrade Google Ads to ${LATEST_VER} (API v${LATEST_API})" --body "$PR_BODY" --label "dependencies" --base master) + echo "Link of the new PR: $GITHUB_PR_URL" + else + echo "No changes on the files" + fi
