Update smoke test latest versions #3
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: Update smoke test latest versions | |
| on: | |
| schedule: | |
| - cron: "0 5 * * 0" | |
| workflow_dispatch: | |
| jobs: | |
| update-smoke-test-latest-versions: | |
| runs-on: ubuntu-latest | |
| name: Update smoke test latest versions | |
| env: | |
| MIN_DEPENDENCY_AGE_HOURS: 48 | |
| permissions: | |
| contents: read | |
| id-token: write # Required for OIDC token federation | |
| steps: | |
| - uses: DataDog/dd-octo-sts-action@96a25462dbcb10ebf0bfd6e2ccc917d2ab235b9a # v1.0.4 | |
| id: octo-sts | |
| with: | |
| scope: DataDog/dd-trace-java | |
| policy: self.update-smoke-test-latest-versions.create-pr | |
| - name: Checkout repository | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # 6.0.2 | |
| - name: Define branch name | |
| id: define-branch | |
| run: | | |
| DATE=$(date +'%Y%m%d') | |
| echo "branch=ci/update-smoke-test-latest-versions-${DATE}" >> "$GITHUB_OUTPUT" | |
| - name: Read current pinned versions | |
| id: current | |
| run: | | |
| gradle_props="dd-smoke-tests/gradle/src/test/resources/latest-tool-versions.properties" | |
| maven_props="dd-smoke-tests/maven/src/test/resources/latest-tool-versions.properties" | |
| get_prop() { grep "^$1=" "$2" 2>/dev/null | cut -d= -f2 || true; } | |
| echo "gradle_version=$(get_prop gradle.version "$gradle_props")" >> "$GITHUB_OUTPUT" | |
| echo "maven_version=$(get_prop maven.version "$maven_props")" >> "$GITHUB_OUTPUT" | |
| echo "surefire_version=$(get_prop maven-surefire.version "$maven_props")" >> "$GITHUB_OUTPUT" | |
| - name: Resolve latest eligible Gradle version | |
| id: gradle | |
| run: | | |
| python3 .github/scripts/dependency_age.py select-gradle \ | |
| --min-age-hours "${MIN_DEPENDENCY_AGE_HOURS}" \ | |
| --current-version "${{ steps.current.outputs.gradle_version }}" \ | |
| --github-output "$GITHUB_OUTPUT" | |
| - name: Resolve latest eligible stable Maven version | |
| id: maven | |
| run: | | |
| python3 .github/scripts/dependency_age.py select-maven \ | |
| --group-id org.apache.maven \ | |
| --artifact-id apache-maven \ | |
| --prerelease-pattern alpha \ | |
| --prerelease-pattern beta \ | |
| --prerelease-pattern rc \ | |
| --min-age-hours "${MIN_DEPENDENCY_AGE_HOURS}" \ | |
| --current-version "${{ steps.current.outputs.maven_version }}" \ | |
| --github-output "$GITHUB_OUTPUT" | |
| - name: Resolve latest eligible stable Maven Surefire version | |
| id: surefire | |
| run: | | |
| python3 .github/scripts/dependency_age.py select-maven \ | |
| --group-id org.apache.maven.plugins \ | |
| --artifact-id maven-surefire-plugin \ | |
| --prerelease-pattern alpha \ | |
| --prerelease-pattern beta \ | |
| --min-age-hours "${MIN_DEPENDENCY_AGE_HOURS}" \ | |
| --current-version "${{ steps.current.outputs.surefire_version }}" \ | |
| --github-output "$GITHUB_OUTPUT" | |
| - name: Update properties files | |
| id: update | |
| env: | |
| GRADLE_VERSION: ${{ steps.gradle.outputs.version }} | |
| GRADLE_PUBLISHED: ${{ steps.gradle.outputs.published_at }} | |
| MAVEN_VERSION: ${{ steps.maven.outputs.version }} | |
| MAVEN_PUBLISHED: ${{ steps.maven.outputs.published_at }} | |
| SUREFIRE_VERSION: ${{ steps.surefire.outputs.version }} | |
| SUREFIRE_PUBLISHED: ${{ steps.surefire.outputs.published_at }} | |
| run: | | |
| version_line() { if [ -n "$2" ]; then echo "$1 (published $2)"; else echo "$1 (unchanged)"; fi; } | |
| echo "Writing latest eligible stable versions (>=${MIN_DEPENDENCY_AGE_HOURS}h old) to properties files:" | |
| echo " Gradle: $(version_line "${GRADLE_VERSION}" "${GRADLE_PUBLISHED}")" | |
| echo " Maven: $(version_line "${MAVEN_VERSION}" "${MAVEN_PUBLISHED}")" | |
| echo " Maven Surefire: $(version_line "${SUREFIRE_VERSION}" "${SUREFIRE_PUBLISHED}")" | |
| # Build version lines for PR body | |
| echo "gradle_line=$(version_line "${GRADLE_VERSION}" "${GRADLE_PUBLISHED}")" >> "$GITHUB_OUTPUT" | |
| echo "maven_line=$(version_line "${MAVEN_VERSION}" "${MAVEN_PUBLISHED}")" >> "$GITHUB_OUTPUT" | |
| echo "surefire_line=$(version_line "${SUREFIRE_VERSION}" "${SUREFIRE_PUBLISHED}")" >> "$GITHUB_OUTPUT" | |
| printf '%s\n' \ | |
| "# Pinned latest eligible stable versions (>=${MIN_DEPENDENCY_AGE_HOURS}h old) for CI Visibility Gradle smoke tests." \ | |
| "# Updated automatically by the update-smoke-test-latest-versions workflow." \ | |
| "gradle.version=${GRADLE_VERSION}" \ | |
| > dd-smoke-tests/gradle/src/test/resources/latest-tool-versions.properties | |
| printf '%s\n' \ | |
| "# Pinned latest eligible stable versions (>=${MIN_DEPENDENCY_AGE_HOURS}h old) for CI Visibility Maven smoke tests." \ | |
| "# Updated automatically by the update-smoke-test-latest-versions workflow." \ | |
| "maven.version=${MAVEN_VERSION}" \ | |
| "maven-surefire.version=${SUREFIRE_VERSION}" \ | |
| > dd-smoke-tests/maven/src/test/resources/latest-tool-versions.properties | |
| - name: Check for changes | |
| id: check-changes | |
| run: | | |
| if [[ -z "$(git status -s)" ]]; then | |
| echo "No changes detected — pinned versions are already on the latest eligible stable releases." | |
| echo "has_changes=false" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "Changes detected in the following files:" | |
| git status -s | |
| echo "" | |
| echo "Diff:" | |
| git diff | |
| echo "has_changes=true" >> "$GITHUB_OUTPUT" | |
| fi | |
| - name: Configure git | |
| if: steps.check-changes.outputs.has_changes == 'true' | |
| run: | | |
| git config user.name "github-actions[bot]" | |
| git config user.email "41898282+github-actions[bot]@users.noreply.github.com" | |
| - name: Create commit | |
| if: steps.check-changes.outputs.has_changes == 'true' | |
| run: | | |
| git add dd-smoke-tests/gradle/src/test/resources/latest-tool-versions.properties \ | |
| dd-smoke-tests/maven/src/test/resources/latest-tool-versions.properties | |
| git commit -m "chore: Update smoke test latest tool versions" | |
| - name: Push changes | |
| if: steps.check-changes.outputs.has_changes == 'true' | |
| uses: DataDog/commit-headless@ad3668640012ec69186398f43d61923f6878bbbe # action/v3.2.0 | |
| with: | |
| token: "${{ steps.octo-sts.outputs.token }}" | |
| branch: "${{ steps.define-branch.outputs.branch }}" | |
| head-sha: "${{ github.sha }}" | |
| create-branch: true | |
| command: push | |
| - name: Create pull request | |
| if: steps.check-changes.outputs.has_changes == 'true' | |
| env: | |
| GH_TOKEN: ${{ steps.octo-sts.outputs.token }} | |
| run: | | |
| gh pr create --title "Update smoke test latest tool versions" \ | |
| --base master \ | |
| --head ${{ steps.define-branch.outputs.branch }} \ | |
| --label "tag: dependencies" \ | |
| --label "tag: no release notes" \ | |
| --body "$(cat <<'EOF' | |
| # What Does This Do | |
| This PR updates the pinned latest eligible stable tool versions used by CI Visibility smoke tests. | |
| Only releases at least ${{ env.MIN_DEPENDENCY_AGE_HOURS }} hours old are eligible. | |
| - Gradle: ${{ steps.update.outputs.gradle_line }} | |
| - Maven: ${{ steps.update.outputs.maven_line }} | |
| - Maven Surefire: ${{ steps.update.outputs.surefire_line }} | |
| # Motivation | |
| Keep smoke tests running against the latest eligible stable versions of build tools without adopting releases in their first 48 hours. | |
| # Contributor Checklist | |
| - [ ] Verify smoke tests pass with the new versions | |
| EOF | |
| )" |