diff --git a/.gitea/workflows/publish.yml b/.gitea/workflows/publish.yml new file mode 100644 index 0000000..5b85cf7 --- /dev/null +++ b/.gitea/workflows/publish.yml @@ -0,0 +1,57 @@ +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 + uses: actions/checkout@v4 + + - name: Version aus Gradle auslesen + id: get_version + run: | + # Extrahiert die Version sauber aus der build.gradle + 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 \ No newline at end of file diff --git a/build.gradle b/build.gradle index d8e89f8..bc75375 100644 --- a/build.gradle +++ b/build.gradle @@ -1,9 +1,10 @@ plugins { id 'java' + id 'maven-publish' } group = 'dev.coph' -version = '1.0-SNAPSHOT' +version = '0.0.1' repositories { mavenCentral() @@ -20,5 +21,23 @@ java { } sourceCompatibility = JavaVersion.VERSION_26 targetCompatibility = JavaVersion.VERSION_26 -} - +} + + +publishing { + publications { + mavenJava(MavenPublication) { + from components.java + } + } + repositories { + maven { + name = "NexusWeb" + url = System.getenv("MAVEN_REPO_URL") + credentials { + username = System.getenv("MAVEN_REPO_USER") + password = System.getenv("MAVEN_REPO_PASS") + } + } + } +}