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.
- For more information about upgrading to GitHub Enterprise Server 3.0 or later, see "Upgrading GitHub Enterprise Server."
- For more information about configuring GitHub Actions after you upgrade, see the documentation for GitHub Enterprise Server 3.0.
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:
- "Working with the npm registry"
- "Environment variables"
- "Encrypted secrets"
- "Authentication in a workflow"
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.
<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".
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:
-
Checkt eine Kopie des Projekt-Repositorys aus.
-
Richtet das „Java JDK“ ein und konfiguriert die Maven-Datei settings.xml, um die Authentifizierung für das Repository
ossrh
mit den UmgebungsvariablenMAVEN_USERNAME
undMAVEN_PASSWORD
hinzuzufügen. -
Runs the
mvn --batch-mode deploy
command to publish to theossrh
repository. Die UmgebungsvariableMAVEN_USERNAME
wird mit dem Inhalt Deines GeheimnissesOSSRH_USERNAME
gefüllt, und die UmgebungsvariableMAVEN_PASSWORD
wird mit dem Inhalt Deines GeheimnissesOSSRH_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.
<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.
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:
-
Checkt eine Kopie des Projekt-Repositorys aus.
-
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 UmgebungsvariableGITHUB_TOKEN
zu verwenden. -
Runs the
mvn --batch-mode deploy
command to publish to GitHub Packages. DieGITHUB_TOKEN
-Umgebungsvariable wird mit dem Inhalt desGITHUB_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.
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:
-
Checkt eine Kopie des Projekt-Repositorys aus.
-
Ruft
setup-java
zum ersten Mal auf. Dies konfiguriert die Maven-Datei settings.xml für das Repositoryossrh
und setzt die Authentifizierungsoptionen auf Umgebungsvariablen, die im nächsten Schritt definiert werden. -
Runs the
mvn --batch-mode deploy
command to publish to theossrh
repository. Die UmgebungsvariableMAVEN_USERNAME
wird mit dem Inhalt Deines GeheimnissesOSSRH_USERNAME
gefüllt, und die UmgebungsvariableMAVEN_PASSWORD
wird mit dem Inhalt Deines GeheimnissesOSSRH_TOKEN
gefüllt. -
Ruft
setup-java
zum zweiten Mal auf. Dies konfiguriert automatisch die Maven-Datei settings.xml für GitHub Packages. -
Runs the
mvn --batch-mode deploy
command to publish to GitHub Packages. DieGITHUB_TOKEN
-Umgebungsvariable wird mit dem Inhalt desGITHUB_TOKEN
-Geheimnisses gesetzt.Weitere Informationen zur Verwendung von Geheimnissen in Deinem Workflow findest Du unter „Verschlüsselte Geheimnisse erstellen und verwenden“.