GitHub Actions: Java Gradle Build + Hochladen (Maven-Server/GitHub-Pakete)

Der GitHub-Runner braucht die folgenden Dateien: „gradlew“, „gradlew.bat“ und die „.jar“-Dateien im Ordner: „gradle/wrapper/“.
Wir gehen davon aus, dass „settings.gradle“, „build.gradle“ also das Gradle-Projekt (z.B.: via „gradle init“) schon erstellt wurde.
Auch müssen wir, falls vorhanden, die „.gitignore“ anpassen.
Der Ablauf der Action passiert in dieser Datei: „.github/workflows/gradle-publish.yml“

Es gibt von mir auch ein GitHub Vorlagen Repository.

gradles(.bat) & gradle/wrapper/

gradle wrapper

.gitignore

# Package Files 
!gradle/wrapper/*.jar

# Ignore files that store secrets
gradle.propertiesCode-Sprache: PHP (php)

settings.gradle

rootProject.name = 'NAME'Code-Sprache: JavaScript (javascript)

gradle.properties (für lokales Hochladen benötigt)

MAVEN_USERNAME=USERNAME
MAVEN_PASSWORD=PASSWORD

build.gradle

„project.findProperty“ greift auf die „gradle.properties“ zu und „System.getenv“ auf die Umgebungsvariablen.
Die „GITHUB_*“-Variablen werden automatisch gesetzt, die „MAVEN_*“ müssen per Hand gesetzt werden.
Das geht auf dem GitHub-Actions-Runner lokal, für eine Organisation oder pro Repository.

plugins {
    id 'maven-publish'
}

publishing {
    repositories {
        maven {
            name = "GitHubPackages"
            url = "https://maven.pkg.github.com/" + System.getenv("GITHUB_REPOSITORY")
            credentials {
                username = System.getenv("GITHUB_ACTOR")
                password = System.getenv("GITHUB_TOKEN")
            }
        }
        maven {
            name = "SERVERNAME_REPOSITORYNAME"
            url = uri("https://url.de")
            credentials {
                username = project.findProperty("MAVEN_USERNAME") ?: System.getenv("MAVEN_USERNAME")
                password = project.findProperty("MAVEN_PASSWORD") ?: System.getenv("MAVEN_PASSWORD")
            }
        }
    }
    publications {
        gpr(MavenPublication) {
            from(components.java)
        }
    }
}Code-Sprache: Gradle (gradle)

.github/workflows/gradle-publish.yml (Getestet für Minecraft-Serverversion: 26.1.2)

Die Versionen (Java, actions/*) müssen ggf. angepasst werden.

name: Gradle Package

on:
  push:
    tags:
      - v**
      - dev**

jobs:
  build:
    runs-on: self-hosted
    permissions:
      contents: read
      packages: write

    steps:
      - uses: actions/checkout@v6
      - name: Set up JDK 25
        uses: actions/setup-java@v5
        with:
          java-version: "25"
          distribution: "temurin"
          server-id: github # Value of the distributionManagement/repository/id field of the pom.xml
          settings-path: ${{ github.workspace }} # location for the settings.xml file

      - name: Setup Gradle
        uses: gradle/actions/setup-gradle@v6

      - name: Build with Gradle
        run: ./gradlew build

      - name: Publish to GitHub Packages and to the Maven server
        run: ./gradlew publish
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          MAVEN_URL: ${{ secrets.MAVEN_URL }}
          MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
          MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}Code-Sprache: YAML (yaml)

Dateien zu GitHub committen

git add .gitignore
git add gradlew
git add gradlew.bat
git add gradle/*
git commit -m "generate gradlew files and wrapper"
git update-index --chmod=+x ./gradlew
git update-index --chmod=+x ./gradlew.bat
git commit -m "update gradlew permissions"Code-Sprache: Bash (bash)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert