Diese Version von GitHub Enterprise wurde eingestellt am 2021-09-23. Es wird keine Patch-Freigabe vorgenommen, auch nicht für kritische Sicherheitsprobleme. Für eine bessere Leistung, verbesserte Sicherheit und neue Features nimm ein Upgrade auf die neueste Version von GitHub Enterprise vor. Wende Dich an den GitHub Enterprise-Support, um Hilfe beim Upgrade zu erhalten.

Java-Pakete mit Gradle veröffentlichen

Du kannst Gradle verwenden, um Java-Pakete als Teil Deines Workflows zur kontinuierlichen Integration (CI) in einer Registry zu veröffentlichen.

Note: GitHub Actions was available for GitHub Enterprise Server 2.22 as a limited beta. The beta has ended. GitHub Actions is now generally available in GitHub Enterprise Server 3.0 or later. For more information, see the GitHub Enterprise Server 3.0 release notes.


Note: GitHub-hosted runners are not currently supported on GitHub Enterprise Server. You can see more information about planned future support on the GitHub public roadmap.

Einführung

Diese Anleitung zeigt, wie Du einen Workflow erstellst, der Java-Pakete in das GitHub Packages und das Maven Central Repository veröffentlicht. Mit einem einzelnen Workflow kannst Du Pakete in ein einzelnes oder in mehrere Repositorys veröffentlichen.

Vorrausetzungen

Wir empfehlen Dir, ein grundlegendes Verständnis von Workflow-Dateien und Konfigurationsoptionen zu haben. For more information, see "Learn GitHub Actions."

Weitere Informationen zum Erstellen eines CI-Workflows für Dein Java-Projekt mit Gradle findest Du unter „Java bauen und testen mit Gradle“.

Vielleicht findest Du es auch hilfreich, ein grundlegendes Verständnis von Folgendem zu haben:

Informationen zur Paketkonfiguration

Die Felder groupId und artifactId im Abschnitt MavenPublication der Datei build.gradle bilden eine eindeutige Kennung für Dein Paket. Registries verwenden diese Kennung, um Dein Paket mit einer Registry zu verknüpfen. Dies ist so ähnlich wie bei den Feldern groupId und artifactId der Maven-Datei pom.xml. Weitere Informationen findest Du unter „‚Maven Publish Plugin‘“ in der Gradle-Dokumentation.

Die Datei build.gradle enthält auch die Konfiguration für die Distributionsverwaltungs-Repositories, zu denen Gradle dann Pakete veröffentlicht. Jedes Repository braucht einen Namen, eine Deployment-URL und Anmeldeinformationen zur Authentifizierung.

Pakete im „Maven Central Repository“ veröffentlichen

Jedes Mal, wenn Du ein neues Release erstellst, kannst Du einen Workflow anstoßen, um Dein Paket zu veröffentlichen. Der Workflow im folgenden Beispiel wird von dem Ereignis release vom Typ created angestoßen. Der Workflow veröffentlicht das Paket im „Maven Central Repository“, sofern es die CI-Tests besteht. Weitere Informationen zum Ereignis release findest Du unter „Ereignisse, die Workflows anstoßen“.

Du kannst ein neues Maven-Repository im Block publishing Deiner Datei build.gradle definieren, das auf Dein Paket-Repository verweist. Wenn Du zum Beispiel über das OSSRH-Hosting-Projekt in das „Maven Central Repository“ deployst, kann Deine build.gradle ein Repository mit dem Namen "OSSRH" bestimmen.

groovy
plugins {
  ...
  id 'maven-publish'
}

publishing {
  ...

  repositories {
    maven {
      name = "OSSRH"
      url = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
      credentials {
        username = System.getenv("MAVEN_USERNAME")
        password = System.getenv("MAVEN_PASSWORD")
      }
    }
  }
}

Mit dieser Konfiguration kannst Du einen Workflow erstellen, der mithilfe des Befehls gradle publish Dein Paket im „Maven Central Repository“ veröffentlicht. Im Deploy-Schritt musst Du Umgebungsvariablen für den Benutzernamen und das Passwort oder für den Token festlegen, mit dem Du Dich im Maven-Repository authentifizierst. Weitere Informationen findest Du unter "Verschlüsselte Geheimnisse erstellen und verwenden".

YAML
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# dokumentation.

name: Publish package to the Maven Central Repository
on:
  release:
    types: [created]
jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up Java
        uses: actions/setup-java@v2
        with:
          java-version: '11'
          distribution: 'adopt'
      - name: Validate Gradle wrapper
        uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
      - name: Publish package
        run: gradle publish
        env:
          MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
          MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}

Dieser Workflow führt die folgenden Schritte aus:

  1. Checkt eine Kopie des Projekt-Repositorys aus.

  2. Richtet das Java JDK ein.

  3. Validates the checksums of any Gradle Wrapper JAR files present in the repository.

  4. Führt den Befehl gradle publish aus, um im Maven-Repository OSSRH zu veröffentlichen. Die Umgebungsvariable MAVEN_USERNAME wird mit dem Inhalt Deines Geheimnisses OSSRH_USERNAME gefüllt, und die Umgebungsvariable MAVEN_PASSWORD wird mit dem Inhalt Deines Geheimnisses OSSRH_TOKEN gefüllt.

    Weitere Informationen zur Verwendung von Geheimnissen in Deinem Workflow findest Du unter „Verschlüsselte Geheimnisse erstellen und verwenden“.

Pakete in der GitHub Packages veröffentlichen

Jedes Mal, wenn Du ein neues Release erstellst, kannst Du einen Workflow anstoßen, um Dein Paket zu veröffentlichen. Der Workflow im folgenden Beispiel wird von dem Ereignis release vom Typ created angestoßen. Der Workflow veröffentlicht das Paket in GitHub Packages , wenn die CI-Tests bestanden wurden. Weitere Informationen zum Ereignis release findest Du unter „Ereignisse, die Workflows anstoßen“.

