name: Auto Publish on Version Change on: push: branches: - master jobs: check-and-publish: runs-on: java26 env: MAVEN_REPO_URL: ${{ secrets.MAVEN_REPO_URL }} MAVEN_REPO_USER: ${{ secrets.MAVEN_REPO_USER }} MAVEN_REPO_PASS: ${{ secrets.MAVEN_REPO_PASS }} steps: - name: Checkout Code run: | # Wir klonen explizit in das offizielle Gitea-Arbeitsverzeichnis REAL_URL=$(echo "${{ github.repositoryUrl }}" | sed 's/https:\/\///') git clone "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@$REAL_URL" "$GITHUB_WORKSPACE" cd "$GITHUB_WORKSPACE" git checkout ${{ github.sha }} - name: Version aus Gradle auslesen id: get_version run: | # Erst ins korrekte Verzeichnis wechseln cd "$GITHUB_WORKSPACE" # Sicherstellen, dass der Wrapper ausführbar ist chmod +x ./gradlew # Version auslesen VERSION=$(./gradlew properties | grep "^version:" | awk '{print $2}') echo "Gefundene lokale Projektversion: $VERSION" echo "version=$VERSION" >> $GITHUB_OUTPUT - name: Prüfen ob Version bereits im Maven Repo existiert id: check_repo run: | # Wir bauen den Pfad zur metadata.xml oder zur POM im Maven Repo nach ( group id Punkte durch Slashes ersetzen ) # Beispiel für Group "de.deinefirma" und Artifact "mein-projekt" GROUP_PATH="de/deinefirma" ARTIFACT_ID="mein-projekt" LOCAL_VERSION="${{ steps.get_version.outputs.version }}" # URL zur spezifischen POM-Datei dieser Version im Repo CHECK_URL="${{ env.MAVEN_REPO_URL }}/${GROUP_PATH}/${ARTIFACT_ID}/${LOCAL_VERSION}/${ARTIFACT_ID}-${LOCAL_VERSION}.pom" echo "Prüfe URL: $CHECK_URL" # HTTP-Statuscode abfragen (mit den Credentials falls das Repo privat ist) STATUS=$(curl -o /dev/null -s -w "%{http_code}" -u "${{ env.MAVEN_REPO_USER }}:${{ env.MAVEN_REPO_PASS }}" "$CHECK_URL") if [ "$STATUS" = "200" ]; then echo "Version $LOCAL_VERSION existiert bereits im Repository. Überspringe Publish." echo "is_new=false" >> $GITHUB_OUTPUT else echo "Version $LOCAL_VERSION wurde nicht gefunden (Status $STATUS). Starte Deployment..." echo "is_new=true" >> $GITHUB_OUTPUT fi - name: Auf Maven Repository pushen if: steps.check_repo.outputs.is_new == 'true' run: | echo "Pushe Version ${{ steps.get_version.outputs.version }} zu Maven..." ./gradlew publish