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 Gradle findest Du unter „Java bauen und testen mit Gradle“.
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
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.
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".
# 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:
-
Checkt eine Kopie des Projekt-Repositorys aus.
-
Richtet das Java JDK ein.
-
Validates the checksums of any Gradle Wrapper JAR files present in the repository.
-
Führt den Befehl
gradle publish
aus, um im Maven-RepositoryOSSRH
zu veröffentlichen. 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“.
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.
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.
# 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:
-
Checkt eine Kopie des Projekt-Repositorys aus.
-
Richtet das Java JDK ein.
-
Validates the checksums of any Gradle Wrapper JAR files present in the repository.
-
Führt den Befehl
gradle publish
aus, um in GitHub Packages zu veröffentlichen. Die UmgebungsvariableGITHUB_TOKEN
wird mit dem Inhalt desGITHUB_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.
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.
# 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:
-
Checkt eine Kopie des Projekt-Repositorys aus.
-
Richtet das Java JDK ein.
-
Validates the checksums of any Gradle Wrapper JAR files present in the repository.
-
Führt den Befehl
gradle publish
aus, um im Maven-RepositoryOSSRH
und in der GitHub Packages zu veröffentlichen. 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. Die UmgebungsvariableGITHUB_TOKEN
wird mit dem Inhalt desGITHUB_TOKEN
-Geheimnisses gefüllt.Weitere Informationen zur Verwendung von Geheimnissen in Deinem Workflow findest Du unter „Verschlüsselte Geheimnisse erstellen und verwenden“.