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 Maven veröffentlichen

Du kannst Maven verwenden, um Java-Pakete als Teil Deines Workflows zur kontinuierlichen Integrations (CI) in eine 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 Maven findest Du unter "Java mit Maven erstellen und testen."

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

Informationen zur Paketkonfiguration

Die Felder groupId und artifactId in der Datei pom.xml bilden eine eindeutige Kennung für Dein Paket. Registries verwenden diese Kennung, um Dein Paket mit einer Registry zu verknüpfen. Weitere Informationen findest Du unter Leitfaden zum Hochladen von Artefakten in das Central Repository in der „Apache Maven“-Dokumentation.

Die Datei pom.xml enthält auch die Konfiguration für die Distributionsverwaltungs-Repositories, in denen Maven Pakete veröffentlicht. Jedes Repository braucht einen Namen und eine „Deployment-URL“ (Bereitstellungs-URL). Die Authentifizierung für diese Repositories kann in der Datei .m2/settings.xml im Home-Verzeichnis des Benutzers konfiguriert werden, der Maven verwendet.

Du kannst die Aktion setup-java verwenden, um das Deployment-Repository sowie die Authentifizierung für dieses Repository zu konfigurieren. Weitere Informationen findest Du unter setup-java.

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“.

In diesem Workflow kannst Du die Aktion setup-java verwenden. Diese Aktion installiert die angegebene JDK-Version in den PATH, aber sie konfiguriert auch eine settings.xml für Maven, um Pakete zu veröffentlichen. Standardmäßig wird die Settings-Datei für GitHub Packages konfiguriert, aber sie kann dazu konfiguriert werden, in eine andere Paket-Registry wie z.B. das „Maven Central Repository“ zu deployen. Wenn Du bereits ein Distributions-Management-Repository im pom.xml konfiguriert hast, dann kannst Du beim Aufruf der Aktion setup-java diese id angeben.

Wenn Du zum Beispiel über das OSSRH-Hosting-Projekt ins „Maven Central Repository“ deployst, kann Deine pom.xml ein Distributions-Management-Repository mit ossrh als id angeben.

xml
<project ...>
  ...
  <distributionManagement>
    <repository>
      <id>ossrh</id>
      <name>Central Repository OSSRH</name>
      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
    </repository>
  </distributionManagement>
</project>

Mit dieser Konfiguration kannst Du einen Workflow erstellen, der Dein Paket im „Maven Central Repository“ veröffentlicht, indem Du die Repository-Verwaltungs-id in der Aktion setup-java angibst. Du musst auch Umgebungsvariablen bereitstellen, die den Benutzernamen und das Kennwort enthalten, um Dich im Repository zu authentifizieren.

Im Deploy-Schritt musst Du die Umgebungsvariablen auf den Benutzernamen setzen, mit dem Du Dich im Repository anmeldest, und auf ein Geheimnis, das Du mit dem Passwort oder dem Token konfiguriert hast, mit dem Du Dich authentifizierst. Weitere Informationen findest Du unter "Verschlüsselte Geheimnisse erstellen und verwenden".

YAML
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 Maven Central Repository
        uses: actions/setup-java@v2
        with:
          java-version: '11'
          distribution: 'adopt'
          server-id: ossrh
          server-username: MAVEN_USERNAME
          server-password: MAVEN_PASSWORD
      - name: Publish package
        run: mvn --batch-mode deploy
        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 und konfiguriert die Maven-Datei settings.xml, um die Authentifizierung für das Repository ossrh mit den Umgebungsvariablen MAVEN_USERNAME und MAVEN_PASSWORD hinzuzufügen.

  3. Runs the mvn --batch-mode deploy command to publish to the ossrh repository. 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“.

