@@ -85,42 +85,45 @@ jobs:
8585 echo "version=$VERSION" >> $GITHUB_OUTPUT
8686 echo "Resolved version: $VERSION"
8787
88- - name : Assemble Release
89- run : ./gradlew assembleRelease
90- working-directory : OneSignalSDK
88+ - name : Check if already published on Maven Central
89+ id : check_maven
90+ run : |
91+ VERSION="${{ env.SDK_VERSION }}"
92+ HTTP_STATUS=$(curl -s -o /dev/null -w "%{http_code}" \
93+ "https://repo1.maven.org/maven2/com/onesignal/OneSignal/${VERSION}/OneSignal-${VERSION}.pom")
94+ if [[ "$HTTP_STATUS" == "200" ]]; then
95+ echo "already_published=true" >> $GITHUB_OUTPUT
96+ echo "Version $VERSION is already on Maven Central, skipping publish."
97+ else
98+ echo "already_published=false" >> $GITHUB_OUTPUT
99+ echo "Version $VERSION not found on Maven Central (HTTP $HTTP_STATUS), will publish."
100+ fi
91101
92102 - name : Dry Run - Publish to Maven Local with signing
103+ if : steps.check_maven.outputs.already_published != 'true'
93104 working-directory : OneSignalSDK
94105 run : |
95106 ./gradlew publishToMavenLocal --no-configuration-cache \
96107 -Psigning.keyId="$SDK_SIGNING_KEY_ID" \
97108 -Psigning.password="$SDK_SIGNING_PASSWORD" \
98109 -Psigning.secretKeyRingFile="$GPG_FILE_PATH"
99110
100- - name : Determine Publishing Method
101- run : |
102- if [[ "${{ github.event.inputs.release_on_maven }}" == "true" ]]; then
103- echo "✅ Publishing to Maven Central And Release"
104- else
105- echo "🏠 Publishing to Maven Central - Not Releasing"
106- fi
107-
108111 - name : Publish and Release to Maven Central
109- if : github.event.inputs.release_on_maven == 'true'
112+ if : github.event.inputs.release_on_maven == 'true' && steps.check_maven.outputs.already_published != 'true'
110113 working-directory : OneSignalSDK
111114 run : |
112- ./gradlew publishAndReleaseToMavenCentral --no-configuration-cache \
115+ ./gradlew clean publishAndReleaseToMavenCentral --no-configuration-cache \
113116 -PmavenCentralUsername="$MAVEN_USERNAME" \
114117 -PmavenCentralPassword="$MAVEN_PASSWORD" \
115118 -Psigning.keyId="$SDK_SIGNING_KEY_ID" \
116119 -Psigning.password="$SDK_SIGNING_PASSWORD" \
117120 -Psigning.secretKeyRingFile="$GPG_FILE_PATH"
118121
119122 - name : Publish Only to Maven Central
120- if : github.event.inputs.release_on_maven != 'true'
123+ if : github.event.inputs.release_on_maven != 'true' && steps.check_maven.outputs.already_published != 'true'
121124 working-directory : OneSignalSDK
122125 run : |
123- ./gradlew publishToMavenCentral --no-configuration-cache \
126+ ./gradlew clean publishToMavenCentral --no-configuration-cache \
124127 -PmavenCentralUsername="$MAVEN_USERNAME" \
125128 -PmavenCentralPassword="$MAVEN_PASSWORD" \
126129 -Psigning.keyId="$SDK_SIGNING_KEY_ID" \
@@ -152,15 +155,17 @@ jobs:
152155 run : |
153156 VERSION="${{ env.SDK_VERSION }}"
154157
158+ if git ls-remote --tags origin "refs/tags/$VERSION" | grep -q .; then
159+ echo "Tag $VERSION already exists, skipping tagging and release creation."
160+ exit 0
161+ fi
162+
155163 if [[ "$VERSION" == *"alpha"* ]]; then
156164 PRERELEASE="--prerelease"
157- CHANNEL="alpha"
158165 elif [[ "$VERSION" == *"beta"* ]]; then
159166 PRERELEASE="--prerelease"
160- CHANNEL="beta"
161167 else
162168 PRERELEASE=""
163- CHANNEL="current"
164169 fi
165170
166171 git config user.name "github-actions[bot]"
0 commit comments