diff --git a/.github/workflows/renovate-api-signatures.yml b/.github/workflows/renovate-api-signatures.yml new file mode 100644 index 00000000..50a01565 --- /dev/null +++ b/.github/workflows/renovate-api-signatures.yml @@ -0,0 +1,60 @@ +name: Renovate API signatures + +on: + push: + branches: + - 'renovate/**' + workflow_dispatch: + +permissions: + contents: write + +jobs: + update: + if: >- + startsWith(github.ref, 'refs/heads/renovate/') && + (github.actor == 'renovate[bot]' || github.event_name == 'workflow_dispatch') + concurrency: + group: renovate-api-signatures-${{ github.ref }} + cancel-in-progress: true + runs-on: macos-latest + timeout-minutes: 30 + steps: + - name: Require fixup credentials + env: + FIXUP_TOKEN: ${{ secrets.RENOVATE_FIXUP_TOKEN }} + run: | + if [ -z "$FIXUP_TOKEN" ]; then + echo '::error::Create RENOVATE_FIXUP_TOKEN with contents:write so fixup pushes trigger CI.' + exit 1 + fi + + - uses: actions/checkout@v7 + with: + ref: ${{ github.ref_name }} + token: ${{ secrets.RENOVATE_FIXUP_TOKEN }} + + - uses: gradle/actions/wrapper-validation@v6 + + - uses: actions/setup-java@v5 + with: + distribution: 'zulu' + java-version: 21 + + - uses: gradle/actions/setup-gradle@v6 + + - name: Regenerate API signatures + run: ./gradlew metalavaGenerateSignature -Pandroidx.baselineprofile.skipgeneration + + - name: Check regenerated signatures + run: ./gradlew metalavaCheckCompatibility -Pandroidx.baselineprofile.skipgeneration + + - name: Commit API signatures + run: | + if [ -n "$(git status --porcelain -- '**/api/api.txt')" ]; then + git config user.name 'github-actions[bot]' + git config user.email '41898282+github-actions[bot]@users.noreply.github.com' + git add -- '**/api/api.txt' + git commit -m ':arrow_up: Update metalava API signatures' + git push origin HEAD + fi diff --git a/gradle/build-logic/convention/src/main/kotlin/MetalavaConventionPlugin.kt b/gradle/build-logic/convention/src/main/kotlin/MetalavaConventionPlugin.kt index a51362e3..54372b6d 100644 --- a/gradle/build-logic/convention/src/main/kotlin/MetalavaConventionPlugin.kt +++ b/gradle/build-logic/convention/src/main/kotlin/MetalavaConventionPlugin.kt @@ -24,7 +24,8 @@ class MetalavaConventionPlugin : Plugin { it.startsWith("generateResourceAccessors") || it.startsWith("generateActualResourceCollectors") || it.startsWith("generateComposeResClass") || - it.startsWith("generateExpectResourceCollectors") + it.startsWith("generateExpectResourceCollectors") || + (it.startsWith("ksp") && !it.contains("test", ignoreCase = true)) }) } } diff --git a/renovate.json b/renovate.json index 8ca68c06..67a96ad4 100644 --- a/renovate.json +++ b/renovate.json @@ -10,6 +10,7 @@ "prConcurrentLimit": 40, "commitMessagePrefix": ":arrow_up:", "rebaseWhen": "conflicted", + "gitIgnoredAuthors": ["41898282+github-actions[bot]@users.noreply.github.com"], "schedule": ["* 22-23,0-4 * * *", "* * * * 0,6"], "customManagers": [ { @@ -27,17 +28,21 @@ "/androidx.compose.compiler:compiler/", "/org.jetbrains.kotlin.*/" ], - "allowedVersions": ">=2.3.0 <2.4.0" + "allowedVersions": ">=2.3.0 <2.5.0" }, { "groupName": "kotlin", "matchPackageNames": ["/dev.mokkery.*/"], - "allowedVersions": ">=3.3.0 <3.4.0" + "allowedVersions": ">=3.3.0 <3.6.0" }, { "groupName": "kotlin", "matchPackageNames": ["/dev.drewhamilton.poko.*/"], - "allowedVersions": ">=0.22.0 <0.23.0" + "allowedVersions": ">=0.22.0 <0.24.0" + }, + { + "groupName": "kotlin", + "matchPackageNames": ["/com.google.devtools.ksp.*/"] }, { "groupName": "compose-multiplatform",