diff --git a/.github/workflows/release-artifacts.yml b/.github/workflows/release-artifacts.yml index 660eec6e6..c1809e605 100644 --- a/.github/workflows/release-artifacts.yml +++ b/.github/workflows/release-artifacts.yml @@ -18,9 +18,44 @@ env: GRADLE_CACHE_PASSWORD: ${{ secrets.GRADLE_CACHE_PASSWORD }} jobs: + validate-release: + name: Validate Release + runs-on: [ self-hosted, Linux, medium, ephemeral ] + steps: + - name: Checkout Code + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + + - name: Retrieve Tag Version + id: tag + run: echo "version=${GITHUB_REF#refs/tags/v}" >> "${GITHUB_OUTPUT}" + + - name: Setup Java + uses: actions/setup-java@0ab4596768b603586c0de567f2430c30f5b0d2b0 # v3.13.0 + with: + distribution: temurin + java-version: 17 + + - name: Setup Gradle + uses: gradle/gradle-build-action@842c587ad8aa4c68eeba24c396e15af4c2e9f30a # v2.9.0 + with: + cache-read-only: false + + - name: Determine Project Version + id: project + run: echo "version=$(./gradlew -q showVersion | tr -d '[:space:]')" >> "${GITHUB_OUTPUT}" + + - name: Validate Release + run: | + if [[ "${{ steps.tag.outputs.version }}" != "${{ steps.project.outputs.version }}" ]]; then + echo "::error file=version.gradle,line=5,title=Version Mismatch::Tag version '${{ steps.tag.outputs.version }}' does not match project version '${{ steps.project.outputs.version }}'. Please update the 'version.gradle' file before tagging." + exit 1 + fi + maven-central: name: Publish to Maven Central runs-on: [ self-hosted, Linux, medium, ephemeral ] + needs: + - validate-release steps: - name: Checkout Code uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 @@ -63,4 +98,4 @@ jobs: run: ./gradlew assemble :sdk:javadoc -Dfile.encoding=UTF-8 --scan - name: Nexus Release - run: ./gradlew closeSonatypeStagingRepository --no-parallel -Dfile.encoding=UTF-8 --scan -PsonatypeUsername=${{ secrets.SONATYPE_USERNAME }} -PsonatypePassword=${{ secrets.SONATYPE_PASSWORD }} + run: ./gradlew publishToSonatype closeSonatypeStagingRepository --no-parallel -Dfile.encoding=UTF-8 --scan -PsonatypeUsername=${{ secrets.SONATYPE_USERNAME }} -PsonatypePassword=${{ secrets.SONATYPE_PASSWORD }} diff --git a/build.gradle b/build.gradle index 8b86ff6bf..55d74d53e 100644 --- a/build.gradle +++ b/build.gradle @@ -101,3 +101,11 @@ nexusPublishing { } } } + +tasks.register("showVersion") { + group = "versioning" + inputs.property("version", project.version) + doLast { + println(inputs.properties["version"]) + } +}