Conversation
There was a problem hiding this comment.
Pull request overview
This pull request adds automated release infrastructure to enable tag-triggered releases to Maven Central and GitHub Releases. The changes replace manual local publishing with a fully automated CI/CD pipeline.
Changes:
- Added GitHub Actions workflow for tag-triggered releases with version validation, quality checks, and automated publishing to Maven Central
- Updated publishing configuration to support both CI environment variables and local development via local.properties
- Removed outdated JitPack configuration
- Enhanced README with Maven Central, CI status, and license badges
- Added comprehensive design documentation for the release workflow
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
.github/workflows/release.yml |
Tag-triggered workflow that validates versions, runs checks, publishes to Maven Central, and creates GitHub Releases with AAR artifacts |
gradle/convetions-plugins/vbpd-library-base/src/main/kotlin/vbpdpublish.gradle.kts |
Refactored to support both CI environment variables (with ORG_GRADLE_PROJECT_ prefix) and local.properties for credential management |
jitpack.yml |
Removed outdated JitPack configuration (was pinned to JDK 11) |
README.md |
Added badges for Maven Central version, build status, and license |
docs/plans/2026-02-14-release-workflow-design.md |
Comprehensive design document explaining the release automation strategy, credentials, and design decisions |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - name: Create GitHub Release | ||
| uses: softprops/action-gh-release@v2 |
There was a problem hiding this comment.
If the Maven Central publish succeeds but the GitHub Release creation fails, artifacts will be published to Maven Central without a corresponding GitHub Release. This could create confusion. Consider either: (1) creating the GitHub Release first with the release notes, then publishing to Maven Central, or (2) adding a note in the workflow that explains this potential state, or (3) using a workflow that can rollback the Maven Central publish if the release creation fails (though this may not be possible with Maven Central).
|
|
||
| - name: Validate version matches libs.versions.toml | ||
| run: | | ||
| TOML_VERSION=$(grep '^vbpd = ' gradle/libs.versions.toml | sed 's/vbpd = "\(.*\)"/\1/') |
There was a problem hiding this comment.
The version extraction using grep and sed is fragile and could fail if there are spaces or formatting variations in the TOML file. Consider using a more robust TOML parser or checking if the grep command succeeded before using the result. For example, add validation that TOML_VERSION is not empty before the comparison.
| TOML_VERSION=$(grep '^vbpd = ' gradle/libs.versions.toml | sed 's/vbpd = "\(.*\)"/\1/') | |
| TOML_VERSION=$(grep -E '^[[:space:]]*vbpd[[:space:]]*=' gradle/libs.versions.toml | sed -E 's/^[[:space:]]*vbpd[[:space:]]*=[[:space:]]*"(.*)"/\1/') | |
| if [ -z "$TOML_VERSION" ]; then | |
| echo "::error::Failed to extract vbpd version from gradle/libs.versions.toml" | |
| exit 1 | |
| fi |
| files: | | ||
| vbpd-core/build/outputs/aar/vbpd-core-release.aar | ||
| vbpd/build/outputs/aar/vbpd-release.aar | ||
| vbpd-reflection/build/outputs/aar/vbpd-reflection-release.aar |
There was a problem hiding this comment.
The workflow doesn't verify that the AAR files were successfully built before attempting to upload them. If the build step fails silently or the file paths are incorrect, the GitHub Release creation could fail or upload incomplete artifacts. Consider adding a validation step to check that all expected AAR files exist before the release creation step.
| - name: Build release AARs | ||
| run: ./gradlew :vbpd-core:assembleRelease :vbpd:assembleRelease :vbpd-reflection:assembleRelease --no-configuration-cache | ||
|
|
There was a problem hiding this comment.
The AAR files are being built twice: once during the Maven Central publish step and again in this step. This is inefficient and wastes CI time. Consider reusing the AAR artifacts from the publish step or combining these steps to avoid redundant builds.
| - name: Build release AARs | |
| run: ./gradlew :vbpd-core:assembleRelease :vbpd:assembleRelease :vbpd-reflection:assembleRelease --no-configuration-cache |
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
CI uses ORG_GRADLE_PROJECT_* environment variables for signing and Maven Central credentials. Local development still uses local.properties. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Pushing a v* tag triggers: version validation, quality checks, Maven Central publishing, and GitHub Release creation with AARs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
JitPack is not used. Publishing goes through Maven Central. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
19313d2 to
b3b9f6a
Compare
Summary
.github/workflows/release.yml— push av*tag to trigger: version validation, quality checks, Maven Central publishing, and GitHub Release with AAR artifactsvbpdpublish.gradle.ktsto supportORG_GRADLE_PROJECT_*env vars for CI (withlocal.propertiesfallback for local dev)jitpack.yml(JitPack not used, was stuck on JDK 11)Required GitHub Secrets
Before first use, configure these repository secrets:
SIGNING_KEY_IDSIGNING_KEYSIGNING_PASSWORDMAVEN_CENTRAL_USERNAMEMAVEN_CENTRAL_PASSWORDHow to release
Test plan
./gradlew clean checkpasses./gradlew publishToMavenLocalstill works withlocal.properties🤖 Generated with Claude Code