You can define a new Maven repository in the publishing block of your build.gradle that points to GitHub Packages. In dieser Repository-Konfiguration kannst Du auch die in Deinem CI-Workflow-Lauf eingestellten Umgebungsvariablen nutzen. Du kannst die Umgebungsvariable GITHUB_ACTOR als Benutzernamen verwenden und die Umgebungsvariable GITHUB_TOKEN auf Dein GITHUB_TOKEN-Geheimnis setzen.

The GITHUB_TOKEN secret is set to an access token for the repository each time a job in a workflow begins. It has read and write permissions for packages in the repository where the workflow runs. For more information, see "Authenticating with the GITHUB_TOKEN."

Wenn beispielsweise Deine Organisation „octocat“ und Dein Repository „hello-world“ heißt, sieht die GitHub Packages-Konfiguration in build.gradle so ähnlich wie im folgenden Beispiel aus.

groovy
plugins {
  ...
  id 'maven-publish'
}

publishing {
  ...

  repositories {
    maven {
      name = "GitHubPackages"
      url = "https://maven.pkg.github.com/octocat/hello-world"
      credentials {
        username = System.getenv("GITHUB_ACTOR")
        password = System.getenv("GITHUB_TOKEN")
      }
    }
  }
}

With this configuration, you can create a workflow that publishes your package to GitHub Packages by running the gradle publish command.

YAML
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# dokumentation.

name: Publish package to GitHub Packages
on:
  release:
    types: [created]
jobs:
  publish:
    runs-on: ubuntu-latest 
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-java@v2
        with:
          java-version: '11'
          distribution: 'adopt'
      - name: Validate Gradle wrapper
        uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
      - name: Publish package
        run: gradle publish
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Dieser Workflow führt die folgenden Schritte aus:

  1. Checkt eine Kopie des Projekt-Repositorys aus.

  2. Richtet das Java JDK ein.

  3. Validates the checksums of any Gradle Wrapper JAR files present in the repository.

  4. Führt den Befehl gradle publish aus, um in GitHub Packages zu veröffentlichen. Die Umgebungsvariable GITHUB_TOKEN wird mit dem Inhalt des GITHUB_TOKEN-Geheimnisses gefüllt.

    Weitere Informationen zur Verwendung von Geheimnissen in Deinem Workflow findest Du unter „Verschlüsselte Geheimnisse erstellen und verwenden“.

Pakete im Maven Central Repository und in der GitHub Packages veröffentlichen

Du kannst Deine Pakete sowohl im Maven Central Repository als auch in der GitHub Packages veröffentlichen, indem Du beides in Deiner Datei build.gradle konfigurierst.

Stelle sicher, dass Deine Datei build.gradle ein Repository sowohl für Dein GitHub-Repository als auch Deinen „Maven Central Repository“-Provider enthält.

Wenn Du beispielsweise über das OSSRH-Hosting-Projekt in das Central Repository deployen willst, kannst Du das in einem Distributionsverwaltungs-Repository angeben, wobei Du den -name auf OSSRH setzt. Wenn Du in die GitHub Packages deployen willst, kannst Du das in einem Distributionsverwaltungs-Repository angeben, wobei Du den -name auf GitHubPackages setzt.

If your organization is named "octocat" and your repository is named "hello-world", then the configuration in build.gradle would look similar to the below example.

groovy
plugins {
  ...
  id 'maven-publish'
}

publishing {
  ...

  repositories {
    maven {
      name = "OSSRH"
      url = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
      credentials {
        username = System.getenv("MAVEN_USERNAME")
        password = System.getenv("MAVEN_PASSWORD")
      }
    }
    maven {
      name = "GitHubPackages"
      url = "https://maven.pkg.github.com/octocat/hello-world"
      credentials {
        username = System.getenv("GITHUB_ACTOR")
        password = System.getenv("GITHUB_TOKEN")
      }
    }
  }
}

Mit dieser Konfiguration kannst Du einen Workflow erstellen, der mithilfe des Befehls gradle publish Dein Paket sowohl im „Maven Central Repository“ als auch in der GitHub Packages veröffentlicht.

YAML
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# dokumentation.

name: Publish package to the Maven Central Repository and GitHub Packages
on:
  release:
    types: [created]
jobs:
  publish:
    runs-on: ubuntu-latest 
    steps:
      - uses: actions/checkout@v2
      - name: Set up Java
        uses: actions/setup-java@v2
        with:
          java-version: '11'
          distribution: 'adopt'
      - name: Validate Gradle wrapper
        uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
      - name: Publish package
        run: gradle publish
        env: 
          MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
          MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Dieser Workflow führt die folgenden Schritte aus:

  1. Checkt eine Kopie des Projekt-Repositorys aus.

  2. Richtet das Java JDK ein.

  3. Validates the checksums of any Gradle Wrapper JAR files present in the repository.

  4. Führt den Befehl gradle publish aus, um im Maven-Repository OSSRH und in der GitHub Packages zu veröffentlichen. Die Umgebungsvariable MAVEN_USERNAME wird mit dem Inhalt Deines Geheimnisses OSSRH_USERNAME gefüllt, und die Umgebungsvariable MAVEN_PASSWORD wird mit dem Inhalt Deines Geheimnisses OSSRH_TOKEN gefüllt. Die Umgebungsvariable GITHUB_TOKEN wird mit dem Inhalt des GITHUB_TOKEN-Geheimnisses gefüllt.

    Weitere Informationen zur Verwendung von Geheimnissen in Deinem Workflow findest Du unter „Verschlüsselte Geheimnisse erstellen und verwenden“.