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
Dieser Leitfaden zeigt Dir, wie Du einen Workflow erstellen kannst, der eine kontinuierliche Integration (CI) für Dein Java-Projekt mit Hilfe des Build-Systems Gradle durchführt. Der Workflow, den Du erstellst, zeigt Dir, wenn Commits zu einem Pull-Request zu Build- oder Testfehlern für deinen Standard-Zweig führen. Dieser Ansatz kann dazu beitragen, dass Dein Code immer brauchbar ist. Du kannst Deinen CI-Workflow so erweitern, dass er Dateien im Cache zwischenspeichert und Artefakte von einem Workflow-Lauf hochlädt.
GitHub-gehostete Runnner haben einen Tools-Cache mit vorinstallierter Software, einschließlich Java Development Kits (JDKs) und Gradle. For a list of software and the pre-installed versions for JDK and Gradle, see "Specifications for GitHub-hosted runners".
Vorrausetzungen
Du solltest mit YAML und der Syntax für GitHub Actions vertraut sein. Weitere Informationen findest Du unter:
Du solltest ein grundlegendes Verständnis von Java und dem Framework Gradle haben. Weitere Informationen findest Du unter Erste Schritte in der Gradle-Dokumentation.
Using self-hosted runners on GitHub Enterprise Server
When using setup actions (such as actions/setup-LANGUAGE
) on GitHub Enterprise Server with self-hosted runners, you might need to set up the tools cache on runners that do not have internet access. For more information, see "Setting up the tool cache on self-hosted runners without internet access."
Einstieg mit einer Gradle-Workflow-Vorlage
GitHub bietet eine Gradle-Workflow-Vorlage, die für die meisten Gradle-basierten Java-Projekte funktionieren wird. For more information, see the Gradle workflow template.
Um schnell loszulegen, kannst Du beim Erstellen eines neuen Workflows die vorkonfigurierte Gradle-Vorlage auswählen. For more information, see the "GitHub Actions quickstart."
Du kannst auch manuell diesen Workflow hinzufügen, indem Du eine neue Datei im Verzeichnis .github/workflows
Deines Reporitorys erstellst.
# 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: Java CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'adopt'
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
- name: Build with Gradle
run: ./gradlew build
Dieser Workflow führt die folgenden Schritte aus:
- Der Schritt
checkout
lädt eine Kopie Deines Repositorys auf den Runner herunter. - The
setup-java
step configures the Java 11 JDK by Adoptium. - The "Validate Gradle wrapper" step validates the checksums of Gradle Wrapper JAR files present in the source tree.
- Der Schritt "Build with Gradle" führt das Wrapper-Skript
gradlew
aus, um sicherzustellen, dass dein Code gebaut, Tests bestanden und ein Paket erstellt werden kann.
Die Standard-Workflow-Vorlagen sind ausgezeichnete Ausgangspunkte beim Erstellen des Build- und Testworkflows, und Du kannst die Vorlage an die Anforderungen Deines Projekts anpassen.
Ausführen auf einem anderen Betriebssystem
Die Starter-Workflowvorlage konfiguriert Aufträge zur Ausführung unter Linux und verwendet GitHub-gehostete ubuntu-latest
Läufer. Du kannst den runs-on
(läuft auf) Schlüssel ändern, um Deine Aufträge auf einem anderen Betriebssystem auszuführen. Beispielsweise kannst Du die GitHub-gehosteten Windows-Läufer verwenden.
runs-on: windows-latest
Oder Du kannst auf den GitHub-gehosteten macOS-Läufern laufen.
runs-on: macos-latest
Du kannst Aufträge auch in Docker-Containern ausführen oder einen selbst gehosteten Läufer bereitstellen, der auf Deiner eigenen Infrastruktur läuft. Weitere Informationen findest Du unter „Workflow Syntax für GitHub Actions."
Spezifizieren der JVM-Version und -Architektur
Die Starter-Workflowvorlage richtet den PATH
so ein, dass er OpenJDK 8 für die x64-Plattform enthält. Wenn Du eine andere Java-Version verwenden willst oder auf eine andere Architektur (x64
oder x86)
abzielen möchtest, kannst Du die setup-java
-Aktion verwenden, um eine andere Java-Laufzeitumgebung auszuwählen.
For example, to use version 11 of the JDK provided by Adoptium for the x64 platform, you can use the setup-java
action and configure the java-version
, distribution
and architecture
parameters to '11'
, 'adopt'
and x64
.
steps:
- uses: actions/checkout@v2
- name: Set up JDK 11 for x64
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'adopt'
architecture: x64
Weitere Informationen findest Du unter setup-java
-Aktion.
Deinen Code bauen und testen
Du kannst die gleichen Befehle verwenden, die Du auch lokal verwendest, um Deinen Code zu erstellen und zu testen.
Der Starter-Workflow führt standardmäßig den Task build
aus. In der Standard-Gradle-Konfiguration lädt dieser Befehl Abhängigkeiten herunter, baut Klassen, führt Tests durch und paketiert Klassen in ihr verteilbares Format, zum Beispiel eine JAR-Datei.
Wenn Du zum Bauen Deines Projekts andere Befehle verwenden oder einen anderen Task auszuführen möchtest, kannst Du dies angeben. Vielleicht möchtest Du beispielsweise den Task package
ausführen, der in Deiner Datei ci.gradle konfiguriert ist.
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: Run the Gradle package task
run: ./gradlew -b ci.gradle package
Abhängigkeiten „cachen“ (zwischenspeichern)
When using GitHub-hosted runners, you can cache your dependencies to speed up your workflow runs. Nach einem erfolgreichen Lauf wird Dein lokaler Paket-Cache von Gradle in der Aktions-Infrastruktur auf GitHub gespeichert. Bei zukünftigen Workflow-Ausführungen wird der Cache wiederhergestellt, so dass Abhängigkeiten nicht aus entfernten Paket-Repositories heruntergeladen werden müssen. You can cache dependencies simply using the setup-java
action or can use cache
action for custom and more advanced configuration.
steps:
- uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'adopt'
cache: gradle
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
- name: Build with Gradle
run: ./gradlew build
- name: Cleanup Gradle Cache
# Remove some files from the Gradle cache, so they aren't cached by GitHub Actions.
# Restoring these files from a GitHub Actions cache might cause problems for future builds.
run: |
rm -f ~/.gradle/caches/modules-2/modules-2.lock
rm -f ~/.gradle/caches/modules-2/gc.properties
This workflow will save the contents of your local Gradle package cache, located in the .gradle/caches
and .gradle/wrapper
directories of the runner's home directory. The cache key will be the hashed contents of the gradle build files (including the Gradle wrapper properties file), so any changes to them will invalidate the cache.
Workflow-Daten als Artefakte paketieren
Nachdem sowohl Build erfolgreich war und Deine Tests bestanden hat, wirst Du die resultierenden Java-Pakete als Build-Artefakt hochladen wollen. Dies speichert die gebauten Pakete als Teil der Workflow-Ausführung und ermöglicht Dir, sie herunterzuladen. Artefakte können Dir helfen, Pull-Requests in Deiner lokalen Umgebung zu testen und zu debuggen, bevor sie zusammengeführt werden („merge“). Weitere Informationen findest Du unter „Workflow-Daten mittels Artefakten persistieren“.
Gradle erstellt normalerweise Ausgabedateien wie JARs, EARs oder WARs im Verzeichnis build/libs
. Du kannst den Inhalt dieses Verzeichnisses mit der Aktion upload-artifact
hochladen.
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
- run: ./gradlew build
- uses: actions/upload-artifact@v2
with:
name: Package
path: build/libs