In diesem Workflow kannst Du die Aktion setup-java verwenden. Diese Aktion installiert die angegebene JDK-Version in den PATH und stellt auch Maven- settings.xml ein, um Paket in der GitHub Packages zu veröffentlichen. Die generierte settings.xml definiert die Authentifizierung für einen Server mit einer id von github und verwendet die Umgebungsvariable GITHUB_ACTOR als Benutzername und die Umgebungsvariable GITHUB_TOKEN als Passwort. The GITHUB_TOKEN environment variable is assigned the value of the special GITHUB_TOKEN secret.

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."

Für ein Maven-basiertes Projekt kannst Du diese Einstellungen nutzen, indem Du ein Distributions-Repository in Deiner Datei pom.xml mit einer id von Github erstellst, das auf Deinen GitHub Packages-Endpunkt zeigt.

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

xml
<project ...>
  ...
  <distributionManagement>
    <repository>
      <id>github</id>
      <name>GitHub Packages</name>
      <url>https://maven.pkg.github.com/octocat/hello-world</url>
    </repository>
  </distributionManagement>
</project>

Mit dieser Konfiguration kannst Du einen Workflow erstellen, der Dein Paket in der GitHub Packages veröffentlicht, indem Du die automatisch generierte settings.xml verwendest.

YAML
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: Publish package
        run: mvn --batch-mode deploy
        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 und konfiguriert auch automatisch die Maven-Datei settings.xml, um Authentifizierung für das github-Maven-Repository hinzuzufügen, um die Umgebungsvariable GITHUB_TOKEN zu verwenden.

  3. Runs the mvn --batch-mode deploy command to publish to GitHub Packages. Die GITHUB_TOKEN-Umgebungsvariable wird mit dem Inhalt des GITHUB_TOKEN-Geheimnisses gesetzt.

    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 die Aktion setup-java für jede Registry verwendest.

Stelle sicher, dass Deine Datei pom.xml ein Distributionsmanagement-Repository sowohl für Dein GitHub-Repository als auch Deinen „Maven Central Repository“-Provider enthält. Wenn Du z.B. über das Hosting-Projekt OSSRH in das Central Repository deployst, solltest Du es vielleicht in einem Distributionsverwaltungs-Repository mit ossrh als id angeben, und Du solltest GitHub Packages in einem Distributionsverwaltungs-Repository mit github als id setzen.

YAML
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 for publishing to Maven Central Repository
        uses: actions/setup-java@v2
        with:
          java-version: '11'
          distribution: 'adopt'
          server-id: ossrh
          server-username: MAVEN_USERNAME
          server-password: MAVEN_PASSWORD
      - name: Publish to the Maven Central Repository
        run: mvn --batch-mode deploy
        env:
          MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
          MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}
      - name: Set up Java for publishing to GitHub Packages
        uses: actions/setup-java@v2
        with:
          java-version: '11'
          distribution: 'adopt'
      - name: Publish to GitHub Packages
        run: mvn --batch-mode deploy
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Dieser Workflow ruft die Aktion setup-java zweimal auf. Jedes Mal, wenn die Aktion setup-java ausgeführt wird, überschriebt sie die Maven-Datei settings.xml zum Publizieren von Paketen. Für die Authentifizierung im Repository verweist die Datei settings.xml auf die id des Distributionsverwaltungs-Repositorys sowie den Benutzernamen und das Kennwort.

Dieser Workflow führt die folgenden Schritte aus:

  1. Checkt eine Kopie des Projekt-Repositorys aus.

  2. Ruft setup-java zum ersten Mal auf. Dies konfiguriert die Maven-Datei settings.xml für das Repository ossrh und setzt die Authentifizierungsoptionen auf Umgebungsvariablen, die im nächsten Schritt definiert werden.

  3. Runs the mvn --batch-mode deploy command to publish to the ossrh repository. 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.

  4. Ruft setup-java zum zweiten Mal auf. Dies konfiguriert automatisch die Maven-Datei settings.xml für GitHub Packages.

  5. Runs the mvn --batch-mode deploy command to publish to GitHub Packages. Die GITHUB_TOKEN-Umgebungsvariable wird mit dem Inhalt des GITHUB_TOKEN-Geheimnisses gesetzt.

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